@tantainnovative/ndpr-toolkit 5.3.0 → 5.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,13 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
4
4
 
5
+ ## [5.4.0](https://github.com/mr-tanta/ndpr-toolkit/compare/v5.3.0...v5.4.0) (2026-05-30)
6
+
7
+
8
+ ### Features
9
+
10
+ * **breach:** show live NDPC notification readiness in BreachReportForm ([86e2394](https://github.com/mr-tanta/ndpr-toolkit/commit/86e23943756680ad64bd939e60edb896884680c2))
11
+
5
12
  ## [5.3.0](https://github.com/mr-tanta/ndpr-toolkit/compare/v5.2.0...v5.3.0) (2026-05-30)
6
13
 
7
14
 
package/dist/breach.d.mts CHANGED
@@ -332,6 +332,8 @@ export declare interface BreachReportFormClassNames {
332
332
  notice?: string;
333
333
  /** Custom class applied when isSubmitting is true (e.g. a loading overlay) */
334
334
  loadingOverlay?: string;
335
+ /** Live NDPC-notification completeness panel */
336
+ completeness?: string;
335
337
  }
336
338
 
337
339
  declare interface BreachReportFormProps {
@@ -425,6 +427,13 @@ declare interface BreachReportFormProps {
425
427
  * change the `key` prop from the parent.
426
428
  */
427
429
  onReset?: () => void;
430
+ /**
431
+ * Show a live NDPC-notification readiness panel that scores the form against
432
+ * the NDPA S. 40 / GAID 2025 Article 33 mandated content and the 72-hour
433
+ * deadline as the user fills it in.
434
+ * @default true
435
+ */
436
+ showCompleteness?: boolean;
428
437
  }
429
438
 
430
439
  /**
package/dist/breach.d.ts CHANGED
@@ -332,6 +332,8 @@ export declare interface BreachReportFormClassNames {
332
332
  notice?: string;
333
333
  /** Custom class applied when isSubmitting is true (e.g. a loading overlay) */
334
334
  loadingOverlay?: string;
335
+ /** Live NDPC-notification completeness panel */
336
+ completeness?: string;
335
337
  }
336
338
 
337
339
  declare interface BreachReportFormProps {
@@ -425,6 +427,13 @@ declare interface BreachReportFormProps {
425
427
  * change the `key` prop from the parent.
426
428
  */
427
429
  onReset?: () => void;
430
+ /**
431
+ * Show a live NDPC-notification readiness panel that scores the form against
432
+ * the NDPA S. 40 / GAID 2025 Article 33 mandated content and the 72-hour
433
+ * deadline as the user fills it in.
434
+ * @default true
435
+ */
436
+ showCompleteness?: boolean;
428
437
  }
429
438
 
430
439
  /**
package/dist/breach.js CHANGED
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- 'use strict';var chunkC7OOUURS_js=require('./chunk-C7OOUURS.js'),chunk6MO3GS3B_js=require('./chunk-6MO3GS3B.js'),chunkEHQVTFYO_js=require('./chunk-EHQVTFYO.js'),chunk3YTAOT5O_js=require('./chunk-3YTAOT5O.js');require('./chunk-UXUMYP4L.js'),require('./chunk-ZVOIR4QH.js'),require('./chunk-AME4HJR4.js'),require('./chunk-I5ZDNSX5.js'),require('./chunk-7563FVMY.js'),require('./chunk-VWED6UTN.js');var chunkRFPLZDIO_js=require('./chunk-RFPLZDIO.js'),react=require('react'),jsxRuntime=require('react/jsx-runtime');var c=react.createContext(null);function P(){let e=react.useContext(c);if(!e)throw new Error("Breach compound components must be wrapped in <Breach.Provider>. Example: <Breach.Provider categories={...}><Breach.ReportForm /></Breach.Provider>");return e}var p=({categories:e,adapter:m,storageKey:h,useLocalStorage:B,initialReports:f,onReport:R,onAssessment:x,onNotification:u,children:d})=>{let y=chunkEHQVTFYO_js.a({categories:e,adapter:m,storageKey:h,useLocalStorage:B,initialReports:f,onReport:R,onAssessment:x,onNotification:u}),l=chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},y),{categories:e});return jsxRuntime.jsx(c.Provider,{value:l,children:d})};var A={Provider:p,ReportForm:chunk6MO3GS3B_js.a,RiskAssessment:chunkC7OOUURS_js.a,NotificationManager:chunkC7OOUURS_js.b,ReportGenerator:chunkC7OOUURS_js.c};Object.defineProperty(exports,"BreachNotificationManager",{enumerable:true,get:function(){return chunkC7OOUURS_js.b}});Object.defineProperty(exports,"BreachRiskAssessment",{enumerable:true,get:function(){return chunkC7OOUURS_js.a}});Object.defineProperty(exports,"RegulatoryReportGenerator",{enumerable:true,get:function(){return chunkC7OOUURS_js.c}});Object.defineProperty(exports,"BreachReportForm",{enumerable:true,get:function(){return chunk6MO3GS3B_js.a}});Object.defineProperty(exports,"useBreach",{enumerable:true,get:function(){return chunkEHQVTFYO_js.a}});Object.defineProperty(exports,"calculateBreachSeverity",{enumerable:true,get:function(){return chunk3YTAOT5O_js.a}});exports.Breach=A;exports.BreachProvider=p;exports.useBreachCompound=P;
2
+ 'use strict';var chunkC7OOUURS_js=require('./chunk-C7OOUURS.js'),chunkLHQG25Y2_js=require('./chunk-LHQG25Y2.js'),chunkEHQVTFYO_js=require('./chunk-EHQVTFYO.js');require('./chunk-Y346CURW.js');var chunk3YTAOT5O_js=require('./chunk-3YTAOT5O.js');require('./chunk-UXUMYP4L.js'),require('./chunk-ZVOIR4QH.js'),require('./chunk-AME4HJR4.js'),require('./chunk-I5ZDNSX5.js'),require('./chunk-7563FVMY.js'),require('./chunk-VWED6UTN.js');var chunkRFPLZDIO_js=require('./chunk-RFPLZDIO.js'),react=require('react'),jsxRuntime=require('react/jsx-runtime');var c=react.createContext(null);function P(){let e=react.useContext(c);if(!e)throw new Error("Breach compound components must be wrapped in <Breach.Provider>. Example: <Breach.Provider categories={...}><Breach.ReportForm /></Breach.Provider>");return e}var p=({categories:e,adapter:m,storageKey:h,useLocalStorage:B,initialReports:f,onReport:R,onAssessment:x,onNotification:u,children:d})=>{let y=chunkEHQVTFYO_js.a({categories:e,adapter:m,storageKey:h,useLocalStorage:B,initialReports:f,onReport:R,onAssessment:x,onNotification:u}),l=chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},y),{categories:e});return jsxRuntime.jsx(c.Provider,{value:l,children:d})};var A={Provider:p,ReportForm:chunkLHQG25Y2_js.a,RiskAssessment:chunkC7OOUURS_js.a,NotificationManager:chunkC7OOUURS_js.b,ReportGenerator:chunkC7OOUURS_js.c};Object.defineProperty(exports,"BreachNotificationManager",{enumerable:true,get:function(){return chunkC7OOUURS_js.b}});Object.defineProperty(exports,"BreachRiskAssessment",{enumerable:true,get:function(){return chunkC7OOUURS_js.a}});Object.defineProperty(exports,"RegulatoryReportGenerator",{enumerable:true,get:function(){return chunkC7OOUURS_js.c}});Object.defineProperty(exports,"BreachReportForm",{enumerable:true,get:function(){return chunkLHQG25Y2_js.a}});Object.defineProperty(exports,"useBreach",{enumerable:true,get:function(){return chunkEHQVTFYO_js.a}});Object.defineProperty(exports,"calculateBreachSeverity",{enumerable:true,get:function(){return chunk3YTAOT5O_js.a}});exports.Breach=A;exports.BreachProvider=p;exports.useBreachCompound=P;
package/dist/breach.mjs CHANGED
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- import {c as c$1,b,a}from'./chunk-EF5CLD4V.mjs';export{b as BreachNotificationManager,a as BreachRiskAssessment,c as RegulatoryReportGenerator}from'./chunk-EF5CLD4V.mjs';import {a as a$1}from'./chunk-WLZTATLL.mjs';export{a as BreachReportForm}from'./chunk-WLZTATLL.mjs';import {a as a$2}from'./chunk-RFXGD5NE.mjs';export{a as useBreach}from'./chunk-RFXGD5NE.mjs';export{a as calculateBreachSeverity}from'./chunk-WTGKZX7J.mjs';import'./chunk-EWVK45Z3.mjs';import'./chunk-ITCY2Z66.mjs';import'./chunk-SFGW37LE.mjs';import'./chunk-PHA3YMFO.mjs';import'./chunk-5LJ652AH.mjs';import'./chunk-DBZSN4WP.mjs';import {b as b$1,a as a$3}from'./chunk-ZJYULEER.mjs';import {createContext,useContext}from'react';import {jsx}from'react/jsx-runtime';var c=createContext(null);function P(){let e=useContext(c);if(!e)throw new Error("Breach compound components must be wrapped in <Breach.Provider>. Example: <Breach.Provider categories={...}><Breach.ReportForm /></Breach.Provider>");return e}var p=({categories:e,adapter:m,storageKey:h,useLocalStorage:B,initialReports:f,onReport:R,onAssessment:x,onNotification:u,children:d})=>{let y=a$2({categories:e,adapter:m,storageKey:h,useLocalStorage:B,initialReports:f,onReport:R,onAssessment:x,onNotification:u}),l=b$1(a$3({},y),{categories:e});return jsx(c.Provider,{value:l,children:d})};var A={Provider:p,ReportForm:a$1,RiskAssessment:a,NotificationManager:b,ReportGenerator:c$1};export{A as Breach,p as BreachProvider,P as useBreachCompound};
2
+ import {c as c$1,b,a}from'./chunk-EF5CLD4V.mjs';export{b as BreachNotificationManager,a as BreachRiskAssessment,c as RegulatoryReportGenerator}from'./chunk-EF5CLD4V.mjs';import {a as a$1}from'./chunk-5ZMYNOMR.mjs';export{a as BreachReportForm}from'./chunk-5ZMYNOMR.mjs';import {a as a$2}from'./chunk-RFXGD5NE.mjs';export{a as useBreach}from'./chunk-RFXGD5NE.mjs';import'./chunk-WJSUVPYX.mjs';export{a as calculateBreachSeverity}from'./chunk-WTGKZX7J.mjs';import'./chunk-EWVK45Z3.mjs';import'./chunk-ITCY2Z66.mjs';import'./chunk-SFGW37LE.mjs';import'./chunk-PHA3YMFO.mjs';import'./chunk-5LJ652AH.mjs';import'./chunk-DBZSN4WP.mjs';import {b as b$1,a as a$3}from'./chunk-ZJYULEER.mjs';import {createContext,useContext}from'react';import {jsx}from'react/jsx-runtime';var c=createContext(null);function P(){let e=useContext(c);if(!e)throw new Error("Breach compound components must be wrapped in <Breach.Provider>. Example: <Breach.Provider categories={...}><Breach.ReportForm /></Breach.Provider>");return e}var p=({categories:e,adapter:m,storageKey:h,useLocalStorage:B,initialReports:f,onReport:R,onAssessment:x,onNotification:u,children:d})=>{let y=a$2({categories:e,adapter:m,storageKey:h,useLocalStorage:B,initialReports:f,onReport:R,onAssessment:x,onNotification:u}),l=b$1(a$3({},y),{categories:e});return jsx(c.Provider,{value:l,children:d})};var A={Provider:p,ReportForm:a$1,RiskAssessment:a,NotificationManager:b,ReportGenerator:c$1};export{A as Breach,p as BreachProvider,P as useBreachCompound};
@@ -0,0 +1,2 @@
1
+ import {a}from'./chunk-WJSUVPYX.mjs';import {a as a$3}from'./chunk-EWVK45Z3.mjs';import {a as a$1}from'./chunk-SFGW37LE.mjs';import {c}from'./chunk-PHA3YMFO.mjs';import {a as a$2,b}from'./chunk-ZJYULEER.mjs';import {useState,useMemo}from'react';import {jsxs,jsx}from'react/jsx-runtime';var Ct=({categories:Je,onSubmit:Qe,onValidationError:z,title:Y,description:H,submitButtonText:U,className:te="",buttonClassName:re="",classNames:d={},unstyled:c$1=false,isSubmitting:C=false,showConfirmation:Xe=true,confirmationMessage:Ve="Your breach report has been submitted successfully. The data protection team has been notified.",allowAttachments:et=true,maxAttachments:G=5,maxFileSize:Z=5*1024*1024,allowedFileTypes:K=[".pdf",".jpg",".jpeg",".png",".doc",".docx",".xls",".xlsx",".txt"],defaultValues:r,onReset:W,showCompleteness:tt=true})=>{var ke,qe,je,Te,Ie,Be,Ee,Me,$e,Oe,Le,ze,Ye,He;let J=c(),rt=(ke=Y!=null?Y:J.breach.title)!=null?ke:"Report a Data Breach",it=(qe=H!=null?H:J.breach.description)!=null?qe:"Use this form to report a suspected or confirmed data breach in accordance with NDPA Section 40. All fields marked with * are required.",at=(je=U!=null?U:J.breach.submitReport)!=null?je:"Submit Report",ie=t=>{if(!t)return "";let o=new Date(t),p=s=>String(s).padStart(2,"0");return `${o.getFullYear()}-${p(o.getMonth()+1)}-${p(o.getDate())}T${p(o.getHours())}:${p(o.getMinutes())}`},[S,ae]=useState((r==null?void 0:r.title)||""),[D,ne]=useState((r==null?void 0:r.description)||""),[A,oe]=useState((r==null?void 0:r.category)||""),[h,se]=useState(ie(r==null?void 0:r.discoveredAt)),[v,de]=useState(ie(r==null?void 0:r.occurredAt)),[T,me]=useState(((Te=r==null?void 0:r.reporter)==null?void 0:Te.name)||""),[R,ce]=useState(((Ie=r==null?void 0:r.reporter)==null?void 0:Ie.email)||""),[I,le]=useState(((Be=r==null?void 0:r.reporter)==null?void 0:Be.department)||""),[B,pe]=useState(((Ee=r==null?void 0:r.reporter)==null?void 0:Ee.phone)||""),[E,ge]=useState((r==null?void 0:r.affectedSystems)||[]),[nt,fe]=useState(((Me=r==null?void 0:r.affectedSystems)==null?void 0:Me.join(", "))||""),[w,be]=useState((r==null?void 0:r.dataTypes)||[]),[b$1,he]=useState((r==null?void 0:r.estimatedAffectedSubjects)!=null?String(r.estimatedAffectedSubjects):""),[N,ve]=useState((r==null?void 0:r.approximateRecordCount)!=null?String(r.approximateRecordCount):""),[u,Ne]=useState((($e=r==null?void 0:r.dataSubjectCategories)==null?void 0:$e.join(", "))||""),[P,ue]=useState((Oe=r==null?void 0:r.involvesSensitiveData)!=null?Oe:false),[F,ye]=useState((r==null?void 0:r.likelyConsequences)||""),[k,_e]=useState((r==null?void 0:r.mitigationMeasures)||""),[y,xe]=useState(((Le=r==null?void 0:r.dpoContact)==null?void 0:Le.name)||""),[_,Ce]=useState(((ze=r==null?void 0:r.dpoContact)==null?void 0:ze.email)||""),[M,Se]=useState(((Ye=r==null?void 0:r.dpoContact)==null?void 0:Ye.phone)||""),[Q,De]=useState((He=r==null?void 0:r.isPhasedReport)!=null?He:false),[X,Ae]=useState((r==null?void 0:r.supplementsReportId)||""),[$,Re]=useState((r==null?void 0:r.status)||"ongoing"),[q,we]=useState((r==null?void 0:r.initialActions)||""),[O,V]=useState([]),[ot,ee]=useState(false),[a$4,j]=useState({}),g=useMemo(()=>{let t={id:"",title:S,description:D,category:A,discoveredAt:h?new Date(h).getTime():NaN,occurredAt:v?new Date(v).getTime():void 0,reportedAt:0,reporter:{name:T,email:R,department:I,phone:B||void 0},affectedSystems:E,dataTypes:w,estimatedAffectedSubjects:b$1?Number(b$1):void 0,approximateRecordCount:N?Number(N):void 0,dataSubjectCategories:u?u.split(",").map(o=>o.trim()).filter(Boolean):void 0,involvesSensitiveData:P,likelyConsequences:F||void 0,mitigationMeasures:k||void 0,dpoContact:y||_?{name:y,email:_,phone:M||void 0}:void 0,status:$,initialActions:q||void 0};return a(t,{highRisk:P})},[S,D,A,h,v,E,w,b$1,N,u,P,F,k,y,_,$,q]),Pe=[...g.notificationToCommission,...g.dataSubjectCommunication],Fe=Pe.length,st=Fe-g.missing.length,dt=()=>{ae(""),ne(""),oe(""),se(""),de(""),me(""),ce(""),le(""),pe(""),ge([]),fe(""),be([]),he(""),ve(""),Ne(""),ue(false),ye(""),_e(""),xe(""),Ce(""),Se(""),De(false),Ae(""),Re("ongoing"),we(""),V([]),ee(false),j({}),W==null||W();},mt=t=>{let o=t.target.value;fe(o);let p=o.split(",").map(s=>s.trim()).filter(Boolean);ge(p);},ct=t=>{be(o=>o.includes(t)?o.filter(p=>p!==t):[...o,t]);},lt=t=>{var Ue;let o=t.target.files;if(!o)return;let p=[],s={};if(O.length+o.length>G){s.attachments=`Maximum of ${G} files allowed`,j(f=>a$2(a$2({},f),s));return}for(let f=0;f<o.length;f++){let L=o[f];if(L.size>Z){s.attachments=`File ${L.name} exceeds the maximum size of ${Z/(1024*1024)}MB`;continue}let Ge="."+((Ue=L.name.split(".").pop())==null?void 0:Ue.toLowerCase());if(!K.includes(Ge)){s.attachments=`File type ${Ge} is not allowed`;continue}p.push(L);}p.length>0&&V(f=>[...f,...p]),Object.keys(s).length>0?j(f=>a$2(a$2({},f),s)):j(f=>b(a$2({},f),{attachments:""}));},pt=t=>{V(o=>o.filter((p,s)=>s!==t));},gt=()=>{let t={};return S.trim()||(t.breachTitle="Breach title is required"),D.trim()||(t.description="Description is required"),A||(t.category="Category is required"),h||(t.discoveredAt="Discovery date is required"),T.trim()||(t.reporterName="Reporter name is required"),R.trim()?/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/.test(R)||(t.reporterEmail="Reporter email is invalid"):t.reporterEmail="Reporter email is required",I.trim()||(t.reporterDepartment="Reporter department is required"),E.length===0&&(t.affectedSystems="At least one affected system is required"),w.length===0&&(t.dataTypes="At least one data type is required"),b$1&&isNaN(Number(b$1))&&(t.estimatedAffectedSubjects="Estimated affected subjects must be a number"),j(t),t},ft=t=>{t.preventDefault();let o=gt();if(Object.keys(o).length>0){z==null||z(o);return}let p={title:a$3(S),description:a$3(D),category:A,discoveredAt:new Date(h).getTime(),occurredAt:v?new Date(v).getTime():void 0,reportedAt:Date.now(),reporter:{name:a$3(T),email:a$3(R),department:a$3(I),phone:B?a$3(B):void 0},affectedSystems:E.map(s=>a$3(s)),dataTypes:w,estimatedAffectedSubjects:b$1?Number(b$1):void 0,approximateRecordCount:N?Number(N):void 0,dataSubjectCategories:u?u.split(",").map(s=>a$3(s.trim())).filter(Boolean):void 0,involvesSensitiveData:P,likelyConsequences:F?a$3(F):void 0,mitigationMeasures:k?a$3(k):void 0,dpoContact:y||_?{name:a$3(y),email:a$3(_),phone:M?a$3(M):void 0}:void 0,isPhasedReport:Q||void 0,supplementsReportId:X?a$3(X):void 0,status:$,initialActions:q?a$3(q):void 0,attachments:O.map(s=>({name:s.name,type:s.type,size:s.size,file:s}))};Qe(p),Xe&&ee(true);};if(ot)return jsxs("div",{"data-ndpr-component":"breach-report-form",className:`p-4 bg-green-50 dark:bg-green-900/20 rounded-md ${te}`,children:[jsx("h2",{className:"text-lg font-bold ndpr-text-success mb-2",children:"Report Submitted"}),jsx("p",{className:"ndpr-text-success",children:Ve}),jsxs("div",{className:"mt-4 p-4 bg-yellow-50 dark:bg-yellow-900/20 rounded-md",children:[jsx("h3",{className:"text-sm font-bold ndpr-text-warning mb-2",children:"Important: Next Steps"}),jsx("p",{className:"ndpr-text-warning text-sm",children:"Under the NDPA (Section 40), data breaches that pose a risk to the rights and freedoms of data subjects must be reported to the NDPC within 72 hours of discovery. The data protection team will assess this breach and determine if notification is required."})]}),jsx("button",{onClick:()=>ee(false),className:`mt-4 px-4 py-2 bg-green-600 text-white rounded hover:bg-green-700 ${re}`,children:"Report Another Breach"})]});let bt=[{id:"personal",label:"Personal Information (names, addresses)"},{id:"contact",label:"Contact Information (email, phone)"},{id:"financial",label:"Financial Information (bank details, payment info)"},{id:"health",label:"Health Information"},{id:"identification",label:"Identification Documents (ID cards, passports)"},{id:"login",label:"Login Credentials"},{id:"biometric",label:"Biometric Data"},{id:"children",label:"Children's Data"},{id:"location",label:"Location Data"},{id:"communications",label:"Communications Content"}];return jsxs("div",{className:a$1(`bg-white dark:bg-gray-800 p-6 rounded-lg shadow-md ${te}`,d.root,c$1),children:[jsx("h2",{className:a$1("ndpr-section-heading",d.title,c$1),children:rt}),jsx("p",{className:"ndpr-card__subtitle",children:it}),tt&&jsxs("div",{"data-ndpr-section":"breach-completeness",className:a$1("ndpr-alert ndpr-alert--info mb-4",d.completeness,c$1),children:[jsxs("div",{className:"flex items-center justify-between mb-2",children:[jsx("h3",{className:"text-sm font-bold ndpr-text-info",children:"NDPC notification readiness"}),jsxs("span",{className:"text-sm font-semibold ndpr-text-info",children:[g.completeness,"%"]})]}),jsx("div",{role:"progressbar","aria-valuenow":g.completeness,"aria-valuemin":0,"aria-valuemax":100,"aria-label":"Breach notification completeness",className:"h-2 w-full rounded bg-gray-200 dark:bg-gray-700 overflow-hidden mb-2",children:jsx("div",{className:"h-full bg-[rgb(var(--ndpr-primary))]",style:{width:`${g.completeness}%`}})}),jsxs("p",{className:"text-sm ndpr-text-info",children:[st," of ",Fe," mandated items provided (GAID 2025 Art. 33(5) / NDPA S. 40(2))."]}),Number.isFinite(g.timing.deadline)?g.timing.overdue?jsxs("p",{className:"text-sm ndpr-text-warning mt-1",children:["72-hour deadline passed ",Math.abs(g.timing.hoursRemaining),"h ago \u2014 notify the NDPC now and state the reason for the delay (NDPA S. 40(2))."]}):jsxs("p",{className:"text-sm ndpr-text-info mt-1",children:[Math.max(0,g.timing.hoursRemaining),"h remaining to notify the NDPC (72-hour window, NDPA S. 40(2))."]}):jsx("p",{className:"text-sm ndpr-text-muted mt-1",children:"Set the discovery date to start the 72-hour clock."}),g.dataSubjectCommunicationRequired&&jsx("p",{className:"text-sm ndpr-text-warning mt-1",children:"High risk: affected data subjects must be notified in plain, clear language (NDPA S. 40(3))."}),g.missing.length>0&&jsxs("details",{className:"mt-2",children:[jsxs("summary",{className:"text-sm ndpr-text-info cursor-pointer",children:[g.missing.length," item(s) still needed"]}),jsx("ul",{className:"mt-1 list-disc pl-5",children:Pe.filter(t=>!t.satisfied).map(t=>jsxs("li",{className:"text-xs ndpr-text-muted",children:[t.label," ",jsxs("span",{className:"opacity-70",children:["(",t.section,")"]})]},t.id))})]})]}),jsx("form",{onSubmit:ft,className:a$1("",d.form,c$1),children:jsxs("div",{className:"ndpr-form-section",children:[jsxs("div",{className:a$1("",d.fieldGroup,c$1),children:[jsx("h3",{className:"ndpr-section-heading",children:"Breach Information"}),jsxs("div",{className:"ndpr-form-grid ndpr-form-grid--2",children:[jsxs("div",{children:[jsxs("label",{htmlFor:"breachTitle",className:a$1("ndpr-form-field__label",d.label,c$1),children:["Breach Title/Summary ",jsx("span",{className:"ndpr-form-field__required",children:"*"})]}),jsx("input",{type:"text",id:"breachTitle",value:S,onChange:t=>ae(t.target.value),className:a$1("ndpr-form-field__input",d.input,c$1),required:true,"aria-invalid":!!a$4.breachTitle,"aria-describedby":a$4.breachTitle?"breachTitle-error":void 0}),a$4.breachTitle&&jsx("p",{id:"breachTitle-error",role:"alert",className:"ndpr-form-field__error",children:a$4.breachTitle})]}),jsxs("div",{children:[jsxs("label",{htmlFor:"category",className:a$1("ndpr-form-field__label",d.label,c$1),children:["Breach Category ",jsx("span",{className:"ndpr-form-field__required",children:"*"})]}),jsxs("select",{id:"category",value:A,onChange:t=>oe(t.target.value),className:a$1("ndpr-form-field__input",d.select,c$1),required:true,"aria-invalid":!!a$4.category,"aria-describedby":a$4.category?"category-error":void 0,children:[jsx("option",{value:"",children:"Select a category"}),Je.map(t=>jsx("option",{value:t.id,children:t.name},t.id))]}),a$4.category&&jsx("p",{id:"category-error",role:"alert",className:"ndpr-form-field__error",children:a$4.category})]}),jsxs("div",{className:"md:col-span-2",children:[jsxs("label",{htmlFor:"description",className:a$1("ndpr-form-field__label",d.label,c$1),children:["Detailed Description ",jsx("span",{className:"ndpr-form-field__required",children:"*"})]}),jsx("textarea",{id:"description",value:D,onChange:t=>ne(t.target.value),rows:4,className:a$1("ndpr-form-field__input",d.textarea,c$1),required:true,"aria-invalid":!!a$4.description,"aria-describedby":a$4.description?"description-error":void 0}),a$4.description&&jsx("p",{id:"description-error",role:"alert",className:"ndpr-form-field__error",children:a$4.description})]}),jsxs("div",{children:[jsxs("label",{htmlFor:"discoveredAt",className:"ndpr-form-field__label",children:["Date Discovered ",jsx("span",{className:"ndpr-form-field__required",children:"*"})]}),jsx("input",{type:"datetime-local",id:"discoveredAt",value:h,onChange:t=>se(t.target.value),className:"ndpr-form-field__input",required:true,"aria-invalid":!!a$4.discoveredAt,"aria-describedby":a$4.discoveredAt?"discoveredAt-error":void 0}),a$4.discoveredAt&&jsx("p",{id:"discoveredAt-error",role:"alert",className:"ndpr-form-field__error",children:a$4.discoveredAt})]}),jsxs("div",{children:[jsx("label",{htmlFor:"occurredAt",className:"ndpr-form-field__label",children:"Date Occurred (if known)"}),jsx("input",{type:"datetime-local",id:"occurredAt",value:v,onChange:t=>de(t.target.value),className:"ndpr-form-field__input"})]})]})]}),jsxs("div",{children:[jsx("h3",{className:"ndpr-section-heading",children:"Reporter Information"}),jsxs("div",{className:"ndpr-form-grid ndpr-form-grid--2",children:[jsxs("div",{children:[jsxs("label",{htmlFor:"reporterName",className:"ndpr-form-field__label",children:["Your Name ",jsx("span",{className:"ndpr-form-field__required",children:"*"})]}),jsx("input",{type:"text",id:"reporterName",value:T,onChange:t=>me(t.target.value),className:"ndpr-form-field__input",required:true,"aria-invalid":!!a$4.reporterName,"aria-describedby":a$4.reporterName?"reporterName-error":void 0}),a$4.reporterName&&jsx("p",{id:"reporterName-error",role:"alert",className:"ndpr-form-field__error",children:a$4.reporterName})]}),jsxs("div",{children:[jsxs("label",{htmlFor:"reporterEmail",className:"ndpr-form-field__label",children:["Your Email ",jsx("span",{className:"ndpr-form-field__required",children:"*"})]}),jsx("input",{type:"email",id:"reporterEmail",value:R,onChange:t=>ce(t.target.value),className:"ndpr-form-field__input",required:true,"aria-invalid":!!a$4.reporterEmail,"aria-describedby":a$4.reporterEmail?"reporterEmail-error":void 0}),a$4.reporterEmail&&jsx("p",{id:"reporterEmail-error",role:"alert",className:"ndpr-form-field__error",children:a$4.reporterEmail})]}),jsxs("div",{children:[jsxs("label",{htmlFor:"reporterDepartment",className:"ndpr-form-field__label",children:["Your Department ",jsx("span",{className:"ndpr-form-field__required",children:"*"})]}),jsx("input",{type:"text",id:"reporterDepartment",value:I,onChange:t=>le(t.target.value),className:"ndpr-form-field__input",required:true,"aria-invalid":!!a$4.reporterDepartment,"aria-describedby":a$4.reporterDepartment?"reporterDepartment-error":void 0}),a$4.reporterDepartment&&jsx("p",{id:"reporterDepartment-error",role:"alert",className:"ndpr-form-field__error",children:a$4.reporterDepartment})]}),jsxs("div",{children:[jsx("label",{htmlFor:"reporterPhone",className:"ndpr-form-field__label",children:"Your Phone Number (Optional)"}),jsx("input",{type:"tel",id:"reporterPhone",value:B,onChange:t=>pe(t.target.value),className:"ndpr-form-field__input"})]})]})]}),jsxs("div",{children:[jsx("h3",{className:"ndpr-section-heading",children:"Impact Information"}),jsxs("div",{className:"ndpr-form-grid ndpr-form-grid--2",children:[jsxs("div",{children:[jsxs("label",{htmlFor:"affectedSystems",className:"ndpr-form-field__label",children:["Affected Systems/Applications ",jsx("span",{className:"ndpr-form-field__required",children:"*"})]}),jsx("input",{type:"text",id:"affectedSystems",value:nt,onChange:mt,placeholder:"e.g. CRM, Email Server, Website (comma separated)",className:"ndpr-form-field__input",required:true,"aria-invalid":!!a$4.affectedSystems,"aria-describedby":a$4.affectedSystems?"affectedSystems-error":void 0}),a$4.affectedSystems&&jsx("p",{id:"affectedSystems-error",role:"alert",className:"ndpr-form-field__error",children:a$4.affectedSystems})]}),jsxs("div",{children:[jsx("label",{htmlFor:"estimatedAffectedSubjects",className:"ndpr-form-field__label",children:"Estimated Number of Affected Data Subjects"}),jsx("input",{type:"text",id:"estimatedAffectedSubjects",value:b$1,onChange:t=>he(t.target.value),placeholder:"e.g. 100",className:"ndpr-form-field__input","aria-invalid":!!a$4.estimatedAffectedSubjects,"aria-describedby":a$4.estimatedAffectedSubjects?"estimatedAffectedSubjects-error":void 0}),a$4.estimatedAffectedSubjects&&jsx("p",{id:"estimatedAffectedSubjects-error",role:"alert",className:"ndpr-form-field__error",children:a$4.estimatedAffectedSubjects})]}),jsxs("fieldset",{className:"md:col-span-2","aria-invalid":!!a$4.dataTypes,"aria-describedby":a$4.dataTypes?"dataTypes-error":void 0,children:[jsxs("legend",{className:"ndpr-form-field__label",children:["Types of Data Involved ",jsx("span",{className:"ndpr-form-field__required","aria-hidden":"true",children:"*"}),jsx("span",{className:"sr-only",children:"(required)"})]}),jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-2",children:bt.map(t=>jsxs("div",{className:"flex items-center",children:[jsx("input",{type:"checkbox",id:`dataType_${t.id}`,checked:w.includes(t.id),onChange:()=>ct(t.id),className:"h-4 w-4 rounded border-gray-300 text-[rgb(var(--ndpr-primary))] focus:ring-[rgb(var(--ndpr-ring))]"}),jsx("label",{htmlFor:`dataType_${t.id}`,className:"ml-2 text-sm ndpr-text-muted",children:t.label})]},t.id))}),a$4.dataTypes&&jsx("p",{id:"dataTypes-error",role:"alert",className:"ndpr-form-field__error",children:a$4.dataTypes})]}),jsxs("div",{children:[jsxs("label",{htmlFor:"status",className:"ndpr-form-field__label",children:["Current Status ",jsx("span",{className:"ndpr-form-field__required",children:"*"})]}),jsxs("select",{id:"status",value:$,onChange:t=>Re(t.target.value),className:a$1("ndpr-form-field__input",d.select,c$1),required:true,children:[jsx("option",{value:"ongoing",children:"Ongoing (breach is still active)"}),jsx("option",{value:"contained",children:"Contained (breach is stopped but not resolved)"}),jsx("option",{value:"resolved",children:"Resolved (breach is fully addressed)"})]})]}),jsxs("div",{children:[jsx("label",{htmlFor:"approximateRecordCount",className:"ndpr-form-field__label",children:"Approximate Number of Records Concerned"}),jsx("input",{type:"text",id:"approximateRecordCount",value:N,onChange:t=>ve(t.target.value),placeholder:"e.g. 5000",className:"ndpr-form-field__input"}),jsx("p",{className:"text-xs ndpr-text-muted mt-1",children:"Required for the NDPC report (NDPA Section 40(2))."})]}),jsxs("div",{children:[jsx("label",{htmlFor:"dataSubjectCategories",className:"ndpr-form-field__label",children:"Categories of Data Subjects Affected"}),jsx("input",{type:"text",id:"dataSubjectCategories",value:u,onChange:t=>Ne(t.target.value),placeholder:"e.g. customers, employees, minors",className:"ndpr-form-field__input"}),jsx("p",{className:"text-xs ndpr-text-muted mt-1",children:"Comma-separated. Required for the NDPC report (NDPA Section 40(2))."})]}),jsxs("div",{className:"md:col-span-2 flex items-center",children:[jsx("input",{id:"involvesSensitiveData",type:"checkbox",checked:P,onChange:t=>ue(t.target.checked),className:"h-4 w-4 rounded border-gray-300 text-[rgb(var(--ndpr-primary))] focus:ring-[rgb(var(--ndpr-ring))]"}),jsx("label",{htmlFor:"involvesSensitiveData",className:"ml-2 text-sm ndpr-text-muted",children:"Sensitive personal data (NDPA Section 30) is involved"})]}),jsxs("div",{className:"md:col-span-2",children:[jsx("label",{htmlFor:"likelyConsequences",className:"ndpr-form-field__label",children:"Likely Consequences for Data Subjects"}),jsx("textarea",{id:"likelyConsequences",value:F,onChange:t=>ye(t.target.value),placeholder:"e.g. identity theft, financial loss, reputational damage, discrimination",rows:3,className:a$1("ndpr-form-field__input",d.textarea,c$1)}),jsx("p",{className:"text-xs ndpr-text-muted mt-1",children:"Required content for NDPC report and Section 40(3) communications to data subjects."})]}),jsxs("div",{className:"md:col-span-2",children:[jsx("label",{htmlFor:"mitigationMeasures",className:"ndpr-form-field__label",children:"Mitigation Measures"}),jsx("textarea",{id:"mitigationMeasures",value:k,onChange:t=>_e(t.target.value),placeholder:"Measures taken or proposed to mitigate possible adverse effects (NDPA Section 40(3))",rows:3,className:a$1("ndpr-form-field__input",d.textarea,c$1)})]}),jsxs("div",{className:"md:col-span-2",children:[jsx("h4",{className:"ndpr-section-heading text-sm mt-4",children:"Data Protection Officer (NDPC contact)"}),jsx("p",{className:"text-xs ndpr-text-muted mb-2",children:"Defaults to organisation-level DPO if left blank."})]}),jsxs("div",{children:[jsx("label",{htmlFor:"dpoName",className:"ndpr-form-field__label",children:"DPO Name"}),jsx("input",{type:"text",id:"dpoName",value:y,onChange:t=>xe(t.target.value),className:"ndpr-form-field__input"})]}),jsxs("div",{children:[jsx("label",{htmlFor:"dpoEmail",className:"ndpr-form-field__label",children:"DPO Email"}),jsx("input",{type:"email",id:"dpoEmail",value:_,onChange:t=>Ce(t.target.value),className:"ndpr-form-field__input"})]}),jsxs("div",{children:[jsx("label",{htmlFor:"dpoPhone",className:"ndpr-form-field__label",children:"DPO Phone"}),jsx("input",{type:"tel",id:"dpoPhone",value:M,onChange:t=>Se(t.target.value),className:"ndpr-form-field__input"})]}),jsxs("div",{className:"md:col-span-2 flex items-center mt-2",children:[jsx("input",{id:"isPhasedReport",type:"checkbox",checked:Q,onChange:t=>De(t.target.checked),className:"h-4 w-4 rounded border-gray-300 text-[rgb(var(--ndpr-primary))] focus:ring-[rgb(var(--ndpr-ring))]"}),jsx("label",{htmlFor:"isPhasedReport",className:"ml-2 text-sm ndpr-text-muted",children:"This is a phased / interim report (Section 40(2) \u2014 complete info not yet available)"})]}),Q&&jsxs("div",{className:"md:col-span-2",children:[jsx("label",{htmlFor:"supplementsReportId",className:"ndpr-form-field__label",children:"Supplements Report ID (if applicable)"}),jsx("input",{type:"text",id:"supplementsReportId",value:X,onChange:t=>Ae(t.target.value),placeholder:"Prior report ID this report supplements",className:"ndpr-form-field__input"})]}),jsxs("div",{className:"md:col-span-2",children:[jsx("label",{htmlFor:"initialActions",className:"ndpr-form-field__label",children:"Initial Actions Taken"}),jsx("textarea",{id:"initialActions",value:q,onChange:t=>we(t.target.value),placeholder:"Describe any immediate actions that have been taken to address the breach",rows:3,className:a$1("ndpr-form-field__input",d.textarea,c$1)})]})]})]}),et&&jsxs("div",{children:[jsx("h3",{className:"ndpr-section-heading",children:"Attachments"}),jsxs("div",{className:"ndpr-form-field",children:[jsx("label",{htmlFor:"breach-attachments",className:"ndpr-form-field__label",children:"Upload Supporting Files (Optional)"}),jsxs("p",{className:"text-xs ndpr-text-muted mb-2",children:["Max ",G," files, ",Z/(1024*1024),"MB each. Allowed types: ",K.join(", ")]}),jsx("input",{id:"breach-attachments",type:"file",onChange:lt,multiple:true,className:"ndpr-form-field__input",accept:K.join(",")}),a$4.attachments&&jsx("p",{id:"attachments-error",role:"alert",className:"ndpr-form-field__error",children:a$4.attachments})]}),O.length>0&&jsxs("div",{className:"ndpr-form-field",children:[jsx("h4",{className:"ndpr-form-field__label",children:"Attached Files:"}),jsx("ul",{className:"ndpr-form-section",children:O.map((t,o)=>jsxs("li",{className:"flex items-center justify-between p-2 bg-gray-50 dark:bg-gray-700 rounded",children:[jsxs("div",{className:"flex items-center",children:[jsx("svg",{"aria-hidden":"true",focusable:"false",className:"w-4 h-4 ndpr-text-muted mr-2",fill:"currentColor",viewBox:"0 0 20 20",xmlns:"http://www.w3.org/2000/svg",children:jsx("path",{fillRule:"evenodd",d:"M8 4a3 3 0 00-3 3v4a5 5 0 0010 0V7a1 1 0 112 0v4a7 7 0 11-14 0V7a5 5 0 0110 0v4a3 3 0 11-6 0V7a1 1 0 012 0v4a1 1 0 102 0V7a3 3 0 00-3-3z",clipRule:"evenodd"})}),jsx("span",{className:"text-sm ndpr-text-muted",children:t.name}),jsxs("span",{className:"ml-2 text-xs ndpr-text-muted",children:["(",(t.size/1024).toFixed(1)," KB)"]})]}),jsxs("button",{type:"button",onClick:()=>pt(o),"aria-label":`Remove attachment ${t.name}`,className:"text-red-500 hover:ndpr-text-destructive p-2 min-w-[44px] min-h-[44px] flex items-center justify-center",children:[jsx("svg",{"aria-hidden":"true",focusable:"false",className:"w-4 h-4",fill:"currentColor",viewBox:"0 0 20 20",xmlns:"http://www.w3.org/2000/svg",children:jsx("path",{fillRule:"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",clipRule:"evenodd"})}),jsx("span",{className:"sr-only",children:"Remove"})]})]},o))})]})]}),jsxs("div",{className:a$1("ndpr-alert ndpr-alert--info",d.notice,c$1),children:[jsx("h3",{className:"text-sm font-bold ndpr-text-info mb-2",children:"NDPA Breach Notification Requirements"}),jsx("p",{className:"ndpr-text-info text-sm",children:"Under the Nigeria Data Protection Act (NDPA), Section 40, data breaches that pose a risk to the rights and freedoms of data subjects must be reported to the NDPC within 72 hours of discovery. The data protection team will assess this breach and determine if notification is required."})]}),jsxs("div",{className:"mt-6 relative flex gap-3",children:[C&&d.loadingOverlay&&jsx("div",{className:d.loadingOverlay}),jsx("button",{type:"submit",disabled:C,className:a$1(`px-6 py-3 bg-[rgb(var(--ndpr-primary))] text-white rounded-md hover:bg-[rgb(var(--ndpr-primary-hover))] focus:outline-none focus:ring-2 focus:ring-[rgb(var(--ndpr-ring))] focus:ring-offset-2 ${re} ${C?"opacity-50 cursor-not-allowed":""}`,d.primaryButton||d.submitButton,c$1),children:C?"Submitting...":at}),jsx("button",{type:"button",onClick:dt,disabled:C,className:a$1("px-6 py-3 bg-gray-200 dark:bg-gray-600 text-gray-700 dark:text-gray-200 rounded-md hover:bg-gray-300 dark:hover:bg-gray-500 focus:outline-none focus:ring-2 focus:ring-gray-400 focus:ring-offset-2",void 0,c$1),children:"Reset"})]})]})})]})};
2
+ export{Ct as a};
@@ -0,0 +1,2 @@
1
+ 'use strict';var chunkY346CURW_js=require('./chunk-Y346CURW.js'),chunkUXUMYP4L_js=require('./chunk-UXUMYP4L.js'),chunkAME4HJR4_js=require('./chunk-AME4HJR4.js'),chunkI5ZDNSX5_js=require('./chunk-I5ZDNSX5.js'),chunkRFPLZDIO_js=require('./chunk-RFPLZDIO.js'),react=require('react'),jsxRuntime=require('react/jsx-runtime');var Ct=({categories:Je,onSubmit:Qe,onValidationError:z,title:Y,description:H,submitButtonText:U,className:te="",buttonClassName:re="",classNames:d={},unstyled:c=false,isSubmitting:C=false,showConfirmation:Xe=true,confirmationMessage:Ve="Your breach report has been submitted successfully. The data protection team has been notified.",allowAttachments:et=true,maxAttachments:G=5,maxFileSize:Z=5*1024*1024,allowedFileTypes:K=[".pdf",".jpg",".jpeg",".png",".doc",".docx",".xls",".xlsx",".txt"],defaultValues:r,onReset:W,showCompleteness:tt=true})=>{var ke,qe,je,Te,Ie,Be,Ee,Me,$e,Oe,Le,ze,Ye,He;let J=chunkI5ZDNSX5_js.c(),rt=(ke=Y!=null?Y:J.breach.title)!=null?ke:"Report a Data Breach",it=(qe=H!=null?H:J.breach.description)!=null?qe:"Use this form to report a suspected or confirmed data breach in accordance with NDPA Section 40. All fields marked with * are required.",at=(je=U!=null?U:J.breach.submitReport)!=null?je:"Submit Report",ie=t=>{if(!t)return "";let o=new Date(t),p=s=>String(s).padStart(2,"0");return `${o.getFullYear()}-${p(o.getMonth()+1)}-${p(o.getDate())}T${p(o.getHours())}:${p(o.getMinutes())}`},[S,ae]=react.useState((r==null?void 0:r.title)||""),[D,ne]=react.useState((r==null?void 0:r.description)||""),[A,oe]=react.useState((r==null?void 0:r.category)||""),[h,se]=react.useState(ie(r==null?void 0:r.discoveredAt)),[v,de]=react.useState(ie(r==null?void 0:r.occurredAt)),[T,me]=react.useState(((Te=r==null?void 0:r.reporter)==null?void 0:Te.name)||""),[R,ce]=react.useState(((Ie=r==null?void 0:r.reporter)==null?void 0:Ie.email)||""),[I,le]=react.useState(((Be=r==null?void 0:r.reporter)==null?void 0:Be.department)||""),[B,pe]=react.useState(((Ee=r==null?void 0:r.reporter)==null?void 0:Ee.phone)||""),[E,ge]=react.useState((r==null?void 0:r.affectedSystems)||[]),[nt,fe]=react.useState(((Me=r==null?void 0:r.affectedSystems)==null?void 0:Me.join(", "))||""),[w,be]=react.useState((r==null?void 0:r.dataTypes)||[]),[b,he]=react.useState((r==null?void 0:r.estimatedAffectedSubjects)!=null?String(r.estimatedAffectedSubjects):""),[N,ve]=react.useState((r==null?void 0:r.approximateRecordCount)!=null?String(r.approximateRecordCount):""),[u,Ne]=react.useState((($e=r==null?void 0:r.dataSubjectCategories)==null?void 0:$e.join(", "))||""),[P,ue]=react.useState((Oe=r==null?void 0:r.involvesSensitiveData)!=null?Oe:false),[F,ye]=react.useState((r==null?void 0:r.likelyConsequences)||""),[k,_e]=react.useState((r==null?void 0:r.mitigationMeasures)||""),[y,xe]=react.useState(((Le=r==null?void 0:r.dpoContact)==null?void 0:Le.name)||""),[_,Ce]=react.useState(((ze=r==null?void 0:r.dpoContact)==null?void 0:ze.email)||""),[M,Se]=react.useState(((Ye=r==null?void 0:r.dpoContact)==null?void 0:Ye.phone)||""),[Q,De]=react.useState((He=r==null?void 0:r.isPhasedReport)!=null?He:false),[X,Ae]=react.useState((r==null?void 0:r.supplementsReportId)||""),[$,Re]=react.useState((r==null?void 0:r.status)||"ongoing"),[q,we]=react.useState((r==null?void 0:r.initialActions)||""),[O,V]=react.useState([]),[ot,ee]=react.useState(false),[a,j]=react.useState({}),g=react.useMemo(()=>{let t={id:"",title:S,description:D,category:A,discoveredAt:h?new Date(h).getTime():NaN,occurredAt:v?new Date(v).getTime():void 0,reportedAt:0,reporter:{name:T,email:R,department:I,phone:B||void 0},affectedSystems:E,dataTypes:w,estimatedAffectedSubjects:b?Number(b):void 0,approximateRecordCount:N?Number(N):void 0,dataSubjectCategories:u?u.split(",").map(o=>o.trim()).filter(Boolean):void 0,involvesSensitiveData:P,likelyConsequences:F||void 0,mitigationMeasures:k||void 0,dpoContact:y||_?{name:y,email:_,phone:M||void 0}:void 0,status:$,initialActions:q||void 0};return chunkY346CURW_js.a(t,{highRisk:P})},[S,D,A,h,v,E,w,b,N,u,P,F,k,y,_,$,q]),Pe=[...g.notificationToCommission,...g.dataSubjectCommunication],Fe=Pe.length,st=Fe-g.missing.length,dt=()=>{ae(""),ne(""),oe(""),se(""),de(""),me(""),ce(""),le(""),pe(""),ge([]),fe(""),be([]),he(""),ve(""),Ne(""),ue(false),ye(""),_e(""),xe(""),Ce(""),Se(""),De(false),Ae(""),Re("ongoing"),we(""),V([]),ee(false),j({}),W==null||W();},mt=t=>{let o=t.target.value;fe(o);let p=o.split(",").map(s=>s.trim()).filter(Boolean);ge(p);},ct=t=>{be(o=>o.includes(t)?o.filter(p=>p!==t):[...o,t]);},lt=t=>{var Ue;let o=t.target.files;if(!o)return;let p=[],s={};if(O.length+o.length>G){s.attachments=`Maximum of ${G} files allowed`,j(f=>chunkRFPLZDIO_js.a(chunkRFPLZDIO_js.a({},f),s));return}for(let f=0;f<o.length;f++){let L=o[f];if(L.size>Z){s.attachments=`File ${L.name} exceeds the maximum size of ${Z/(1024*1024)}MB`;continue}let Ge="."+((Ue=L.name.split(".").pop())==null?void 0:Ue.toLowerCase());if(!K.includes(Ge)){s.attachments=`File type ${Ge} is not allowed`;continue}p.push(L);}p.length>0&&V(f=>[...f,...p]),Object.keys(s).length>0?j(f=>chunkRFPLZDIO_js.a(chunkRFPLZDIO_js.a({},f),s)):j(f=>chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},f),{attachments:""}));},pt=t=>{V(o=>o.filter((p,s)=>s!==t));},gt=()=>{let t={};return S.trim()||(t.breachTitle="Breach title is required"),D.trim()||(t.description="Description is required"),A||(t.category="Category is required"),h||(t.discoveredAt="Discovery date is required"),T.trim()||(t.reporterName="Reporter name is required"),R.trim()?/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/.test(R)||(t.reporterEmail="Reporter email is invalid"):t.reporterEmail="Reporter email is required",I.trim()||(t.reporterDepartment="Reporter department is required"),E.length===0&&(t.affectedSystems="At least one affected system is required"),w.length===0&&(t.dataTypes="At least one data type is required"),b&&isNaN(Number(b))&&(t.estimatedAffectedSubjects="Estimated affected subjects must be a number"),j(t),t},ft=t=>{t.preventDefault();let o=gt();if(Object.keys(o).length>0){z==null||z(o);return}let p={title:chunkUXUMYP4L_js.a(S),description:chunkUXUMYP4L_js.a(D),category:A,discoveredAt:new Date(h).getTime(),occurredAt:v?new Date(v).getTime():void 0,reportedAt:Date.now(),reporter:{name:chunkUXUMYP4L_js.a(T),email:chunkUXUMYP4L_js.a(R),department:chunkUXUMYP4L_js.a(I),phone:B?chunkUXUMYP4L_js.a(B):void 0},affectedSystems:E.map(s=>chunkUXUMYP4L_js.a(s)),dataTypes:w,estimatedAffectedSubjects:b?Number(b):void 0,approximateRecordCount:N?Number(N):void 0,dataSubjectCategories:u?u.split(",").map(s=>chunkUXUMYP4L_js.a(s.trim())).filter(Boolean):void 0,involvesSensitiveData:P,likelyConsequences:F?chunkUXUMYP4L_js.a(F):void 0,mitigationMeasures:k?chunkUXUMYP4L_js.a(k):void 0,dpoContact:y||_?{name:chunkUXUMYP4L_js.a(y),email:chunkUXUMYP4L_js.a(_),phone:M?chunkUXUMYP4L_js.a(M):void 0}:void 0,isPhasedReport:Q||void 0,supplementsReportId:X?chunkUXUMYP4L_js.a(X):void 0,status:$,initialActions:q?chunkUXUMYP4L_js.a(q):void 0,attachments:O.map(s=>({name:s.name,type:s.type,size:s.size,file:s}))};Qe(p),Xe&&ee(true);};if(ot)return jsxRuntime.jsxs("div",{"data-ndpr-component":"breach-report-form",className:`p-4 bg-green-50 dark:bg-green-900/20 rounded-md ${te}`,children:[jsxRuntime.jsx("h2",{className:"text-lg font-bold ndpr-text-success mb-2",children:"Report Submitted"}),jsxRuntime.jsx("p",{className:"ndpr-text-success",children:Ve}),jsxRuntime.jsxs("div",{className:"mt-4 p-4 bg-yellow-50 dark:bg-yellow-900/20 rounded-md",children:[jsxRuntime.jsx("h3",{className:"text-sm font-bold ndpr-text-warning mb-2",children:"Important: Next Steps"}),jsxRuntime.jsx("p",{className:"ndpr-text-warning text-sm",children:"Under the NDPA (Section 40), data breaches that pose a risk to the rights and freedoms of data subjects must be reported to the NDPC within 72 hours of discovery. The data protection team will assess this breach and determine if notification is required."})]}),jsxRuntime.jsx("button",{onClick:()=>ee(false),className:`mt-4 px-4 py-2 bg-green-600 text-white rounded hover:bg-green-700 ${re}`,children:"Report Another Breach"})]});let bt=[{id:"personal",label:"Personal Information (names, addresses)"},{id:"contact",label:"Contact Information (email, phone)"},{id:"financial",label:"Financial Information (bank details, payment info)"},{id:"health",label:"Health Information"},{id:"identification",label:"Identification Documents (ID cards, passports)"},{id:"login",label:"Login Credentials"},{id:"biometric",label:"Biometric Data"},{id:"children",label:"Children's Data"},{id:"location",label:"Location Data"},{id:"communications",label:"Communications Content"}];return jsxRuntime.jsxs("div",{className:chunkAME4HJR4_js.a(`bg-white dark:bg-gray-800 p-6 rounded-lg shadow-md ${te}`,d.root,c),children:[jsxRuntime.jsx("h2",{className:chunkAME4HJR4_js.a("ndpr-section-heading",d.title,c),children:rt}),jsxRuntime.jsx("p",{className:"ndpr-card__subtitle",children:it}),tt&&jsxRuntime.jsxs("div",{"data-ndpr-section":"breach-completeness",className:chunkAME4HJR4_js.a("ndpr-alert ndpr-alert--info mb-4",d.completeness,c),children:[jsxRuntime.jsxs("div",{className:"flex items-center justify-between mb-2",children:[jsxRuntime.jsx("h3",{className:"text-sm font-bold ndpr-text-info",children:"NDPC notification readiness"}),jsxRuntime.jsxs("span",{className:"text-sm font-semibold ndpr-text-info",children:[g.completeness,"%"]})]}),jsxRuntime.jsx("div",{role:"progressbar","aria-valuenow":g.completeness,"aria-valuemin":0,"aria-valuemax":100,"aria-label":"Breach notification completeness",className:"h-2 w-full rounded bg-gray-200 dark:bg-gray-700 overflow-hidden mb-2",children:jsxRuntime.jsx("div",{className:"h-full bg-[rgb(var(--ndpr-primary))]",style:{width:`${g.completeness}%`}})}),jsxRuntime.jsxs("p",{className:"text-sm ndpr-text-info",children:[st," of ",Fe," mandated items provided (GAID 2025 Art. 33(5) / NDPA S. 40(2))."]}),Number.isFinite(g.timing.deadline)?g.timing.overdue?jsxRuntime.jsxs("p",{className:"text-sm ndpr-text-warning mt-1",children:["72-hour deadline passed ",Math.abs(g.timing.hoursRemaining),"h ago \u2014 notify the NDPC now and state the reason for the delay (NDPA S. 40(2))."]}):jsxRuntime.jsxs("p",{className:"text-sm ndpr-text-info mt-1",children:[Math.max(0,g.timing.hoursRemaining),"h remaining to notify the NDPC (72-hour window, NDPA S. 40(2))."]}):jsxRuntime.jsx("p",{className:"text-sm ndpr-text-muted mt-1",children:"Set the discovery date to start the 72-hour clock."}),g.dataSubjectCommunicationRequired&&jsxRuntime.jsx("p",{className:"text-sm ndpr-text-warning mt-1",children:"High risk: affected data subjects must be notified in plain, clear language (NDPA S. 40(3))."}),g.missing.length>0&&jsxRuntime.jsxs("details",{className:"mt-2",children:[jsxRuntime.jsxs("summary",{className:"text-sm ndpr-text-info cursor-pointer",children:[g.missing.length," item(s) still needed"]}),jsxRuntime.jsx("ul",{className:"mt-1 list-disc pl-5",children:Pe.filter(t=>!t.satisfied).map(t=>jsxRuntime.jsxs("li",{className:"text-xs ndpr-text-muted",children:[t.label," ",jsxRuntime.jsxs("span",{className:"opacity-70",children:["(",t.section,")"]})]},t.id))})]})]}),jsxRuntime.jsx("form",{onSubmit:ft,className:chunkAME4HJR4_js.a("",d.form,c),children:jsxRuntime.jsxs("div",{className:"ndpr-form-section",children:[jsxRuntime.jsxs("div",{className:chunkAME4HJR4_js.a("",d.fieldGroup,c),children:[jsxRuntime.jsx("h3",{className:"ndpr-section-heading",children:"Breach Information"}),jsxRuntime.jsxs("div",{className:"ndpr-form-grid ndpr-form-grid--2",children:[jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("label",{htmlFor:"breachTitle",className:chunkAME4HJR4_js.a("ndpr-form-field__label",d.label,c),children:["Breach Title/Summary ",jsxRuntime.jsx("span",{className:"ndpr-form-field__required",children:"*"})]}),jsxRuntime.jsx("input",{type:"text",id:"breachTitle",value:S,onChange:t=>ae(t.target.value),className:chunkAME4HJR4_js.a("ndpr-form-field__input",d.input,c),required:true,"aria-invalid":!!a.breachTitle,"aria-describedby":a.breachTitle?"breachTitle-error":void 0}),a.breachTitle&&jsxRuntime.jsx("p",{id:"breachTitle-error",role:"alert",className:"ndpr-form-field__error",children:a.breachTitle})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("label",{htmlFor:"category",className:chunkAME4HJR4_js.a("ndpr-form-field__label",d.label,c),children:["Breach Category ",jsxRuntime.jsx("span",{className:"ndpr-form-field__required",children:"*"})]}),jsxRuntime.jsxs("select",{id:"category",value:A,onChange:t=>oe(t.target.value),className:chunkAME4HJR4_js.a("ndpr-form-field__input",d.select,c),required:true,"aria-invalid":!!a.category,"aria-describedby":a.category?"category-error":void 0,children:[jsxRuntime.jsx("option",{value:"",children:"Select a category"}),Je.map(t=>jsxRuntime.jsx("option",{value:t.id,children:t.name},t.id))]}),a.category&&jsxRuntime.jsx("p",{id:"category-error",role:"alert",className:"ndpr-form-field__error",children:a.category})]}),jsxRuntime.jsxs("div",{className:"md:col-span-2",children:[jsxRuntime.jsxs("label",{htmlFor:"description",className:chunkAME4HJR4_js.a("ndpr-form-field__label",d.label,c),children:["Detailed Description ",jsxRuntime.jsx("span",{className:"ndpr-form-field__required",children:"*"})]}),jsxRuntime.jsx("textarea",{id:"description",value:D,onChange:t=>ne(t.target.value),rows:4,className:chunkAME4HJR4_js.a("ndpr-form-field__input",d.textarea,c),required:true,"aria-invalid":!!a.description,"aria-describedby":a.description?"description-error":void 0}),a.description&&jsxRuntime.jsx("p",{id:"description-error",role:"alert",className:"ndpr-form-field__error",children:a.description})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("label",{htmlFor:"discoveredAt",className:"ndpr-form-field__label",children:["Date Discovered ",jsxRuntime.jsx("span",{className:"ndpr-form-field__required",children:"*"})]}),jsxRuntime.jsx("input",{type:"datetime-local",id:"discoveredAt",value:h,onChange:t=>se(t.target.value),className:"ndpr-form-field__input",required:true,"aria-invalid":!!a.discoveredAt,"aria-describedby":a.discoveredAt?"discoveredAt-error":void 0}),a.discoveredAt&&jsxRuntime.jsx("p",{id:"discoveredAt-error",role:"alert",className:"ndpr-form-field__error",children:a.discoveredAt})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{htmlFor:"occurredAt",className:"ndpr-form-field__label",children:"Date Occurred (if known)"}),jsxRuntime.jsx("input",{type:"datetime-local",id:"occurredAt",value:v,onChange:t=>de(t.target.value),className:"ndpr-form-field__input"})]})]})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("h3",{className:"ndpr-section-heading",children:"Reporter Information"}),jsxRuntime.jsxs("div",{className:"ndpr-form-grid ndpr-form-grid--2",children:[jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("label",{htmlFor:"reporterName",className:"ndpr-form-field__label",children:["Your Name ",jsxRuntime.jsx("span",{className:"ndpr-form-field__required",children:"*"})]}),jsxRuntime.jsx("input",{type:"text",id:"reporterName",value:T,onChange:t=>me(t.target.value),className:"ndpr-form-field__input",required:true,"aria-invalid":!!a.reporterName,"aria-describedby":a.reporterName?"reporterName-error":void 0}),a.reporterName&&jsxRuntime.jsx("p",{id:"reporterName-error",role:"alert",className:"ndpr-form-field__error",children:a.reporterName})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("label",{htmlFor:"reporterEmail",className:"ndpr-form-field__label",children:["Your Email ",jsxRuntime.jsx("span",{className:"ndpr-form-field__required",children:"*"})]}),jsxRuntime.jsx("input",{type:"email",id:"reporterEmail",value:R,onChange:t=>ce(t.target.value),className:"ndpr-form-field__input",required:true,"aria-invalid":!!a.reporterEmail,"aria-describedby":a.reporterEmail?"reporterEmail-error":void 0}),a.reporterEmail&&jsxRuntime.jsx("p",{id:"reporterEmail-error",role:"alert",className:"ndpr-form-field__error",children:a.reporterEmail})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("label",{htmlFor:"reporterDepartment",className:"ndpr-form-field__label",children:["Your Department ",jsxRuntime.jsx("span",{className:"ndpr-form-field__required",children:"*"})]}),jsxRuntime.jsx("input",{type:"text",id:"reporterDepartment",value:I,onChange:t=>le(t.target.value),className:"ndpr-form-field__input",required:true,"aria-invalid":!!a.reporterDepartment,"aria-describedby":a.reporterDepartment?"reporterDepartment-error":void 0}),a.reporterDepartment&&jsxRuntime.jsx("p",{id:"reporterDepartment-error",role:"alert",className:"ndpr-form-field__error",children:a.reporterDepartment})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{htmlFor:"reporterPhone",className:"ndpr-form-field__label",children:"Your Phone Number (Optional)"}),jsxRuntime.jsx("input",{type:"tel",id:"reporterPhone",value:B,onChange:t=>pe(t.target.value),className:"ndpr-form-field__input"})]})]})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("h3",{className:"ndpr-section-heading",children:"Impact Information"}),jsxRuntime.jsxs("div",{className:"ndpr-form-grid ndpr-form-grid--2",children:[jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("label",{htmlFor:"affectedSystems",className:"ndpr-form-field__label",children:["Affected Systems/Applications ",jsxRuntime.jsx("span",{className:"ndpr-form-field__required",children:"*"})]}),jsxRuntime.jsx("input",{type:"text",id:"affectedSystems",value:nt,onChange:mt,placeholder:"e.g. CRM, Email Server, Website (comma separated)",className:"ndpr-form-field__input",required:true,"aria-invalid":!!a.affectedSystems,"aria-describedby":a.affectedSystems?"affectedSystems-error":void 0}),a.affectedSystems&&jsxRuntime.jsx("p",{id:"affectedSystems-error",role:"alert",className:"ndpr-form-field__error",children:a.affectedSystems})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{htmlFor:"estimatedAffectedSubjects",className:"ndpr-form-field__label",children:"Estimated Number of Affected Data Subjects"}),jsxRuntime.jsx("input",{type:"text",id:"estimatedAffectedSubjects",value:b,onChange:t=>he(t.target.value),placeholder:"e.g. 100",className:"ndpr-form-field__input","aria-invalid":!!a.estimatedAffectedSubjects,"aria-describedby":a.estimatedAffectedSubjects?"estimatedAffectedSubjects-error":void 0}),a.estimatedAffectedSubjects&&jsxRuntime.jsx("p",{id:"estimatedAffectedSubjects-error",role:"alert",className:"ndpr-form-field__error",children:a.estimatedAffectedSubjects})]}),jsxRuntime.jsxs("fieldset",{className:"md:col-span-2","aria-invalid":!!a.dataTypes,"aria-describedby":a.dataTypes?"dataTypes-error":void 0,children:[jsxRuntime.jsxs("legend",{className:"ndpr-form-field__label",children:["Types of Data Involved ",jsxRuntime.jsx("span",{className:"ndpr-form-field__required","aria-hidden":"true",children:"*"}),jsxRuntime.jsx("span",{className:"sr-only",children:"(required)"})]}),jsxRuntime.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-2",children:bt.map(t=>jsxRuntime.jsxs("div",{className:"flex items-center",children:[jsxRuntime.jsx("input",{type:"checkbox",id:`dataType_${t.id}`,checked:w.includes(t.id),onChange:()=>ct(t.id),className:"h-4 w-4 rounded border-gray-300 text-[rgb(var(--ndpr-primary))] focus:ring-[rgb(var(--ndpr-ring))]"}),jsxRuntime.jsx("label",{htmlFor:`dataType_${t.id}`,className:"ml-2 text-sm ndpr-text-muted",children:t.label})]},t.id))}),a.dataTypes&&jsxRuntime.jsx("p",{id:"dataTypes-error",role:"alert",className:"ndpr-form-field__error",children:a.dataTypes})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("label",{htmlFor:"status",className:"ndpr-form-field__label",children:["Current Status ",jsxRuntime.jsx("span",{className:"ndpr-form-field__required",children:"*"})]}),jsxRuntime.jsxs("select",{id:"status",value:$,onChange:t=>Re(t.target.value),className:chunkAME4HJR4_js.a("ndpr-form-field__input",d.select,c),required:true,children:[jsxRuntime.jsx("option",{value:"ongoing",children:"Ongoing (breach is still active)"}),jsxRuntime.jsx("option",{value:"contained",children:"Contained (breach is stopped but not resolved)"}),jsxRuntime.jsx("option",{value:"resolved",children:"Resolved (breach is fully addressed)"})]})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{htmlFor:"approximateRecordCount",className:"ndpr-form-field__label",children:"Approximate Number of Records Concerned"}),jsxRuntime.jsx("input",{type:"text",id:"approximateRecordCount",value:N,onChange:t=>ve(t.target.value),placeholder:"e.g. 5000",className:"ndpr-form-field__input"}),jsxRuntime.jsx("p",{className:"text-xs ndpr-text-muted mt-1",children:"Required for the NDPC report (NDPA Section 40(2))."})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{htmlFor:"dataSubjectCategories",className:"ndpr-form-field__label",children:"Categories of Data Subjects Affected"}),jsxRuntime.jsx("input",{type:"text",id:"dataSubjectCategories",value:u,onChange:t=>Ne(t.target.value),placeholder:"e.g. customers, employees, minors",className:"ndpr-form-field__input"}),jsxRuntime.jsx("p",{className:"text-xs ndpr-text-muted mt-1",children:"Comma-separated. Required for the NDPC report (NDPA Section 40(2))."})]}),jsxRuntime.jsxs("div",{className:"md:col-span-2 flex items-center",children:[jsxRuntime.jsx("input",{id:"involvesSensitiveData",type:"checkbox",checked:P,onChange:t=>ue(t.target.checked),className:"h-4 w-4 rounded border-gray-300 text-[rgb(var(--ndpr-primary))] focus:ring-[rgb(var(--ndpr-ring))]"}),jsxRuntime.jsx("label",{htmlFor:"involvesSensitiveData",className:"ml-2 text-sm ndpr-text-muted",children:"Sensitive personal data (NDPA Section 30) is involved"})]}),jsxRuntime.jsxs("div",{className:"md:col-span-2",children:[jsxRuntime.jsx("label",{htmlFor:"likelyConsequences",className:"ndpr-form-field__label",children:"Likely Consequences for Data Subjects"}),jsxRuntime.jsx("textarea",{id:"likelyConsequences",value:F,onChange:t=>ye(t.target.value),placeholder:"e.g. identity theft, financial loss, reputational damage, discrimination",rows:3,className:chunkAME4HJR4_js.a("ndpr-form-field__input",d.textarea,c)}),jsxRuntime.jsx("p",{className:"text-xs ndpr-text-muted mt-1",children:"Required content for NDPC report and Section 40(3) communications to data subjects."})]}),jsxRuntime.jsxs("div",{className:"md:col-span-2",children:[jsxRuntime.jsx("label",{htmlFor:"mitigationMeasures",className:"ndpr-form-field__label",children:"Mitigation Measures"}),jsxRuntime.jsx("textarea",{id:"mitigationMeasures",value:k,onChange:t=>_e(t.target.value),placeholder:"Measures taken or proposed to mitigate possible adverse effects (NDPA Section 40(3))",rows:3,className:chunkAME4HJR4_js.a("ndpr-form-field__input",d.textarea,c)})]}),jsxRuntime.jsxs("div",{className:"md:col-span-2",children:[jsxRuntime.jsx("h4",{className:"ndpr-section-heading text-sm mt-4",children:"Data Protection Officer (NDPC contact)"}),jsxRuntime.jsx("p",{className:"text-xs ndpr-text-muted mb-2",children:"Defaults to organisation-level DPO if left blank."})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{htmlFor:"dpoName",className:"ndpr-form-field__label",children:"DPO Name"}),jsxRuntime.jsx("input",{type:"text",id:"dpoName",value:y,onChange:t=>xe(t.target.value),className:"ndpr-form-field__input"})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{htmlFor:"dpoEmail",className:"ndpr-form-field__label",children:"DPO Email"}),jsxRuntime.jsx("input",{type:"email",id:"dpoEmail",value:_,onChange:t=>Ce(t.target.value),className:"ndpr-form-field__input"})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{htmlFor:"dpoPhone",className:"ndpr-form-field__label",children:"DPO Phone"}),jsxRuntime.jsx("input",{type:"tel",id:"dpoPhone",value:M,onChange:t=>Se(t.target.value),className:"ndpr-form-field__input"})]}),jsxRuntime.jsxs("div",{className:"md:col-span-2 flex items-center mt-2",children:[jsxRuntime.jsx("input",{id:"isPhasedReport",type:"checkbox",checked:Q,onChange:t=>De(t.target.checked),className:"h-4 w-4 rounded border-gray-300 text-[rgb(var(--ndpr-primary))] focus:ring-[rgb(var(--ndpr-ring))]"}),jsxRuntime.jsx("label",{htmlFor:"isPhasedReport",className:"ml-2 text-sm ndpr-text-muted",children:"This is a phased / interim report (Section 40(2) \u2014 complete info not yet available)"})]}),Q&&jsxRuntime.jsxs("div",{className:"md:col-span-2",children:[jsxRuntime.jsx("label",{htmlFor:"supplementsReportId",className:"ndpr-form-field__label",children:"Supplements Report ID (if applicable)"}),jsxRuntime.jsx("input",{type:"text",id:"supplementsReportId",value:X,onChange:t=>Ae(t.target.value),placeholder:"Prior report ID this report supplements",className:"ndpr-form-field__input"})]}),jsxRuntime.jsxs("div",{className:"md:col-span-2",children:[jsxRuntime.jsx("label",{htmlFor:"initialActions",className:"ndpr-form-field__label",children:"Initial Actions Taken"}),jsxRuntime.jsx("textarea",{id:"initialActions",value:q,onChange:t=>we(t.target.value),placeholder:"Describe any immediate actions that have been taken to address the breach",rows:3,className:chunkAME4HJR4_js.a("ndpr-form-field__input",d.textarea,c)})]})]})]}),et&&jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("h3",{className:"ndpr-section-heading",children:"Attachments"}),jsxRuntime.jsxs("div",{className:"ndpr-form-field",children:[jsxRuntime.jsx("label",{htmlFor:"breach-attachments",className:"ndpr-form-field__label",children:"Upload Supporting Files (Optional)"}),jsxRuntime.jsxs("p",{className:"text-xs ndpr-text-muted mb-2",children:["Max ",G," files, ",Z/(1024*1024),"MB each. Allowed types: ",K.join(", ")]}),jsxRuntime.jsx("input",{id:"breach-attachments",type:"file",onChange:lt,multiple:true,className:"ndpr-form-field__input",accept:K.join(",")}),a.attachments&&jsxRuntime.jsx("p",{id:"attachments-error",role:"alert",className:"ndpr-form-field__error",children:a.attachments})]}),O.length>0&&jsxRuntime.jsxs("div",{className:"ndpr-form-field",children:[jsxRuntime.jsx("h4",{className:"ndpr-form-field__label",children:"Attached Files:"}),jsxRuntime.jsx("ul",{className:"ndpr-form-section",children:O.map((t,o)=>jsxRuntime.jsxs("li",{className:"flex items-center justify-between p-2 bg-gray-50 dark:bg-gray-700 rounded",children:[jsxRuntime.jsxs("div",{className:"flex items-center",children:[jsxRuntime.jsx("svg",{"aria-hidden":"true",focusable:"false",className:"w-4 h-4 ndpr-text-muted mr-2",fill:"currentColor",viewBox:"0 0 20 20",xmlns:"http://www.w3.org/2000/svg",children:jsxRuntime.jsx("path",{fillRule:"evenodd",d:"M8 4a3 3 0 00-3 3v4a5 5 0 0010 0V7a1 1 0 112 0v4a7 7 0 11-14 0V7a5 5 0 0110 0v4a3 3 0 11-6 0V7a1 1 0 012 0v4a1 1 0 102 0V7a3 3 0 00-3-3z",clipRule:"evenodd"})}),jsxRuntime.jsx("span",{className:"text-sm ndpr-text-muted",children:t.name}),jsxRuntime.jsxs("span",{className:"ml-2 text-xs ndpr-text-muted",children:["(",(t.size/1024).toFixed(1)," KB)"]})]}),jsxRuntime.jsxs("button",{type:"button",onClick:()=>pt(o),"aria-label":`Remove attachment ${t.name}`,className:"text-red-500 hover:ndpr-text-destructive p-2 min-w-[44px] min-h-[44px] flex items-center justify-center",children:[jsxRuntime.jsx("svg",{"aria-hidden":"true",focusable:"false",className:"w-4 h-4",fill:"currentColor",viewBox:"0 0 20 20",xmlns:"http://www.w3.org/2000/svg",children:jsxRuntime.jsx("path",{fillRule:"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",clipRule:"evenodd"})}),jsxRuntime.jsx("span",{className:"sr-only",children:"Remove"})]})]},o))})]})]}),jsxRuntime.jsxs("div",{className:chunkAME4HJR4_js.a("ndpr-alert ndpr-alert--info",d.notice,c),children:[jsxRuntime.jsx("h3",{className:"text-sm font-bold ndpr-text-info mb-2",children:"NDPA Breach Notification Requirements"}),jsxRuntime.jsx("p",{className:"ndpr-text-info text-sm",children:"Under the Nigeria Data Protection Act (NDPA), Section 40, data breaches that pose a risk to the rights and freedoms of data subjects must be reported to the NDPC within 72 hours of discovery. The data protection team will assess this breach and determine if notification is required."})]}),jsxRuntime.jsxs("div",{className:"mt-6 relative flex gap-3",children:[C&&d.loadingOverlay&&jsxRuntime.jsx("div",{className:d.loadingOverlay}),jsxRuntime.jsx("button",{type:"submit",disabled:C,className:chunkAME4HJR4_js.a(`px-6 py-3 bg-[rgb(var(--ndpr-primary))] text-white rounded-md hover:bg-[rgb(var(--ndpr-primary-hover))] focus:outline-none focus:ring-2 focus:ring-[rgb(var(--ndpr-ring))] focus:ring-offset-2 ${re} ${C?"opacity-50 cursor-not-allowed":""}`,d.primaryButton||d.submitButton,c),children:C?"Submitting...":at}),jsxRuntime.jsx("button",{type:"button",onClick:dt,disabled:C,className:chunkAME4HJR4_js.a("px-6 py-3 bg-gray-200 dark:bg-gray-600 text-gray-700 dark:text-gray-200 rounded-md hover:bg-gray-300 dark:hover:bg-gray-500 focus:outline-none focus:ring-2 focus:ring-gray-400 focus:ring-offset-2",void 0,c),children:"Reset"})]})]})})]})};
2
+ exports.a=Ct;
@@ -0,0 +1 @@
1
+ import {c,d}from'./chunk-SZXHNJGG.mjs';import {a}from'./chunk-WJSUVPYX.mjs';import {a as a$1}from'./chunk-6A7M4CGJ.mjs';import {useMemo}from'react';function u(t,e){return useMemo(()=>a(t,e),[t,e])}function M({input:t}){let e=JSON.stringify(t);return useMemo(()=>a$1(t),[e])}function D(t,e){return useMemo(()=>c(t,e),[t.dataSubjectsInSixMonths,t.isDesignated,e])}function P(t,e){return useMemo(()=>d(t,e),[t.commencementDate,t.asOf,t.tier,e])}export{u as a,M as b,D as c,P as d};
@@ -0,0 +1 @@
1
+ import {a}from'./chunk-ZJYULEER.mjs';var N={ohl:200,ehl:1e3,uhl:5e3},x={UHL:25e4,EHL:1e5,OHL:1e4};function T(e,i={}){let t=a(a({},N),i.thresholds),a$1=a(a({},x),i.fees),r=e==null?void 0:e.dataSubjectsInSixMonths,l=typeof r=="number"&&r>0?Math.floor(r):0,n;l>t.uhl?n="UHL":l>=t.ehl?n="EHL":l>=t.ohl?n="OHL":e!=null&&e.isDesignated?n="listed":n="none";let s=n!=="none",c=n==="UHL"||n==="EHL"||n==="OHL"?a$1[n]:0,o=[];return n==="listed"&&o.push("Designated as a DCPMI below the volume tiers \u2014 confirm the applicable registration tier and fee with the NDPC."),s&&o.push(n==="OHL"?"OHL organisations renew their NDPC registration annually and file Compliance Audit Returns (CAR) each year.":"Register once with the NDPC, then file Compliance Audit Returns (CAR) annually."),o.push("Thresholds, fees, and filing dates follow the NDPC GAID 2025 baseline and can change \u2014 verify against current NDPC guidance before relying on them."),{tier:n,isDCPMI:s,annualFeeNGN:c,registration:{required:s,renewsAnnually:n==="OHL"},compliance:{auditReturnsAnnual:s,initialAuditWithinMonths:15},notes:o,dataSubjectsConsidered:l}}function O(e){return String(e).padStart(2,"0")}function y(e){let[i,t,a]=e.split("-").map(Number);return new Date(Date.UTC(i,t-1,a))}function H(e){return e.toISOString().slice(0,10)}function S(e,i){let[t,a,r]=e.split("-").map(Number);return H(new Date(Date.UTC(t,a-1+i,r)))}function R(){return new Date().toISOString().slice(0,10)}function U(e,i={}){var f,C,b,g,p,M,I;let t=(f=e.asOf)!=null?f:R(),a=(C=i.initialAuditWithinMonths)!=null?C:15,r=(g=(b=i.annualDeadline)==null?void 0:b.month)!=null?g:3,l=(M=(p=i.annualDeadline)==null?void 0:p.day)!=null?M:31,n=(I=i.deadlineOverrides)!=null?I:{},s=e.tier===void 0?true:e.tier!=="none",c=S(e.commencementDate,a),o=P=>{var A;return (A=n[P])!=null?A:`${P}-${O(r)}-${O(l)}`},h=Number(t.slice(0,4)),D=o(h);t>D&&(h+=1,D=o(h));let L=Math.round((y(D).getTime()-y(t).getTime())/864e5),m=t>=c,u=[];return s?(u.push("File the Compliance Audit Return with the NDPC via the NDPC Information Management Portal (NIMP)."),m&&u.push("The initial compliance-audit window has elapsed \u2014 ensure the initial audit has been conducted.")):u.push("Compliance Audit Returns apply only to Data Controllers/Processors of Major Importance."),u.push("Filing deadlines follow the NDPC GAID 2025 baseline and can be extended \u2014 verify the current deadline with the NDPC."),{applicable:s,schedule:{commencementDate:e.commencementDate,initialAuditWithinMonths:a,initialAuditDueDate:c,nextFilingDeadline:D,filingYear:h},status:{initialAuditDue:m,daysUntilNextDeadline:L},notes:u,asOf:t}}export{N as a,x as b,T as c,U as d};
@@ -0,0 +1 @@
1
+ 'use strict';var chunkWKY26JLT_js=require('./chunk-WKY26JLT.js'),chunkY346CURW_js=require('./chunk-Y346CURW.js'),chunk7TTXS7JX_js=require('./chunk-7TTXS7JX.js'),react=require('react');function u(t,e){return react.useMemo(()=>chunkY346CURW_js.a(t,e),[t,e])}function M({input:t}){let e=JSON.stringify(t);return react.useMemo(()=>chunk7TTXS7JX_js.a(t),[e])}function D(t,e){return react.useMemo(()=>chunkWKY26JLT_js.c(t,e),[t.dataSubjectsInSixMonths,t.isDesignated,e])}function P(t,e){return react.useMemo(()=>chunkWKY26JLT_js.d(t,e),[t.commencementDate,t.asOf,t.tier,e])}exports.a=u;exports.b=M;exports.c=D;exports.d=P;
@@ -0,0 +1 @@
1
+ var t=e=>typeof e=="string"&&e.trim().length>0,m=e=>typeof e=="number"&&Number.isFinite(e)&&e>=0,C=e=>Array.isArray(e)&&e.length>0,R=e=>!!e&&t(e.name)&&t(e.email);function M(e,n={}){var p,N,D,S,y;let s=(p=n.asOf)!=null?p:Date.now(),k=(N=n.deadlineHours)!=null?N:72,d=e.discoveredAt+k*36e5,o=n.notification,f=!!o,u=o==null?void 0:o.sentAt,c=(f?u:s)>d,h={deadline:d,hoursSinceDiscovery:Math.round((s-e.discoveredAt)/36e5),notified:f,notifiedAt:u,withinDeadline:!c,hoursRemaining:Math.round((d-s)/36e5),overdue:c,requiresDelayJustification:c},b=[{id:"circumstances",label:"Description of the circumstances of the breach",section:"GAID 2025 Art. 33(5)(a)",satisfied:t(e.description)},{id:"occurrence",label:"Date or time period of the breach",section:"GAID 2025 Art. 33(5)(b)",satisfied:m(e.occurredAt)},{id:"personalInfo",label:"Description of the personal data involved",section:"GAID 2025 Art. 33(5)(c)",satisfied:C(e.dataTypes)},{id:"riskOfHarm",label:"Assessment of the risk of harm to data subjects",section:"GAID 2025 Art. 33(5)(d)",satisfied:t(e.likelyConsequences)},{id:"numberAtRisk",label:"Estimated number of data subjects at risk of significant harm",section:"GAID 2025 Art. 33(5)(e)",satisfied:m(e.estimatedAffectedSubjects)},{id:"mitigation",label:"Steps taken to reduce the risk of harm",section:"GAID 2025 Art. 33(5)(f)",satisfied:t(e.mitigationMeasures)},{id:"notifySteps",label:"Steps taken to notify affected data subjects",section:"GAID 2025 Art. 33(5)(g)",satisfied:t(e.initialActions)},{id:"contactPoint",label:"Name and contact details of a contact point",section:"GAID 2025 Art. 33(5)(h)",satisfied:R(e.dpoContact)},{id:"dataSubjectCategories",label:"Categories of data subjects concerned",section:"NDPA 2023 S. 40(2)",satisfied:C(e.dataSubjectCategories)},{id:"recordCount",label:"Approximate number of personal data records concerned",section:"NDPA 2023 S. 40(2)",satisfied:m(e.approximateRecordCount)}],l=(y=(S=n.highRisk)!=null?S:(D=n.assessment)==null?void 0:D.highRisksToRightsAndFreedoms)!=null?y:false,A=l?[{id:"dsNature",label:"Nature and context of the breach in plain language",section:"NDPA 2023 S. 40(3)",satisfied:t(e.description)},{id:"dsConsequences",label:"Likely consequences of the breach",section:"NDPA 2023 S. 40(3)",satisfied:t(e.likelyConsequences)},{id:"dsMeasures",label:"Safeguards and measures data subjects can take",section:"NDPA 2023 S. 40(3)",satisfied:t(e.mitigationMeasures)},{id:"dsContact",label:"Contact point for data subjects",section:"NDPA 2023 S. 40(3)",satisfied:R(e.dpoContact)}]:[],r=[...b,...A],B=r.filter(i=>i.satisfied).length,j=Math.round(B/r.length*100),g=r.filter(i=>!i.satisfied).map(i=>i.label),I=g.length===0,a=[];for(let i of r.filter(P=>!P.satisfied))a.push(`Add: ${i.label} (${i.section}).`);return c?a.push("The 72-hour notification deadline has passed \u2014 notify the NDPC now and state the reasons for the delay; phased reporting is permitted where complete details are not yet available (NDPA S. 40(2))."):f||a.push(`${Math.max(0,h.hoursRemaining)} hour(s) remain to notify the NDPC within the 72-hour window (NDPA S. 40(2)).`),l&&a.push("High risk to data subjects \u2014 communicate the breach to affected data subjects immediately, in plain and clear language (NDPA S. 40(3))."),{complete:I,completeness:j,notificationToCommission:b,dataSubjectCommunication:A,dataSubjectCommunicationRequired:l,timing:h,missing:g,recommendations:a,asOf:s}}export{M as a};
@@ -0,0 +1 @@
1
+ 'use strict';var chunkRFPLZDIO_js=require('./chunk-RFPLZDIO.js');var N={ohl:200,ehl:1e3,uhl:5e3},x={UHL:25e4,EHL:1e5,OHL:1e4};function T(e,i={}){let t=chunkRFPLZDIO_js.a(chunkRFPLZDIO_js.a({},N),i.thresholds),a=chunkRFPLZDIO_js.a(chunkRFPLZDIO_js.a({},x),i.fees),r=e==null?void 0:e.dataSubjectsInSixMonths,l=typeof r=="number"&&r>0?Math.floor(r):0,n;l>t.uhl?n="UHL":l>=t.ehl?n="EHL":l>=t.ohl?n="OHL":e!=null&&e.isDesignated?n="listed":n="none";let s=n!=="none",c=n==="UHL"||n==="EHL"||n==="OHL"?a[n]:0,o=[];return n==="listed"&&o.push("Designated as a DCPMI below the volume tiers \u2014 confirm the applicable registration tier and fee with the NDPC."),s&&o.push(n==="OHL"?"OHL organisations renew their NDPC registration annually and file Compliance Audit Returns (CAR) each year.":"Register once with the NDPC, then file Compliance Audit Returns (CAR) annually."),o.push("Thresholds, fees, and filing dates follow the NDPC GAID 2025 baseline and can change \u2014 verify against current NDPC guidance before relying on them."),{tier:n,isDCPMI:s,annualFeeNGN:c,registration:{required:s,renewsAnnually:n==="OHL"},compliance:{auditReturnsAnnual:s,initialAuditWithinMonths:15},notes:o,dataSubjectsConsidered:l}}function O(e){return String(e).padStart(2,"0")}function y(e){let[i,t,a]=e.split("-").map(Number);return new Date(Date.UTC(i,t-1,a))}function H(e){return e.toISOString().slice(0,10)}function S(e,i){let[t,a,r]=e.split("-").map(Number);return H(new Date(Date.UTC(t,a-1+i,r)))}function R(){return new Date().toISOString().slice(0,10)}function U(e,i={}){var f,C,b,g,p,M,I;let t=(f=e.asOf)!=null?f:R(),a=(C=i.initialAuditWithinMonths)!=null?C:15,r=(g=(b=i.annualDeadline)==null?void 0:b.month)!=null?g:3,l=(M=(p=i.annualDeadline)==null?void 0:p.day)!=null?M:31,n=(I=i.deadlineOverrides)!=null?I:{},s=e.tier===void 0?true:e.tier!=="none",c=S(e.commencementDate,a),o=P=>{var A;return (A=n[P])!=null?A:`${P}-${O(r)}-${O(l)}`},h=Number(t.slice(0,4)),D=o(h);t>D&&(h+=1,D=o(h));let L=Math.round((y(D).getTime()-y(t).getTime())/864e5),m=t>=c,u=[];return s?(u.push("File the Compliance Audit Return with the NDPC via the NDPC Information Management Portal (NIMP)."),m&&u.push("The initial compliance-audit window has elapsed \u2014 ensure the initial audit has been conducted.")):u.push("Compliance Audit Returns apply only to Data Controllers/Processors of Major Importance."),u.push("Filing deadlines follow the NDPC GAID 2025 baseline and can be extended \u2014 verify the current deadline with the NDPC."),{applicable:s,schedule:{commencementDate:e.commencementDate,initialAuditWithinMonths:a,initialAuditDueDate:c,nextFilingDeadline:D,filingYear:h},status:{initialAuditDue:m,daysUntilNextDeadline:L},notes:u,asOf:t}}exports.a=N;exports.b=x;exports.c=T;exports.d=U;
@@ -0,0 +1 @@
1
+ 'use strict';var t=e=>typeof e=="string"&&e.trim().length>0,m=e=>typeof e=="number"&&Number.isFinite(e)&&e>=0,C=e=>Array.isArray(e)&&e.length>0,R=e=>!!e&&t(e.name)&&t(e.email);function M(e,n={}){var p,N,D,S,y;let s=(p=n.asOf)!=null?p:Date.now(),k=(N=n.deadlineHours)!=null?N:72,d=e.discoveredAt+k*36e5,o=n.notification,f=!!o,u=o==null?void 0:o.sentAt,c=(f?u:s)>d,h={deadline:d,hoursSinceDiscovery:Math.round((s-e.discoveredAt)/36e5),notified:f,notifiedAt:u,withinDeadline:!c,hoursRemaining:Math.round((d-s)/36e5),overdue:c,requiresDelayJustification:c},b=[{id:"circumstances",label:"Description of the circumstances of the breach",section:"GAID 2025 Art. 33(5)(a)",satisfied:t(e.description)},{id:"occurrence",label:"Date or time period of the breach",section:"GAID 2025 Art. 33(5)(b)",satisfied:m(e.occurredAt)},{id:"personalInfo",label:"Description of the personal data involved",section:"GAID 2025 Art. 33(5)(c)",satisfied:C(e.dataTypes)},{id:"riskOfHarm",label:"Assessment of the risk of harm to data subjects",section:"GAID 2025 Art. 33(5)(d)",satisfied:t(e.likelyConsequences)},{id:"numberAtRisk",label:"Estimated number of data subjects at risk of significant harm",section:"GAID 2025 Art. 33(5)(e)",satisfied:m(e.estimatedAffectedSubjects)},{id:"mitigation",label:"Steps taken to reduce the risk of harm",section:"GAID 2025 Art. 33(5)(f)",satisfied:t(e.mitigationMeasures)},{id:"notifySteps",label:"Steps taken to notify affected data subjects",section:"GAID 2025 Art. 33(5)(g)",satisfied:t(e.initialActions)},{id:"contactPoint",label:"Name and contact details of a contact point",section:"GAID 2025 Art. 33(5)(h)",satisfied:R(e.dpoContact)},{id:"dataSubjectCategories",label:"Categories of data subjects concerned",section:"NDPA 2023 S. 40(2)",satisfied:C(e.dataSubjectCategories)},{id:"recordCount",label:"Approximate number of personal data records concerned",section:"NDPA 2023 S. 40(2)",satisfied:m(e.approximateRecordCount)}],l=(y=(S=n.highRisk)!=null?S:(D=n.assessment)==null?void 0:D.highRisksToRightsAndFreedoms)!=null?y:false,A=l?[{id:"dsNature",label:"Nature and context of the breach in plain language",section:"NDPA 2023 S. 40(3)",satisfied:t(e.description)},{id:"dsConsequences",label:"Likely consequences of the breach",section:"NDPA 2023 S. 40(3)",satisfied:t(e.likelyConsequences)},{id:"dsMeasures",label:"Safeguards and measures data subjects can take",section:"NDPA 2023 S. 40(3)",satisfied:t(e.mitigationMeasures)},{id:"dsContact",label:"Contact point for data subjects",section:"NDPA 2023 S. 40(3)",satisfied:R(e.dpoContact)}]:[],r=[...b,...A],B=r.filter(i=>i.satisfied).length,j=Math.round(B/r.length*100),g=r.filter(i=>!i.satisfied).map(i=>i.label),I=g.length===0,a=[];for(let i of r.filter(P=>!P.satisfied))a.push(`Add: ${i.label} (${i.section}).`);return c?a.push("The 72-hour notification deadline has passed \u2014 notify the NDPC now and state the reasons for the delay; phased reporting is permitted where complete details are not yet available (NDPA S. 40(2))."):f||a.push(`${Math.max(0,h.hoursRemaining)} hour(s) remain to notify the NDPC within the 72-hour window (NDPA S. 40(2)).`),l&&a.push("High risk to data subjects \u2014 communicate the breach to affected data subjects immediately, in plain and clear language (NDPA S. 40(3))."),{complete:I,completeness:j,notificationToCommission:b,dataSubjectCommunication:A,dataSubjectCommunicationRequired:l,timing:h,missing:g,recommendations:a,asOf:s}}exports.a=M;
package/dist/core.js CHANGED
@@ -1 +1 @@
1
- 'use strict';var chunkLP5KXMBY_js=require('./chunk-LP5KXMBY.js'),chunkNUOHT3LO_js=require('./chunk-NUOHT3LO.js'),chunkOXFULQTE_js=require('./chunk-OXFULQTE.js'),chunk7TTXS7JX_js=require('./chunk-7TTXS7JX.js'),chunk3YTAOT5O_js=require('./chunk-3YTAOT5O.js'),chunkD2ZKDQVL_js=require('./chunk-D2ZKDQVL.js'),chunk6LJHLE6G_js=require('./chunk-6LJHLE6G.js'),chunkYFBDJ4FH_js=require('./chunk-YFBDJ4FH.js'),chunkWZYCBW2R_js=require('./chunk-WZYCBW2R.js'),chunk4CVBQC66_js=require('./chunk-4CVBQC66.js'),chunk3IA3KDII_js=require('./chunk-3IA3KDII.js'),chunkDKLJ5DYN_js=require('./chunk-DKLJ5DYN.js'),chunkUXUMYP4L_js=require('./chunk-UXUMYP4L.js'),chunkR2ZZMATR_js=require('./chunk-R2ZZMATR.js'),chunkTQZWJGJ2_js=require('./chunk-TQZWJGJ2.js'),chunkZVOIR4QH_js=require('./chunk-ZVOIR4QH.js'),chunkI5ZDNSX5_js=require('./chunk-I5ZDNSX5.js'),chunk7563FVMY_js=require('./chunk-7563FVMY.js');require('./chunk-RFPLZDIO.js');Object.defineProperty(exports,"arabicLocale",{enumerable:true,get:function(){return chunkLP5KXMBY_js.e}});Object.defineProperty(exports,"frenchLocale",{enumerable:true,get:function(){return chunkLP5KXMBY_js.f}});Object.defineProperty(exports,"hausaLocale",{enumerable:true,get:function(){return chunkLP5KXMBY_js.c}});Object.defineProperty(exports,"igboLocale",{enumerable:true,get:function(){return chunkLP5KXMBY_js.b}});Object.defineProperty(exports,"pidginLocale",{enumerable:true,get:function(){return chunkLP5KXMBY_js.d}});Object.defineProperty(exports,"yorubaLocale",{enumerable:true,get:function(){return chunkLP5KXMBY_js.a}});Object.defineProperty(exports,"ORG_POLICY_TEMPLATE_REGISTRY",{enumerable:true,get:function(){return chunkNUOHT3LO_js.a}});Object.defineProperty(exports,"createOrgTemplate",{enumerable:true,get:function(){return chunkNUOHT3LO_js.b}});Object.defineProperty(exports,"templateContextFor",{enumerable:true,get:function(){return chunkNUOHT3LO_js.b}});Object.defineProperty(exports,"DEFAULT_DCPMI_FEES_NGN",{enumerable:true,get:function(){return chunkOXFULQTE_js.c}});Object.defineProperty(exports,"DEFAULT_DCPMI_THRESHOLDS",{enumerable:true,get:function(){return chunkOXFULQTE_js.b}});Object.defineProperty(exports,"assessBreachNotification",{enumerable:true,get:function(){return chunkOXFULQTE_js.a}});Object.defineProperty(exports,"classifyDCPMI",{enumerable:true,get:function(){return chunkOXFULQTE_js.d}});Object.defineProperty(exports,"generateComplianceAuditReturn",{enumerable:true,get:function(){return chunkOXFULQTE_js.e}});Object.defineProperty(exports,"getComplianceScore",{enumerable:true,get:function(){return chunk7TTXS7JX_js.a}});Object.defineProperty(exports,"calculateBreachSeverity",{enumerable:true,get:function(){return chunk3YTAOT5O_js.a}});Object.defineProperty(exports,"DEFAULT_POLICY_SECTIONS",{enumerable:true,get:function(){return chunkD2ZKDQVL_js.c}});Object.defineProperty(exports,"DEFAULT_POLICY_VARIABLES",{enumerable:true,get:function(){return chunkD2ZKDQVL_js.d}});Object.defineProperty(exports,"createBusinessPolicyTemplate",{enumerable:true,get:function(){return chunkD2ZKDQVL_js.e}});Object.defineProperty(exports,"findUnfilledTokens",{enumerable:true,get:function(){return chunkD2ZKDQVL_js.a}});Object.defineProperty(exports,"generatePolicyText",{enumerable:true,get:function(){return chunkD2ZKDQVL_js.b}});Object.defineProperty(exports,"assemblePolicy",{enumerable:true,get:function(){return chunk6LJHLE6G_js.c}});Object.defineProperty(exports,"createDefaultContext",{enumerable:true,get:function(){return chunk6LJHLE6G_js.e}});Object.defineProperty(exports,"evaluatePolicyCompliance",{enumerable:true,get:function(){return chunk6LJHLE6G_js.f}});Object.defineProperty(exports,"assessTransferRisk",{enumerable:true,get:function(){return chunkYFBDJ4FH_js.h}});Object.defineProperty(exports,"getTransferMechanismDescription",{enumerable:true,get:function(){return chunkYFBDJ4FH_js.f}});Object.defineProperty(exports,"isNDPCApprovalRequired",{enumerable:true,get:function(){return chunkYFBDJ4FH_js.e}});Object.defineProperty(exports,"validateTransfer",{enumerable:true,get:function(){return chunkYFBDJ4FH_js.g}});Object.defineProperty(exports,"assessComplianceGaps",{enumerable:true,get:function(){return chunkWZYCBW2R_js.c}});Object.defineProperty(exports,"generateLawfulBasisSummary",{enumerable:true,get:function(){return chunkWZYCBW2R_js.d}});Object.defineProperty(exports,"getLawfulBasisDescription",{enumerable:true,get:function(){return chunkWZYCBW2R_js.b}});Object.defineProperty(exports,"validateProcessingActivity",{enumerable:true,get:function(){return chunkWZYCBW2R_js.a}});Object.defineProperty(exports,"exportROPAToCSV",{enumerable:true,get:function(){return chunk4CVBQC66_js.c}});Object.defineProperty(exports,"generateROPASummary",{enumerable:true,get:function(){return chunk4CVBQC66_js.b}});Object.defineProperty(exports,"identifyComplianceGaps",{enumerable:true,get:function(){return chunk4CVBQC66_js.d}});Object.defineProperty(exports,"validateProcessingRecord",{enumerable:true,get:function(){return chunk4CVBQC66_js.a}});Object.defineProperty(exports,"appendAuditEntry",{enumerable:true,get:function(){return chunk3IA3KDII_js.c}});Object.defineProperty(exports,"createAuditEntry",{enumerable:true,get:function(){return chunk3IA3KDII_js.a}});Object.defineProperty(exports,"getAuditLog",{enumerable:true,get:function(){return chunk3IA3KDII_js.b}});Object.defineProperty(exports,"validateConsentOptionsStructured",{enumerable:true,get:function(){return chunkDKLJ5DYN_js.b}});Object.defineProperty(exports,"validateConsentStructured",{enumerable:true,get:function(){return chunkDKLJ5DYN_js.a}});Object.defineProperty(exports,"sanitizeInput",{enumerable:true,get:function(){return chunkUXUMYP4L_js.a}});Object.defineProperty(exports,"formatDSRRequestStructured",{enumerable:true,get:function(){return chunkR2ZZMATR_js.b}});Object.defineProperty(exports,"validateDsrSubmissionStructured",{enumerable:true,get:function(){return chunkR2ZZMATR_js.a}});Object.defineProperty(exports,"assessDPIARisk",{enumerable:true,get:function(){return chunkTQZWJGJ2_js.a}});Object.defineProperty(exports,"LEGAL_DISCLAIMER_LONG",{enumerable:true,get:function(){return chunkZVOIR4QH_js.b}});Object.defineProperty(exports,"LEGAL_DISCLAIMER_SHORT",{enumerable:true,get:function(){return chunkZVOIR4QH_js.a}});Object.defineProperty(exports,"legalDisclaimerBlock",{enumerable:true,get:function(){return chunkZVOIR4QH_js.c}});Object.defineProperty(exports,"NDPRProvider",{enumerable:true,get:function(){return chunkI5ZDNSX5_js.a}});Object.defineProperty(exports,"useNDPRConfig",{enumerable:true,get:function(){return chunkI5ZDNSX5_js.b}});Object.defineProperty(exports,"useNDPRLocale",{enumerable:true,get:function(){return chunkI5ZDNSX5_js.c}});Object.defineProperty(exports,"defaultLocale",{enumerable:true,get:function(){return chunk7563FVMY_js.a}});Object.defineProperty(exports,"mergeLocale",{enumerable:true,get:function(){return chunk7563FVMY_js.b}});
1
+ 'use strict';var chunkLP5KXMBY_js=require('./chunk-LP5KXMBY.js'),chunkNUOHT3LO_js=require('./chunk-NUOHT3LO.js'),chunkWKY26JLT_js=require('./chunk-WKY26JLT.js'),chunkY346CURW_js=require('./chunk-Y346CURW.js'),chunk7TTXS7JX_js=require('./chunk-7TTXS7JX.js'),chunk3YTAOT5O_js=require('./chunk-3YTAOT5O.js'),chunkD2ZKDQVL_js=require('./chunk-D2ZKDQVL.js'),chunk6LJHLE6G_js=require('./chunk-6LJHLE6G.js'),chunkYFBDJ4FH_js=require('./chunk-YFBDJ4FH.js'),chunkWZYCBW2R_js=require('./chunk-WZYCBW2R.js'),chunk4CVBQC66_js=require('./chunk-4CVBQC66.js'),chunk3IA3KDII_js=require('./chunk-3IA3KDII.js'),chunkDKLJ5DYN_js=require('./chunk-DKLJ5DYN.js'),chunkUXUMYP4L_js=require('./chunk-UXUMYP4L.js'),chunkR2ZZMATR_js=require('./chunk-R2ZZMATR.js'),chunkTQZWJGJ2_js=require('./chunk-TQZWJGJ2.js'),chunkZVOIR4QH_js=require('./chunk-ZVOIR4QH.js'),chunkI5ZDNSX5_js=require('./chunk-I5ZDNSX5.js'),chunk7563FVMY_js=require('./chunk-7563FVMY.js');require('./chunk-RFPLZDIO.js');Object.defineProperty(exports,"arabicLocale",{enumerable:true,get:function(){return chunkLP5KXMBY_js.e}});Object.defineProperty(exports,"frenchLocale",{enumerable:true,get:function(){return chunkLP5KXMBY_js.f}});Object.defineProperty(exports,"hausaLocale",{enumerable:true,get:function(){return chunkLP5KXMBY_js.c}});Object.defineProperty(exports,"igboLocale",{enumerable:true,get:function(){return chunkLP5KXMBY_js.b}});Object.defineProperty(exports,"pidginLocale",{enumerable:true,get:function(){return chunkLP5KXMBY_js.d}});Object.defineProperty(exports,"yorubaLocale",{enumerable:true,get:function(){return chunkLP5KXMBY_js.a}});Object.defineProperty(exports,"ORG_POLICY_TEMPLATE_REGISTRY",{enumerable:true,get:function(){return chunkNUOHT3LO_js.a}});Object.defineProperty(exports,"createOrgTemplate",{enumerable:true,get:function(){return chunkNUOHT3LO_js.b}});Object.defineProperty(exports,"templateContextFor",{enumerable:true,get:function(){return chunkNUOHT3LO_js.b}});Object.defineProperty(exports,"DEFAULT_DCPMI_FEES_NGN",{enumerable:true,get:function(){return chunkWKY26JLT_js.b}});Object.defineProperty(exports,"DEFAULT_DCPMI_THRESHOLDS",{enumerable:true,get:function(){return chunkWKY26JLT_js.a}});Object.defineProperty(exports,"classifyDCPMI",{enumerable:true,get:function(){return chunkWKY26JLT_js.c}});Object.defineProperty(exports,"generateComplianceAuditReturn",{enumerable:true,get:function(){return chunkWKY26JLT_js.d}});Object.defineProperty(exports,"assessBreachNotification",{enumerable:true,get:function(){return chunkY346CURW_js.a}});Object.defineProperty(exports,"getComplianceScore",{enumerable:true,get:function(){return chunk7TTXS7JX_js.a}});Object.defineProperty(exports,"calculateBreachSeverity",{enumerable:true,get:function(){return chunk3YTAOT5O_js.a}});Object.defineProperty(exports,"DEFAULT_POLICY_SECTIONS",{enumerable:true,get:function(){return chunkD2ZKDQVL_js.c}});Object.defineProperty(exports,"DEFAULT_POLICY_VARIABLES",{enumerable:true,get:function(){return chunkD2ZKDQVL_js.d}});Object.defineProperty(exports,"createBusinessPolicyTemplate",{enumerable:true,get:function(){return chunkD2ZKDQVL_js.e}});Object.defineProperty(exports,"findUnfilledTokens",{enumerable:true,get:function(){return chunkD2ZKDQVL_js.a}});Object.defineProperty(exports,"generatePolicyText",{enumerable:true,get:function(){return chunkD2ZKDQVL_js.b}});Object.defineProperty(exports,"assemblePolicy",{enumerable:true,get:function(){return chunk6LJHLE6G_js.c}});Object.defineProperty(exports,"createDefaultContext",{enumerable:true,get:function(){return chunk6LJHLE6G_js.e}});Object.defineProperty(exports,"evaluatePolicyCompliance",{enumerable:true,get:function(){return chunk6LJHLE6G_js.f}});Object.defineProperty(exports,"assessTransferRisk",{enumerable:true,get:function(){return chunkYFBDJ4FH_js.h}});Object.defineProperty(exports,"getTransferMechanismDescription",{enumerable:true,get:function(){return chunkYFBDJ4FH_js.f}});Object.defineProperty(exports,"isNDPCApprovalRequired",{enumerable:true,get:function(){return chunkYFBDJ4FH_js.e}});Object.defineProperty(exports,"validateTransfer",{enumerable:true,get:function(){return chunkYFBDJ4FH_js.g}});Object.defineProperty(exports,"assessComplianceGaps",{enumerable:true,get:function(){return chunkWZYCBW2R_js.c}});Object.defineProperty(exports,"generateLawfulBasisSummary",{enumerable:true,get:function(){return chunkWZYCBW2R_js.d}});Object.defineProperty(exports,"getLawfulBasisDescription",{enumerable:true,get:function(){return chunkWZYCBW2R_js.b}});Object.defineProperty(exports,"validateProcessingActivity",{enumerable:true,get:function(){return chunkWZYCBW2R_js.a}});Object.defineProperty(exports,"exportROPAToCSV",{enumerable:true,get:function(){return chunk4CVBQC66_js.c}});Object.defineProperty(exports,"generateROPASummary",{enumerable:true,get:function(){return chunk4CVBQC66_js.b}});Object.defineProperty(exports,"identifyComplianceGaps",{enumerable:true,get:function(){return chunk4CVBQC66_js.d}});Object.defineProperty(exports,"validateProcessingRecord",{enumerable:true,get:function(){return chunk4CVBQC66_js.a}});Object.defineProperty(exports,"appendAuditEntry",{enumerable:true,get:function(){return chunk3IA3KDII_js.c}});Object.defineProperty(exports,"createAuditEntry",{enumerable:true,get:function(){return chunk3IA3KDII_js.a}});Object.defineProperty(exports,"getAuditLog",{enumerable:true,get:function(){return chunk3IA3KDII_js.b}});Object.defineProperty(exports,"validateConsentOptionsStructured",{enumerable:true,get:function(){return chunkDKLJ5DYN_js.b}});Object.defineProperty(exports,"validateConsentStructured",{enumerable:true,get:function(){return chunkDKLJ5DYN_js.a}});Object.defineProperty(exports,"sanitizeInput",{enumerable:true,get:function(){return chunkUXUMYP4L_js.a}});Object.defineProperty(exports,"formatDSRRequestStructured",{enumerable:true,get:function(){return chunkR2ZZMATR_js.b}});Object.defineProperty(exports,"validateDsrSubmissionStructured",{enumerable:true,get:function(){return chunkR2ZZMATR_js.a}});Object.defineProperty(exports,"assessDPIARisk",{enumerable:true,get:function(){return chunkTQZWJGJ2_js.a}});Object.defineProperty(exports,"LEGAL_DISCLAIMER_LONG",{enumerable:true,get:function(){return chunkZVOIR4QH_js.b}});Object.defineProperty(exports,"LEGAL_DISCLAIMER_SHORT",{enumerable:true,get:function(){return chunkZVOIR4QH_js.a}});Object.defineProperty(exports,"legalDisclaimerBlock",{enumerable:true,get:function(){return chunkZVOIR4QH_js.c}});Object.defineProperty(exports,"NDPRProvider",{enumerable:true,get:function(){return chunkI5ZDNSX5_js.a}});Object.defineProperty(exports,"useNDPRConfig",{enumerable:true,get:function(){return chunkI5ZDNSX5_js.b}});Object.defineProperty(exports,"useNDPRLocale",{enumerable:true,get:function(){return chunkI5ZDNSX5_js.c}});Object.defineProperty(exports,"defaultLocale",{enumerable:true,get:function(){return chunk7563FVMY_js.a}});Object.defineProperty(exports,"mergeLocale",{enumerable:true,get:function(){return chunk7563FVMY_js.b}});
package/dist/core.mjs CHANGED
@@ -1 +1 @@
1
- export{e as arabicLocale,f as frenchLocale,c as hausaLocale,b as igboLocale,d as pidginLocale,a as yorubaLocale}from'./chunk-KUI5W44P.mjs';export{a as ORG_POLICY_TEMPLATE_REGISTRY,b as createOrgTemplate,b as templateContextFor}from'./chunk-CWY2FMIC.mjs';export{c as DEFAULT_DCPMI_FEES_NGN,b as DEFAULT_DCPMI_THRESHOLDS,a as assessBreachNotification,d as classifyDCPMI,e as generateComplianceAuditReturn}from'./chunk-KOHFQIV4.mjs';export{a as getComplianceScore}from'./chunk-6A7M4CGJ.mjs';export{a as calculateBreachSeverity}from'./chunk-WTGKZX7J.mjs';export{c as DEFAULT_POLICY_SECTIONS,d as DEFAULT_POLICY_VARIABLES,e as createBusinessPolicyTemplate,a as findUnfilledTokens,b as generatePolicyText}from'./chunk-NBQQ2GN3.mjs';export{c as assemblePolicy,e as createDefaultContext,f as evaluatePolicyCompliance}from'./chunk-BIJSMSUU.mjs';export{h as assessTransferRisk,f as getTransferMechanismDescription,e as isNDPCApprovalRequired,g as validateTransfer}from'./chunk-7BJXI2HI.mjs';export{c as assessComplianceGaps,d as generateLawfulBasisSummary,b as getLawfulBasisDescription,a as validateProcessingActivity}from'./chunk-LWIKDDSU.mjs';export{c as exportROPAToCSV,b as generateROPASummary,d as identifyComplianceGaps,a as validateProcessingRecord}from'./chunk-XP5PL6K7.mjs';export{c as appendAuditEntry,a as createAuditEntry,b as getAuditLog}from'./chunk-V7UFP6QU.mjs';export{b as validateConsentOptionsStructured,a as validateConsentStructured}from'./chunk-R3ZKV2J7.mjs';export{a as sanitizeInput}from'./chunk-EWVK45Z3.mjs';export{b as formatDSRRequestStructured,a as validateDsrSubmissionStructured}from'./chunk-RRVML7CU.mjs';export{a as assessDPIARisk}from'./chunk-LRRENTT5.mjs';export{b as LEGAL_DISCLAIMER_LONG,a as LEGAL_DISCLAIMER_SHORT,c as legalDisclaimerBlock}from'./chunk-ITCY2Z66.mjs';export{a as NDPRProvider,b as useNDPRConfig,c as useNDPRLocale}from'./chunk-PHA3YMFO.mjs';export{a as defaultLocale,b as mergeLocale}from'./chunk-5LJ652AH.mjs';import'./chunk-ZJYULEER.mjs';
1
+ export{e as arabicLocale,f as frenchLocale,c as hausaLocale,b as igboLocale,d as pidginLocale,a as yorubaLocale}from'./chunk-KUI5W44P.mjs';export{a as ORG_POLICY_TEMPLATE_REGISTRY,b as createOrgTemplate,b as templateContextFor}from'./chunk-CWY2FMIC.mjs';export{b as DEFAULT_DCPMI_FEES_NGN,a as DEFAULT_DCPMI_THRESHOLDS,c as classifyDCPMI,d as generateComplianceAuditReturn}from'./chunk-SZXHNJGG.mjs';export{a as assessBreachNotification}from'./chunk-WJSUVPYX.mjs';export{a as getComplianceScore}from'./chunk-6A7M4CGJ.mjs';export{a as calculateBreachSeverity}from'./chunk-WTGKZX7J.mjs';export{c as DEFAULT_POLICY_SECTIONS,d as DEFAULT_POLICY_VARIABLES,e as createBusinessPolicyTemplate,a as findUnfilledTokens,b as generatePolicyText}from'./chunk-NBQQ2GN3.mjs';export{c as assemblePolicy,e as createDefaultContext,f as evaluatePolicyCompliance}from'./chunk-BIJSMSUU.mjs';export{h as assessTransferRisk,f as getTransferMechanismDescription,e as isNDPCApprovalRequired,g as validateTransfer}from'./chunk-7BJXI2HI.mjs';export{c as assessComplianceGaps,d as generateLawfulBasisSummary,b as getLawfulBasisDescription,a as validateProcessingActivity}from'./chunk-LWIKDDSU.mjs';export{c as exportROPAToCSV,b as generateROPASummary,d as identifyComplianceGaps,a as validateProcessingRecord}from'./chunk-XP5PL6K7.mjs';export{c as appendAuditEntry,a as createAuditEntry,b as getAuditLog}from'./chunk-V7UFP6QU.mjs';export{b as validateConsentOptionsStructured,a as validateConsentStructured}from'./chunk-R3ZKV2J7.mjs';export{a as sanitizeInput}from'./chunk-EWVK45Z3.mjs';export{b as formatDSRRequestStructured,a as validateDsrSubmissionStructured}from'./chunk-RRVML7CU.mjs';export{a as assessDPIARisk}from'./chunk-LRRENTT5.mjs';export{b as LEGAL_DISCLAIMER_LONG,a as LEGAL_DISCLAIMER_SHORT,c as legalDisclaimerBlock}from'./chunk-ITCY2Z66.mjs';export{a as NDPRProvider,b as useNDPRConfig,c as useNDPRLocale}from'./chunk-PHA3YMFO.mjs';export{a as defaultLocale,b as mergeLocale}from'./chunk-5LJ652AH.mjs';import'./chunk-ZJYULEER.mjs';
package/dist/headless.js CHANGED
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- 'use strict';require('./chunk-OVW5ASY3.js');var chunkGYLUTVKB_js=require('./chunk-GYLUTVKB.js'),chunkEHQVTFYO_js=require('./chunk-EHQVTFYO.js'),chunkRC3XFXTJ_js=require('./chunk-RC3XFXTJ.js'),chunkQHW4UKGJ_js=require('./chunk-QHW4UKGJ.js'),chunkIRRUYR6M_js=require('./chunk-IRRUYR6M.js'),chunkHHK5LHEG_js=require('./chunk-HHK5LHEG.js'),chunkTLIHFGIJ_js=require('./chunk-TLIHFGIJ.js');require('./chunk-OXFULQTE.js'),require('./chunk-JS7SYL5P.js'),require('./chunk-7TTXS7JX.js'),require('./chunk-3YTAOT5O.js'),require('./chunk-D2ZKDQVL.js'),require('./chunk-6LJHLE6G.js'),require('./chunk-YFBDJ4FH.js'),require('./chunk-WZYCBW2R.js'),require('./chunk-4CVBQC66.js');var chunkQKXGVT2Q_js=require('./chunk-QKXGVT2Q.js'),chunkL2VO3MEJ_js=require('./chunk-L2VO3MEJ.js');require('./chunk-C2KEXHRX.js'),require('./chunk-DKLJ5DYN.js');var chunkTVA6D6S4_js=require('./chunk-TVA6D6S4.js');require('./chunk-R2ZZMATR.js');var chunkJLQT3W3E_js=require('./chunk-JLQT3W3E.js');require('./chunk-TQZWJGJ2.js'),require('./chunk-ZVOIR4QH.js'),require('./chunk-VWED6UTN.js'),require('./chunk-RFPLZDIO.js');Object.defineProperty(exports,"useBreachNotificationAssessment",{enumerable:true,get:function(){return chunkGYLUTVKB_js.a}});Object.defineProperty(exports,"useComplianceAuditReturn",{enumerable:true,get:function(){return chunkGYLUTVKB_js.d}});Object.defineProperty(exports,"useComplianceScore",{enumerable:true,get:function(){return chunkGYLUTVKB_js.b}});Object.defineProperty(exports,"useDCPMI",{enumerable:true,get:function(){return chunkGYLUTVKB_js.c}});Object.defineProperty(exports,"useBreach",{enumerable:true,get:function(){return chunkEHQVTFYO_js.a}});Object.defineProperty(exports,"useDefaultPrivacyPolicy",{enumerable:true,get:function(){return chunkRC3XFXTJ_js.b}});Object.defineProperty(exports,"usePrivacyPolicy",{enumerable:true,get:function(){return chunkRC3XFXTJ_js.a}});Object.defineProperty(exports,"useAdaptivePolicyWizard",{enumerable:true,get:function(){return chunkQHW4UKGJ_js.a}});Object.defineProperty(exports,"useLawfulBasis",{enumerable:true,get:function(){return chunkIRRUYR6M_js.a}});Object.defineProperty(exports,"useCrossBorderTransfer",{enumerable:true,get:function(){return chunkHHK5LHEG_js.a}});Object.defineProperty(exports,"useROPA",{enumerable:true,get:function(){return chunkTLIHFGIJ_js.a}});Object.defineProperty(exports,"useConsent",{enumerable:true,get:function(){return chunkQKXGVT2Q_js.a}});Object.defineProperty(exports,"useFocusTrap",{enumerable:true,get:function(){return chunkL2VO3MEJ_js.a}});Object.defineProperty(exports,"useDSR",{enumerable:true,get:function(){return chunkTVA6D6S4_js.a}});Object.defineProperty(exports,"useDPIA",{enumerable:true,get:function(){return chunkJLQT3W3E_js.a}});
2
+ 'use strict';require('./chunk-OVW5ASY3.js');var chunkUFTDY43A_js=require('./chunk-UFTDY43A.js'),chunkEHQVTFYO_js=require('./chunk-EHQVTFYO.js'),chunkRC3XFXTJ_js=require('./chunk-RC3XFXTJ.js'),chunkQHW4UKGJ_js=require('./chunk-QHW4UKGJ.js'),chunkIRRUYR6M_js=require('./chunk-IRRUYR6M.js'),chunkHHK5LHEG_js=require('./chunk-HHK5LHEG.js'),chunkTLIHFGIJ_js=require('./chunk-TLIHFGIJ.js');require('./chunk-WKY26JLT.js'),require('./chunk-Y346CURW.js'),require('./chunk-JS7SYL5P.js'),require('./chunk-7TTXS7JX.js'),require('./chunk-3YTAOT5O.js'),require('./chunk-D2ZKDQVL.js'),require('./chunk-6LJHLE6G.js'),require('./chunk-YFBDJ4FH.js'),require('./chunk-WZYCBW2R.js'),require('./chunk-4CVBQC66.js');var chunkQKXGVT2Q_js=require('./chunk-QKXGVT2Q.js'),chunkL2VO3MEJ_js=require('./chunk-L2VO3MEJ.js');require('./chunk-C2KEXHRX.js'),require('./chunk-DKLJ5DYN.js');var chunkTVA6D6S4_js=require('./chunk-TVA6D6S4.js');require('./chunk-R2ZZMATR.js');var chunkJLQT3W3E_js=require('./chunk-JLQT3W3E.js');require('./chunk-TQZWJGJ2.js'),require('./chunk-ZVOIR4QH.js'),require('./chunk-VWED6UTN.js'),require('./chunk-RFPLZDIO.js');Object.defineProperty(exports,"useBreachNotificationAssessment",{enumerable:true,get:function(){return chunkUFTDY43A_js.a}});Object.defineProperty(exports,"useComplianceAuditReturn",{enumerable:true,get:function(){return chunkUFTDY43A_js.d}});Object.defineProperty(exports,"useComplianceScore",{enumerable:true,get:function(){return chunkUFTDY43A_js.b}});Object.defineProperty(exports,"useDCPMI",{enumerable:true,get:function(){return chunkUFTDY43A_js.c}});Object.defineProperty(exports,"useBreach",{enumerable:true,get:function(){return chunkEHQVTFYO_js.a}});Object.defineProperty(exports,"useDefaultPrivacyPolicy",{enumerable:true,get:function(){return chunkRC3XFXTJ_js.b}});Object.defineProperty(exports,"usePrivacyPolicy",{enumerable:true,get:function(){return chunkRC3XFXTJ_js.a}});Object.defineProperty(exports,"useAdaptivePolicyWizard",{enumerable:true,get:function(){return chunkQHW4UKGJ_js.a}});Object.defineProperty(exports,"useLawfulBasis",{enumerable:true,get:function(){return chunkIRRUYR6M_js.a}});Object.defineProperty(exports,"useCrossBorderTransfer",{enumerable:true,get:function(){return chunkHHK5LHEG_js.a}});Object.defineProperty(exports,"useROPA",{enumerable:true,get:function(){return chunkTLIHFGIJ_js.a}});Object.defineProperty(exports,"useConsent",{enumerable:true,get:function(){return chunkQKXGVT2Q_js.a}});Object.defineProperty(exports,"useFocusTrap",{enumerable:true,get:function(){return chunkL2VO3MEJ_js.a}});Object.defineProperty(exports,"useDSR",{enumerable:true,get:function(){return chunkTVA6D6S4_js.a}});Object.defineProperty(exports,"useDPIA",{enumerable:true,get:function(){return chunkJLQT3W3E_js.a}});
package/dist/headless.mjs CHANGED
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- import'./chunk-YQTZWPOS.mjs';export{a as useBreachNotificationAssessment,d as useComplianceAuditReturn,b as useComplianceScore,c as useDCPMI}from'./chunk-NKFTLFPD.mjs';export{a as useBreach}from'./chunk-RFXGD5NE.mjs';export{b as useDefaultPrivacyPolicy,a as usePrivacyPolicy}from'./chunk-UVXS7KRV.mjs';export{a as useAdaptivePolicyWizard}from'./chunk-KE2FZH2V.mjs';export{a as useLawfulBasis}from'./chunk-B6BRD5SL.mjs';export{a as useCrossBorderTransfer}from'./chunk-KDAZQO3N.mjs';export{a as useROPA}from'./chunk-FRMVSG4N.mjs';import'./chunk-KOHFQIV4.mjs';import'./chunk-IVSNHT24.mjs';import'./chunk-6A7M4CGJ.mjs';import'./chunk-WTGKZX7J.mjs';import'./chunk-NBQQ2GN3.mjs';import'./chunk-BIJSMSUU.mjs';import'./chunk-7BJXI2HI.mjs';import'./chunk-LWIKDDSU.mjs';import'./chunk-XP5PL6K7.mjs';export{a as useConsent}from'./chunk-PQ5IPUJN.mjs';export{a as useFocusTrap}from'./chunk-YTU4FNM2.mjs';import'./chunk-XC3DLYEG.mjs';import'./chunk-R3ZKV2J7.mjs';export{a as useDSR}from'./chunk-ZSRO4L3C.mjs';import'./chunk-RRVML7CU.mjs';export{a as useDPIA}from'./chunk-I3V3ITN7.mjs';import'./chunk-LRRENTT5.mjs';import'./chunk-ITCY2Z66.mjs';import'./chunk-DBZSN4WP.mjs';import'./chunk-ZJYULEER.mjs';
2
+ import'./chunk-YQTZWPOS.mjs';export{a as useBreachNotificationAssessment,d as useComplianceAuditReturn,b as useComplianceScore,c as useDCPMI}from'./chunk-SDV2C5OT.mjs';export{a as useBreach}from'./chunk-RFXGD5NE.mjs';export{b as useDefaultPrivacyPolicy,a as usePrivacyPolicy}from'./chunk-UVXS7KRV.mjs';export{a as useAdaptivePolicyWizard}from'./chunk-KE2FZH2V.mjs';export{a as useLawfulBasis}from'./chunk-B6BRD5SL.mjs';export{a as useCrossBorderTransfer}from'./chunk-KDAZQO3N.mjs';export{a as useROPA}from'./chunk-FRMVSG4N.mjs';import'./chunk-SZXHNJGG.mjs';import'./chunk-WJSUVPYX.mjs';import'./chunk-IVSNHT24.mjs';import'./chunk-6A7M4CGJ.mjs';import'./chunk-WTGKZX7J.mjs';import'./chunk-NBQQ2GN3.mjs';import'./chunk-BIJSMSUU.mjs';import'./chunk-7BJXI2HI.mjs';import'./chunk-LWIKDDSU.mjs';import'./chunk-XP5PL6K7.mjs';export{a as useConsent}from'./chunk-PQ5IPUJN.mjs';export{a as useFocusTrap}from'./chunk-YTU4FNM2.mjs';import'./chunk-XC3DLYEG.mjs';import'./chunk-R3ZKV2J7.mjs';export{a as useDSR}from'./chunk-ZSRO4L3C.mjs';import'./chunk-RRVML7CU.mjs';export{a as useDPIA}from'./chunk-I3V3ITN7.mjs';import'./chunk-LRRENTT5.mjs';import'./chunk-ITCY2Z66.mjs';import'./chunk-DBZSN4WP.mjs';import'./chunk-ZJYULEER.mjs';
package/dist/hooks.js CHANGED
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- 'use strict';require('./chunk-OVW5ASY3.js');var chunkGYLUTVKB_js=require('./chunk-GYLUTVKB.js'),chunkEHQVTFYO_js=require('./chunk-EHQVTFYO.js'),chunkRC3XFXTJ_js=require('./chunk-RC3XFXTJ.js'),chunkQHW4UKGJ_js=require('./chunk-QHW4UKGJ.js'),chunkIRRUYR6M_js=require('./chunk-IRRUYR6M.js'),chunkHHK5LHEG_js=require('./chunk-HHK5LHEG.js'),chunkTLIHFGIJ_js=require('./chunk-TLIHFGIJ.js');require('./chunk-OXFULQTE.js'),require('./chunk-JS7SYL5P.js'),require('./chunk-7TTXS7JX.js'),require('./chunk-3YTAOT5O.js'),require('./chunk-D2ZKDQVL.js'),require('./chunk-6LJHLE6G.js'),require('./chunk-YFBDJ4FH.js'),require('./chunk-WZYCBW2R.js'),require('./chunk-4CVBQC66.js');var chunkQKXGVT2Q_js=require('./chunk-QKXGVT2Q.js'),chunkL2VO3MEJ_js=require('./chunk-L2VO3MEJ.js');require('./chunk-C2KEXHRX.js'),require('./chunk-DKLJ5DYN.js');var chunkTVA6D6S4_js=require('./chunk-TVA6D6S4.js');require('./chunk-R2ZZMATR.js');var chunkJLQT3W3E_js=require('./chunk-JLQT3W3E.js');require('./chunk-TQZWJGJ2.js'),require('./chunk-ZVOIR4QH.js'),require('./chunk-VWED6UTN.js'),require('./chunk-RFPLZDIO.js');Object.defineProperty(exports,"useBreachNotificationAssessment",{enumerable:true,get:function(){return chunkGYLUTVKB_js.a}});Object.defineProperty(exports,"useComplianceAuditReturn",{enumerable:true,get:function(){return chunkGYLUTVKB_js.d}});Object.defineProperty(exports,"useComplianceScore",{enumerable:true,get:function(){return chunkGYLUTVKB_js.b}});Object.defineProperty(exports,"useDCPMI",{enumerable:true,get:function(){return chunkGYLUTVKB_js.c}});Object.defineProperty(exports,"useBreach",{enumerable:true,get:function(){return chunkEHQVTFYO_js.a}});Object.defineProperty(exports,"useDefaultPrivacyPolicy",{enumerable:true,get:function(){return chunkRC3XFXTJ_js.b}});Object.defineProperty(exports,"usePrivacyPolicy",{enumerable:true,get:function(){return chunkRC3XFXTJ_js.a}});Object.defineProperty(exports,"useAdaptivePolicyWizard",{enumerable:true,get:function(){return chunkQHW4UKGJ_js.a}});Object.defineProperty(exports,"useLawfulBasis",{enumerable:true,get:function(){return chunkIRRUYR6M_js.a}});Object.defineProperty(exports,"useCrossBorderTransfer",{enumerable:true,get:function(){return chunkHHK5LHEG_js.a}});Object.defineProperty(exports,"useROPA",{enumerable:true,get:function(){return chunkTLIHFGIJ_js.a}});Object.defineProperty(exports,"useConsent",{enumerable:true,get:function(){return chunkQKXGVT2Q_js.a}});Object.defineProperty(exports,"useFocusTrap",{enumerable:true,get:function(){return chunkL2VO3MEJ_js.a}});Object.defineProperty(exports,"useDSR",{enumerable:true,get:function(){return chunkTVA6D6S4_js.a}});Object.defineProperty(exports,"useDPIA",{enumerable:true,get:function(){return chunkJLQT3W3E_js.a}});
2
+ 'use strict';require('./chunk-OVW5ASY3.js');var chunkUFTDY43A_js=require('./chunk-UFTDY43A.js'),chunkEHQVTFYO_js=require('./chunk-EHQVTFYO.js'),chunkRC3XFXTJ_js=require('./chunk-RC3XFXTJ.js'),chunkQHW4UKGJ_js=require('./chunk-QHW4UKGJ.js'),chunkIRRUYR6M_js=require('./chunk-IRRUYR6M.js'),chunkHHK5LHEG_js=require('./chunk-HHK5LHEG.js'),chunkTLIHFGIJ_js=require('./chunk-TLIHFGIJ.js');require('./chunk-WKY26JLT.js'),require('./chunk-Y346CURW.js'),require('./chunk-JS7SYL5P.js'),require('./chunk-7TTXS7JX.js'),require('./chunk-3YTAOT5O.js'),require('./chunk-D2ZKDQVL.js'),require('./chunk-6LJHLE6G.js'),require('./chunk-YFBDJ4FH.js'),require('./chunk-WZYCBW2R.js'),require('./chunk-4CVBQC66.js');var chunkQKXGVT2Q_js=require('./chunk-QKXGVT2Q.js'),chunkL2VO3MEJ_js=require('./chunk-L2VO3MEJ.js');require('./chunk-C2KEXHRX.js'),require('./chunk-DKLJ5DYN.js');var chunkTVA6D6S4_js=require('./chunk-TVA6D6S4.js');require('./chunk-R2ZZMATR.js');var chunkJLQT3W3E_js=require('./chunk-JLQT3W3E.js');require('./chunk-TQZWJGJ2.js'),require('./chunk-ZVOIR4QH.js'),require('./chunk-VWED6UTN.js'),require('./chunk-RFPLZDIO.js');Object.defineProperty(exports,"useBreachNotificationAssessment",{enumerable:true,get:function(){return chunkUFTDY43A_js.a}});Object.defineProperty(exports,"useComplianceAuditReturn",{enumerable:true,get:function(){return chunkUFTDY43A_js.d}});Object.defineProperty(exports,"useComplianceScore",{enumerable:true,get:function(){return chunkUFTDY43A_js.b}});Object.defineProperty(exports,"useDCPMI",{enumerable:true,get:function(){return chunkUFTDY43A_js.c}});Object.defineProperty(exports,"useBreach",{enumerable:true,get:function(){return chunkEHQVTFYO_js.a}});Object.defineProperty(exports,"useDefaultPrivacyPolicy",{enumerable:true,get:function(){return chunkRC3XFXTJ_js.b}});Object.defineProperty(exports,"usePrivacyPolicy",{enumerable:true,get:function(){return chunkRC3XFXTJ_js.a}});Object.defineProperty(exports,"useAdaptivePolicyWizard",{enumerable:true,get:function(){return chunkQHW4UKGJ_js.a}});Object.defineProperty(exports,"useLawfulBasis",{enumerable:true,get:function(){return chunkIRRUYR6M_js.a}});Object.defineProperty(exports,"useCrossBorderTransfer",{enumerable:true,get:function(){return chunkHHK5LHEG_js.a}});Object.defineProperty(exports,"useROPA",{enumerable:true,get:function(){return chunkTLIHFGIJ_js.a}});Object.defineProperty(exports,"useConsent",{enumerable:true,get:function(){return chunkQKXGVT2Q_js.a}});Object.defineProperty(exports,"useFocusTrap",{enumerable:true,get:function(){return chunkL2VO3MEJ_js.a}});Object.defineProperty(exports,"useDSR",{enumerable:true,get:function(){return chunkTVA6D6S4_js.a}});Object.defineProperty(exports,"useDPIA",{enumerable:true,get:function(){return chunkJLQT3W3E_js.a}});
package/dist/hooks.mjs CHANGED
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- import'./chunk-YQTZWPOS.mjs';export{a as useBreachNotificationAssessment,d as useComplianceAuditReturn,b as useComplianceScore,c as useDCPMI}from'./chunk-NKFTLFPD.mjs';export{a as useBreach}from'./chunk-RFXGD5NE.mjs';export{b as useDefaultPrivacyPolicy,a as usePrivacyPolicy}from'./chunk-UVXS7KRV.mjs';export{a as useAdaptivePolicyWizard}from'./chunk-KE2FZH2V.mjs';export{a as useLawfulBasis}from'./chunk-B6BRD5SL.mjs';export{a as useCrossBorderTransfer}from'./chunk-KDAZQO3N.mjs';export{a as useROPA}from'./chunk-FRMVSG4N.mjs';import'./chunk-KOHFQIV4.mjs';import'./chunk-IVSNHT24.mjs';import'./chunk-6A7M4CGJ.mjs';import'./chunk-WTGKZX7J.mjs';import'./chunk-NBQQ2GN3.mjs';import'./chunk-BIJSMSUU.mjs';import'./chunk-7BJXI2HI.mjs';import'./chunk-LWIKDDSU.mjs';import'./chunk-XP5PL6K7.mjs';export{a as useConsent}from'./chunk-PQ5IPUJN.mjs';export{a as useFocusTrap}from'./chunk-YTU4FNM2.mjs';import'./chunk-XC3DLYEG.mjs';import'./chunk-R3ZKV2J7.mjs';export{a as useDSR}from'./chunk-ZSRO4L3C.mjs';import'./chunk-RRVML7CU.mjs';export{a as useDPIA}from'./chunk-I3V3ITN7.mjs';import'./chunk-LRRENTT5.mjs';import'./chunk-ITCY2Z66.mjs';import'./chunk-DBZSN4WP.mjs';import'./chunk-ZJYULEER.mjs';
2
+ import'./chunk-YQTZWPOS.mjs';export{a as useBreachNotificationAssessment,d as useComplianceAuditReturn,b as useComplianceScore,c as useDCPMI}from'./chunk-SDV2C5OT.mjs';export{a as useBreach}from'./chunk-RFXGD5NE.mjs';export{b as useDefaultPrivacyPolicy,a as usePrivacyPolicy}from'./chunk-UVXS7KRV.mjs';export{a as useAdaptivePolicyWizard}from'./chunk-KE2FZH2V.mjs';export{a as useLawfulBasis}from'./chunk-B6BRD5SL.mjs';export{a as useCrossBorderTransfer}from'./chunk-KDAZQO3N.mjs';export{a as useROPA}from'./chunk-FRMVSG4N.mjs';import'./chunk-SZXHNJGG.mjs';import'./chunk-WJSUVPYX.mjs';import'./chunk-IVSNHT24.mjs';import'./chunk-6A7M4CGJ.mjs';import'./chunk-WTGKZX7J.mjs';import'./chunk-NBQQ2GN3.mjs';import'./chunk-BIJSMSUU.mjs';import'./chunk-7BJXI2HI.mjs';import'./chunk-LWIKDDSU.mjs';import'./chunk-XP5PL6K7.mjs';export{a as useConsent}from'./chunk-PQ5IPUJN.mjs';export{a as useFocusTrap}from'./chunk-YTU4FNM2.mjs';import'./chunk-XC3DLYEG.mjs';import'./chunk-R3ZKV2J7.mjs';export{a as useDSR}from'./chunk-ZSRO4L3C.mjs';import'./chunk-RRVML7CU.mjs';export{a as useDPIA}from'./chunk-I3V3ITN7.mjs';import'./chunk-LRRENTT5.mjs';import'./chunk-ITCY2Z66.mjs';import'./chunk-DBZSN4WP.mjs';import'./chunk-ZJYULEER.mjs';
package/dist/index.d.mts CHANGED
@@ -548,6 +548,8 @@ export declare interface BreachReportFormClassNames {
548
548
  notice?: string;
549
549
  /** Custom class applied when isSubmitting is true (e.g. a loading overlay) */
550
550
  loadingOverlay?: string;
551
+ /** Live NDPC-notification completeness panel */
552
+ completeness?: string;
551
553
  }
552
554
 
553
555
  export declare interface BreachReportFormProps {
@@ -641,6 +643,13 @@ export declare interface BreachReportFormProps {
641
643
  * change the `key` prop from the parent.
642
644
  */
643
645
  onReset?: () => void;
646
+ /**
647
+ * Show a live NDPC-notification readiness panel that scores the form against
648
+ * the NDPA S. 40 / GAID 2025 Article 33 mandated content and the 72-hour
649
+ * deadline as the user fills it in.
650
+ * @default true
651
+ */
652
+ showCompleteness?: boolean;
644
653
  }
645
654
 
646
655
  /**
package/dist/index.d.ts CHANGED
@@ -548,6 +548,8 @@ export declare interface BreachReportFormClassNames {
548
548
  notice?: string;
549
549
  /** Custom class applied when isSubmitting is true (e.g. a loading overlay) */
550
550
  loadingOverlay?: string;
551
+ /** Live NDPC-notification completeness panel */
552
+ completeness?: string;
551
553
  }
552
554
 
553
555
  export declare interface BreachReportFormProps {
@@ -641,6 +643,13 @@ export declare interface BreachReportFormProps {
641
643
  * change the `key` prop from the parent.
642
644
  */
643
645
  onReset?: () => void;
646
+ /**
647
+ * Show a live NDPC-notification readiness panel that scores the form against
648
+ * the NDPA S. 40 / GAID 2025 Article 33 mandated content and the 72-hour
649
+ * deadline as the user fills it in.
650
+ * @default true
651
+ */
652
+ showCompleteness?: boolean;
644
653
  }
645
654
 
646
655
  /**
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- 'use strict';var chunkNUWVPRNI_js=require('./chunk-NUWVPRNI.js'),chunkC7OOUURS_js=require('./chunk-C7OOUURS.js'),chunk6MO3GS3B_js=require('./chunk-6MO3GS3B.js'),chunk2MGLU3FY_js=require('./chunk-2MGLU3FY.js'),chunkERCGW2DJ_js=require('./chunk-ERCGW2DJ.js'),chunk2OSZT7KI_js=require('./chunk-2OSZT7KI.js'),chunk37VR2MXL_js=require('./chunk-37VR2MXL.js'),chunkGYLUTVKB_js=require('./chunk-GYLUTVKB.js'),chunkEHQVTFYO_js=require('./chunk-EHQVTFYO.js'),chunkRC3XFXTJ_js=require('./chunk-RC3XFXTJ.js'),chunkQHW4UKGJ_js=require('./chunk-QHW4UKGJ.js'),chunkIRRUYR6M_js=require('./chunk-IRRUYR6M.js'),chunkHHK5LHEG_js=require('./chunk-HHK5LHEG.js'),chunkTLIHFGIJ_js=require('./chunk-TLIHFGIJ.js'),chunkOXFULQTE_js=require('./chunk-OXFULQTE.js');require('./chunk-JS7SYL5P.js');var chunk7TTXS7JX_js=require('./chunk-7TTXS7JX.js'),chunk3YTAOT5O_js=require('./chunk-3YTAOT5O.js'),chunkD2ZKDQVL_js=require('./chunk-D2ZKDQVL.js');require('./chunk-6LJHLE6G.js');var chunkYFBDJ4FH_js=require('./chunk-YFBDJ4FH.js'),chunkWZYCBW2R_js=require('./chunk-WZYCBW2R.js'),chunk4CVBQC66_js=require('./chunk-4CVBQC66.js'),chunkSJDDNB6M_js=require('./chunk-SJDDNB6M.js'),chunkC32TMS75_js=require('./chunk-C32TMS75.js'),chunkPXUX4FYM_js=require('./chunk-PXUX4FYM.js'),chunk3IA3KDII_js=require('./chunk-3IA3KDII.js'),chunkQKXGVT2Q_js=require('./chunk-QKXGVT2Q.js'),chunkL2VO3MEJ_js=require('./chunk-L2VO3MEJ.js');require('./chunk-C2KEXHRX.js');var chunkDKLJ5DYN_js=require('./chunk-DKLJ5DYN.js'),chunkTYR5PFYD_js=require('./chunk-TYR5PFYD.js'),chunkFRHFIEWZ_js=require('./chunk-FRHFIEWZ.js'),chunkUXUMYP4L_js=require('./chunk-UXUMYP4L.js'),chunkTVA6D6S4_js=require('./chunk-TVA6D6S4.js'),chunkR2ZZMATR_js=require('./chunk-R2ZZMATR.js'),chunkQG72X7G4_js=require('./chunk-QG72X7G4.js'),chunkDRQURLN5_js=require('./chunk-DRQURLN5.js'),chunkJLQT3W3E_js=require('./chunk-JLQT3W3E.js'),chunkTQZWJGJ2_js=require('./chunk-TQZWJGJ2.js'),chunkZVOIR4QH_js=require('./chunk-ZVOIR4QH.js'),chunkAME4HJR4_js=require('./chunk-AME4HJR4.js'),chunkI5ZDNSX5_js=require('./chunk-I5ZDNSX5.js');require('./chunk-7563FVMY.js'),require('./chunk-VWED6UTN.js'),require('./chunk-RFPLZDIO.js');var react=require('react'),jsxRuntime=require('react/jsx-runtime');var Be=({theme:o,className:t,children:s})=>{let n=react.useMemo(()=>{if(!o)return;let r={};if(o.colors){let e=o.colors;e.primary!==void 0&&(r["--ndpr-primary"]=e.primary),e.primaryHover!==void 0&&(r["--ndpr-primary-hover"]=e.primaryHover),e.primaryForeground!==void 0&&(r["--ndpr-primary-foreground"]=e.primaryForeground),e.background!==void 0&&(r["--ndpr-background"]=e.background),e.surface!==void 0&&(r["--ndpr-surface"]=e.surface),e.foreground!==void 0&&(r["--ndpr-foreground"]=e.foreground),e.muted!==void 0&&(r["--ndpr-muted"]=e.muted),e.mutedForeground!==void 0&&(r["--ndpr-muted-foreground"]=e.mutedForeground),e.border!==void 0&&(r["--ndpr-border"]=e.border),e.input!==void 0&&(r["--ndpr-input"]=e.input),e.ring!==void 0&&(r["--ndpr-ring"]=e.ring),e.success!==void 0&&(r["--ndpr-success"]=e.success),e.destructive!==void 0&&(r["--ndpr-destructive"]=e.destructive),e.warning!==void 0&&(r["--ndpr-warning"]=e.warning);}if(o.radius){let e=o.radius;e.sm!==void 0&&(r["--ndpr-radius-sm"]=e.sm),e.base!==void 0&&(r["--ndpr-radius"]=e.base),e.lg!==void 0&&(r["--ndpr-radius-lg"]=e.lg),e.full!==void 0&&(r["--ndpr-radius-full"]=e.full);}if(o.spacing){let e=o.spacing;e[1]!==void 0&&(r["--ndpr-space-1"]=e[1]),e[2]!==void 0&&(r["--ndpr-space-2"]=e[2]),e[3]!==void 0&&(r["--ndpr-space-3"]=e[3]),e[4]!==void 0&&(r["--ndpr-space-4"]=e[4]),e[5]!==void 0&&(r["--ndpr-space-5"]=e[5]),e[6]!==void 0&&(r["--ndpr-space-6"]=e[6]),e[8]!==void 0&&(r["--ndpr-space-8"]=e[8]);}if(o.shadow){let e=o.shadow;e.sm!==void 0&&(r["--ndpr-shadow-sm"]=e.sm),e.base!==void 0&&(r["--ndpr-shadow"]=e.base),e.lg!==void 0&&(r["--ndpr-shadow-lg"]=e.lg);}if(o.font){let e=o.font;e.sans!==void 0&&(r["--ndpr-font-sans"]=e.sans),e.sizeXs!==void 0&&(r["--ndpr-font-size-xs"]=e.sizeXs),e.sizeSm!==void 0&&(r["--ndpr-font-size-sm"]=e.sizeSm),e.sizeBase!==void 0&&(r["--ndpr-font-size-base"]=e.sizeBase),e.sizeLg!==void 0&&(r["--ndpr-font-size-lg"]=e.sizeLg),e.sizeXl!==void 0&&(r["--ndpr-font-size-xl"]=e.sizeXl),e.lineHeight!==void 0&&(r["--ndpr-line-height"]=e.lineHeight),e.lineHeightTight!==void 0&&(r["--ndpr-line-height-tight"]=e.lineHeightTight);}if(o.transition){let e=o.transition;e.base!==void 0&&(r["--ndpr-transition"]=e.base),e.slow!==void 0&&(r["--ndpr-transition-slow"]=e.slow);}if(o.z){let e=o.z;e.banner!==void 0&&(r["--ndpr-z-banner"]=String(e.banner)),e.modal!==void 0&&(r["--ndpr-z-modal"]=String(e.modal));}return Object.keys(r).length>0?r:void 0},[o]),p=o==null?void 0:o.mode;return jsxRuntime.jsx("div",{"data-ndpr-theme":"","data-theme":p,className:t,style:n,children:s})};var Ie=({variant:o="short",className:t,hidden:s})=>{if(s)return null;let n=o==="long"?chunkZVOIR4QH_js.b:chunkZVOIR4QH_js.a;return jsxRuntime.jsx("p",{role:"note",className:t!=null?t:"ndpr-legal-notice","data-ndpr-legal-notice":o,children:n})};Object.defineProperty(exports,"NDPRDashboard",{enumerable:true,get:function(){return chunkNUWVPRNI_js.a}});Object.defineProperty(exports,"BreachNotificationManager",{enumerable:true,get:function(){return chunkC7OOUURS_js.b}});Object.defineProperty(exports,"BreachRiskAssessment",{enumerable:true,get:function(){return chunkC7OOUURS_js.a}});Object.defineProperty(exports,"RegulatoryReportGenerator",{enumerable:true,get:function(){return chunkC7OOUURS_js.c}});Object.defineProperty(exports,"BreachReportForm",{enumerable:true,get:function(){return chunk6MO3GS3B_js.a}});Object.defineProperty(exports,"PolicyExporter",{enumerable:true,get:function(){return chunk2MGLU3FY_js.c}});Object.defineProperty(exports,"PolicyGenerator",{enumerable:true,get:function(){return chunk2MGLU3FY_js.a}});Object.defineProperty(exports,"PolicyPreview",{enumerable:true,get:function(){return chunk2MGLU3FY_js.b}});Object.defineProperty(exports,"LawfulBasisTracker",{enumerable:true,get:function(){return chunkERCGW2DJ_js.a}});Object.defineProperty(exports,"CrossBorderTransferManager",{enumerable:true,get:function(){return chunk2OSZT7KI_js.a}});Object.defineProperty(exports,"ROPAManager",{enumerable:true,get:function(){return chunk37VR2MXL_js.a}});Object.defineProperty(exports,"useBreachNotificationAssessment",{enumerable:true,get:function(){return chunkGYLUTVKB_js.a}});Object.defineProperty(exports,"useComplianceAuditReturn",{enumerable:true,get:function(){return chunkGYLUTVKB_js.d}});Object.defineProperty(exports,"useComplianceScore",{enumerable:true,get:function(){return chunkGYLUTVKB_js.b}});Object.defineProperty(exports,"useDCPMI",{enumerable:true,get:function(){return chunkGYLUTVKB_js.c}});Object.defineProperty(exports,"useBreach",{enumerable:true,get:function(){return chunkEHQVTFYO_js.a}});Object.defineProperty(exports,"useDefaultPrivacyPolicy",{enumerable:true,get:function(){return chunkRC3XFXTJ_js.b}});Object.defineProperty(exports,"usePrivacyPolicy",{enumerable:true,get:function(){return chunkRC3XFXTJ_js.a}});Object.defineProperty(exports,"useAdaptivePolicyWizard",{enumerable:true,get:function(){return chunkQHW4UKGJ_js.a}});Object.defineProperty(exports,"useLawfulBasis",{enumerable:true,get:function(){return chunkIRRUYR6M_js.a}});Object.defineProperty(exports,"useCrossBorderTransfer",{enumerable:true,get:function(){return chunkHHK5LHEG_js.a}});Object.defineProperty(exports,"useROPA",{enumerable:true,get:function(){return chunkTLIHFGIJ_js.a}});Object.defineProperty(exports,"DEFAULT_DCPMI_FEES_NGN",{enumerable:true,get:function(){return chunkOXFULQTE_js.c}});Object.defineProperty(exports,"DEFAULT_DCPMI_THRESHOLDS",{enumerable:true,get:function(){return chunkOXFULQTE_js.b}});Object.defineProperty(exports,"assessBreachNotification",{enumerable:true,get:function(){return chunkOXFULQTE_js.a}});Object.defineProperty(exports,"classifyDCPMI",{enumerable:true,get:function(){return chunkOXFULQTE_js.d}});Object.defineProperty(exports,"generateComplianceAuditReturn",{enumerable:true,get:function(){return chunkOXFULQTE_js.e}});Object.defineProperty(exports,"getComplianceScore",{enumerable:true,get:function(){return chunk7TTXS7JX_js.a}});Object.defineProperty(exports,"calculateBreachSeverity",{enumerable:true,get:function(){return chunk3YTAOT5O_js.a}});Object.defineProperty(exports,"DEFAULT_POLICY_SECTIONS",{enumerable:true,get:function(){return chunkD2ZKDQVL_js.c}});Object.defineProperty(exports,"DEFAULT_POLICY_VARIABLES",{enumerable:true,get:function(){return chunkD2ZKDQVL_js.d}});Object.defineProperty(exports,"createBusinessPolicyTemplate",{enumerable:true,get:function(){return chunkD2ZKDQVL_js.e}});Object.defineProperty(exports,"generatePolicyText",{enumerable:true,get:function(){return chunkD2ZKDQVL_js.b}});Object.defineProperty(exports,"assessTransferRisk",{enumerable:true,get:function(){return chunkYFBDJ4FH_js.h}});Object.defineProperty(exports,"getTransferMechanismDescription",{enumerable:true,get:function(){return chunkYFBDJ4FH_js.f}});Object.defineProperty(exports,"isNDPCApprovalRequired",{enumerable:true,get:function(){return chunkYFBDJ4FH_js.e}});Object.defineProperty(exports,"validateTransfer",{enumerable:true,get:function(){return chunkYFBDJ4FH_js.g}});Object.defineProperty(exports,"assessComplianceGaps",{enumerable:true,get:function(){return chunkWZYCBW2R_js.c}});Object.defineProperty(exports,"generateLawfulBasisSummary",{enumerable:true,get:function(){return chunkWZYCBW2R_js.d}});Object.defineProperty(exports,"getLawfulBasisDescription",{enumerable:true,get:function(){return chunkWZYCBW2R_js.b}});Object.defineProperty(exports,"validateProcessingActivity",{enumerable:true,get:function(){return chunkWZYCBW2R_js.a}});Object.defineProperty(exports,"exportROPAToCSV",{enumerable:true,get:function(){return chunk4CVBQC66_js.c}});Object.defineProperty(exports,"generateROPASummary",{enumerable:true,get:function(){return chunk4CVBQC66_js.b}});Object.defineProperty(exports,"identifyComplianceGaps",{enumerable:true,get:function(){return chunk4CVBQC66_js.d}});Object.defineProperty(exports,"validateProcessingRecord",{enumerable:true,get:function(){return chunk4CVBQC66_js.a}});Object.defineProperty(exports,"ConsentStorage",{enumerable:true,get:function(){return chunkSJDDNB6M_js.a}});Object.defineProperty(exports,"ConsentManager",{enumerable:true,get:function(){return chunkC32TMS75_js.a}});Object.defineProperty(exports,"ConsentBanner",{enumerable:true,get:function(){return chunkPXUX4FYM_js.a}});Object.defineProperty(exports,"appendAuditEntry",{enumerable:true,get:function(){return chunk3IA3KDII_js.c}});Object.defineProperty(exports,"createAuditEntry",{enumerable:true,get:function(){return chunk3IA3KDII_js.a}});Object.defineProperty(exports,"getAuditLog",{enumerable:true,get:function(){return chunk3IA3KDII_js.b}});Object.defineProperty(exports,"useConsent",{enumerable:true,get:function(){return chunkQKXGVT2Q_js.a}});Object.defineProperty(exports,"useFocusTrap",{enumerable:true,get:function(){return chunkL2VO3MEJ_js.a}});Object.defineProperty(exports,"validateConsentOptionsStructured",{enumerable:true,get:function(){return chunkDKLJ5DYN_js.b}});Object.defineProperty(exports,"validateConsentStructured",{enumerable:true,get:function(){return chunkDKLJ5DYN_js.a}});Object.defineProperty(exports,"DSRDashboard",{enumerable:true,get:function(){return chunkTYR5PFYD_js.a}});Object.defineProperty(exports,"DSRTracker",{enumerable:true,get:function(){return chunkTYR5PFYD_js.b}});Object.defineProperty(exports,"DSRRequestForm",{enumerable:true,get:function(){return chunkFRHFIEWZ_js.a}});Object.defineProperty(exports,"sanitizeInput",{enumerable:true,get:function(){return chunkUXUMYP4L_js.a}});Object.defineProperty(exports,"useDSR",{enumerable:true,get:function(){return chunkTVA6D6S4_js.a}});Object.defineProperty(exports,"formatDSRRequestStructured",{enumerable:true,get:function(){return chunkR2ZZMATR_js.b}});Object.defineProperty(exports,"validateDsrSubmissionStructured",{enumerable:true,get:function(){return chunkR2ZZMATR_js.a}});Object.defineProperty(exports,"DPIAReport",{enumerable:true,get:function(){return chunkQG72X7G4_js.a}});Object.defineProperty(exports,"StepIndicator",{enumerable:true,get:function(){return chunkQG72X7G4_js.b}});Object.defineProperty(exports,"DPIAQuestionnaire",{enumerable:true,get:function(){return chunkDRQURLN5_js.a}});Object.defineProperty(exports,"useDPIA",{enumerable:true,get:function(){return chunkJLQT3W3E_js.a}});Object.defineProperty(exports,"assessDPIARisk",{enumerable:true,get:function(){return chunkTQZWJGJ2_js.a}});Object.defineProperty(exports,"LEGAL_DISCLAIMER_LONG",{enumerable:true,get:function(){return chunkZVOIR4QH_js.b}});Object.defineProperty(exports,"LEGAL_DISCLAIMER_SHORT",{enumerable:true,get:function(){return chunkZVOIR4QH_js.a}});Object.defineProperty(exports,"legalDisclaimerBlock",{enumerable:true,get:function(){return chunkZVOIR4QH_js.c}});Object.defineProperty(exports,"resolveClass",{enumerable:true,get:function(){return chunkAME4HJR4_js.a}});Object.defineProperty(exports,"NDPRProvider",{enumerable:true,get:function(){return chunkI5ZDNSX5_js.a}});Object.defineProperty(exports,"useNDPRConfig",{enumerable:true,get:function(){return chunkI5ZDNSX5_js.b}});exports.LegalNotice=Ie;exports.NDPRThemeProvider=Be;
2
+ 'use strict';var chunkNUWVPRNI_js=require('./chunk-NUWVPRNI.js'),chunkC7OOUURS_js=require('./chunk-C7OOUURS.js'),chunkLHQG25Y2_js=require('./chunk-LHQG25Y2.js'),chunk2MGLU3FY_js=require('./chunk-2MGLU3FY.js'),chunkERCGW2DJ_js=require('./chunk-ERCGW2DJ.js'),chunk2OSZT7KI_js=require('./chunk-2OSZT7KI.js'),chunk37VR2MXL_js=require('./chunk-37VR2MXL.js'),chunkUFTDY43A_js=require('./chunk-UFTDY43A.js'),chunkEHQVTFYO_js=require('./chunk-EHQVTFYO.js'),chunkRC3XFXTJ_js=require('./chunk-RC3XFXTJ.js'),chunkQHW4UKGJ_js=require('./chunk-QHW4UKGJ.js'),chunkIRRUYR6M_js=require('./chunk-IRRUYR6M.js'),chunkHHK5LHEG_js=require('./chunk-HHK5LHEG.js'),chunkTLIHFGIJ_js=require('./chunk-TLIHFGIJ.js'),chunkWKY26JLT_js=require('./chunk-WKY26JLT.js'),chunkY346CURW_js=require('./chunk-Y346CURW.js');require('./chunk-JS7SYL5P.js');var chunk7TTXS7JX_js=require('./chunk-7TTXS7JX.js'),chunk3YTAOT5O_js=require('./chunk-3YTAOT5O.js'),chunkD2ZKDQVL_js=require('./chunk-D2ZKDQVL.js');require('./chunk-6LJHLE6G.js');var chunkYFBDJ4FH_js=require('./chunk-YFBDJ4FH.js'),chunkWZYCBW2R_js=require('./chunk-WZYCBW2R.js'),chunk4CVBQC66_js=require('./chunk-4CVBQC66.js'),chunkSJDDNB6M_js=require('./chunk-SJDDNB6M.js'),chunkC32TMS75_js=require('./chunk-C32TMS75.js'),chunkPXUX4FYM_js=require('./chunk-PXUX4FYM.js'),chunk3IA3KDII_js=require('./chunk-3IA3KDII.js'),chunkQKXGVT2Q_js=require('./chunk-QKXGVT2Q.js'),chunkL2VO3MEJ_js=require('./chunk-L2VO3MEJ.js');require('./chunk-C2KEXHRX.js');var chunkDKLJ5DYN_js=require('./chunk-DKLJ5DYN.js'),chunkTYR5PFYD_js=require('./chunk-TYR5PFYD.js'),chunkFRHFIEWZ_js=require('./chunk-FRHFIEWZ.js'),chunkUXUMYP4L_js=require('./chunk-UXUMYP4L.js'),chunkTVA6D6S4_js=require('./chunk-TVA6D6S4.js'),chunkR2ZZMATR_js=require('./chunk-R2ZZMATR.js'),chunkQG72X7G4_js=require('./chunk-QG72X7G4.js'),chunkDRQURLN5_js=require('./chunk-DRQURLN5.js'),chunkJLQT3W3E_js=require('./chunk-JLQT3W3E.js'),chunkTQZWJGJ2_js=require('./chunk-TQZWJGJ2.js'),chunkZVOIR4QH_js=require('./chunk-ZVOIR4QH.js'),chunkAME4HJR4_js=require('./chunk-AME4HJR4.js'),chunkI5ZDNSX5_js=require('./chunk-I5ZDNSX5.js');require('./chunk-7563FVMY.js'),require('./chunk-VWED6UTN.js'),require('./chunk-RFPLZDIO.js');var react=require('react'),jsxRuntime=require('react/jsx-runtime');var Be=({theme:o,className:t,children:s})=>{let n=react.useMemo(()=>{if(!o)return;let r={};if(o.colors){let e=o.colors;e.primary!==void 0&&(r["--ndpr-primary"]=e.primary),e.primaryHover!==void 0&&(r["--ndpr-primary-hover"]=e.primaryHover),e.primaryForeground!==void 0&&(r["--ndpr-primary-foreground"]=e.primaryForeground),e.background!==void 0&&(r["--ndpr-background"]=e.background),e.surface!==void 0&&(r["--ndpr-surface"]=e.surface),e.foreground!==void 0&&(r["--ndpr-foreground"]=e.foreground),e.muted!==void 0&&(r["--ndpr-muted"]=e.muted),e.mutedForeground!==void 0&&(r["--ndpr-muted-foreground"]=e.mutedForeground),e.border!==void 0&&(r["--ndpr-border"]=e.border),e.input!==void 0&&(r["--ndpr-input"]=e.input),e.ring!==void 0&&(r["--ndpr-ring"]=e.ring),e.success!==void 0&&(r["--ndpr-success"]=e.success),e.destructive!==void 0&&(r["--ndpr-destructive"]=e.destructive),e.warning!==void 0&&(r["--ndpr-warning"]=e.warning);}if(o.radius){let e=o.radius;e.sm!==void 0&&(r["--ndpr-radius-sm"]=e.sm),e.base!==void 0&&(r["--ndpr-radius"]=e.base),e.lg!==void 0&&(r["--ndpr-radius-lg"]=e.lg),e.full!==void 0&&(r["--ndpr-radius-full"]=e.full);}if(o.spacing){let e=o.spacing;e[1]!==void 0&&(r["--ndpr-space-1"]=e[1]),e[2]!==void 0&&(r["--ndpr-space-2"]=e[2]),e[3]!==void 0&&(r["--ndpr-space-3"]=e[3]),e[4]!==void 0&&(r["--ndpr-space-4"]=e[4]),e[5]!==void 0&&(r["--ndpr-space-5"]=e[5]),e[6]!==void 0&&(r["--ndpr-space-6"]=e[6]),e[8]!==void 0&&(r["--ndpr-space-8"]=e[8]);}if(o.shadow){let e=o.shadow;e.sm!==void 0&&(r["--ndpr-shadow-sm"]=e.sm),e.base!==void 0&&(r["--ndpr-shadow"]=e.base),e.lg!==void 0&&(r["--ndpr-shadow-lg"]=e.lg);}if(o.font){let e=o.font;e.sans!==void 0&&(r["--ndpr-font-sans"]=e.sans),e.sizeXs!==void 0&&(r["--ndpr-font-size-xs"]=e.sizeXs),e.sizeSm!==void 0&&(r["--ndpr-font-size-sm"]=e.sizeSm),e.sizeBase!==void 0&&(r["--ndpr-font-size-base"]=e.sizeBase),e.sizeLg!==void 0&&(r["--ndpr-font-size-lg"]=e.sizeLg),e.sizeXl!==void 0&&(r["--ndpr-font-size-xl"]=e.sizeXl),e.lineHeight!==void 0&&(r["--ndpr-line-height"]=e.lineHeight),e.lineHeightTight!==void 0&&(r["--ndpr-line-height-tight"]=e.lineHeightTight);}if(o.transition){let e=o.transition;e.base!==void 0&&(r["--ndpr-transition"]=e.base),e.slow!==void 0&&(r["--ndpr-transition-slow"]=e.slow);}if(o.z){let e=o.z;e.banner!==void 0&&(r["--ndpr-z-banner"]=String(e.banner)),e.modal!==void 0&&(r["--ndpr-z-modal"]=String(e.modal));}return Object.keys(r).length>0?r:void 0},[o]),p=o==null?void 0:o.mode;return jsxRuntime.jsx("div",{"data-ndpr-theme":"","data-theme":p,className:t,style:n,children:s})};var Ie=({variant:o="short",className:t,hidden:s})=>{if(s)return null;let n=o==="long"?chunkZVOIR4QH_js.b:chunkZVOIR4QH_js.a;return jsxRuntime.jsx("p",{role:"note",className:t!=null?t:"ndpr-legal-notice","data-ndpr-legal-notice":o,children:n})};Object.defineProperty(exports,"NDPRDashboard",{enumerable:true,get:function(){return chunkNUWVPRNI_js.a}});Object.defineProperty(exports,"BreachNotificationManager",{enumerable:true,get:function(){return chunkC7OOUURS_js.b}});Object.defineProperty(exports,"BreachRiskAssessment",{enumerable:true,get:function(){return chunkC7OOUURS_js.a}});Object.defineProperty(exports,"RegulatoryReportGenerator",{enumerable:true,get:function(){return chunkC7OOUURS_js.c}});Object.defineProperty(exports,"BreachReportForm",{enumerable:true,get:function(){return chunkLHQG25Y2_js.a}});Object.defineProperty(exports,"PolicyExporter",{enumerable:true,get:function(){return chunk2MGLU3FY_js.c}});Object.defineProperty(exports,"PolicyGenerator",{enumerable:true,get:function(){return chunk2MGLU3FY_js.a}});Object.defineProperty(exports,"PolicyPreview",{enumerable:true,get:function(){return chunk2MGLU3FY_js.b}});Object.defineProperty(exports,"LawfulBasisTracker",{enumerable:true,get:function(){return chunkERCGW2DJ_js.a}});Object.defineProperty(exports,"CrossBorderTransferManager",{enumerable:true,get:function(){return chunk2OSZT7KI_js.a}});Object.defineProperty(exports,"ROPAManager",{enumerable:true,get:function(){return chunk37VR2MXL_js.a}});Object.defineProperty(exports,"useBreachNotificationAssessment",{enumerable:true,get:function(){return chunkUFTDY43A_js.a}});Object.defineProperty(exports,"useComplianceAuditReturn",{enumerable:true,get:function(){return chunkUFTDY43A_js.d}});Object.defineProperty(exports,"useComplianceScore",{enumerable:true,get:function(){return chunkUFTDY43A_js.b}});Object.defineProperty(exports,"useDCPMI",{enumerable:true,get:function(){return chunkUFTDY43A_js.c}});Object.defineProperty(exports,"useBreach",{enumerable:true,get:function(){return chunkEHQVTFYO_js.a}});Object.defineProperty(exports,"useDefaultPrivacyPolicy",{enumerable:true,get:function(){return chunkRC3XFXTJ_js.b}});Object.defineProperty(exports,"usePrivacyPolicy",{enumerable:true,get:function(){return chunkRC3XFXTJ_js.a}});Object.defineProperty(exports,"useAdaptivePolicyWizard",{enumerable:true,get:function(){return chunkQHW4UKGJ_js.a}});Object.defineProperty(exports,"useLawfulBasis",{enumerable:true,get:function(){return chunkIRRUYR6M_js.a}});Object.defineProperty(exports,"useCrossBorderTransfer",{enumerable:true,get:function(){return chunkHHK5LHEG_js.a}});Object.defineProperty(exports,"useROPA",{enumerable:true,get:function(){return chunkTLIHFGIJ_js.a}});Object.defineProperty(exports,"DEFAULT_DCPMI_FEES_NGN",{enumerable:true,get:function(){return chunkWKY26JLT_js.b}});Object.defineProperty(exports,"DEFAULT_DCPMI_THRESHOLDS",{enumerable:true,get:function(){return chunkWKY26JLT_js.a}});Object.defineProperty(exports,"classifyDCPMI",{enumerable:true,get:function(){return chunkWKY26JLT_js.c}});Object.defineProperty(exports,"generateComplianceAuditReturn",{enumerable:true,get:function(){return chunkWKY26JLT_js.d}});Object.defineProperty(exports,"assessBreachNotification",{enumerable:true,get:function(){return chunkY346CURW_js.a}});Object.defineProperty(exports,"getComplianceScore",{enumerable:true,get:function(){return chunk7TTXS7JX_js.a}});Object.defineProperty(exports,"calculateBreachSeverity",{enumerable:true,get:function(){return chunk3YTAOT5O_js.a}});Object.defineProperty(exports,"DEFAULT_POLICY_SECTIONS",{enumerable:true,get:function(){return chunkD2ZKDQVL_js.c}});Object.defineProperty(exports,"DEFAULT_POLICY_VARIABLES",{enumerable:true,get:function(){return chunkD2ZKDQVL_js.d}});Object.defineProperty(exports,"createBusinessPolicyTemplate",{enumerable:true,get:function(){return chunkD2ZKDQVL_js.e}});Object.defineProperty(exports,"generatePolicyText",{enumerable:true,get:function(){return chunkD2ZKDQVL_js.b}});Object.defineProperty(exports,"assessTransferRisk",{enumerable:true,get:function(){return chunkYFBDJ4FH_js.h}});Object.defineProperty(exports,"getTransferMechanismDescription",{enumerable:true,get:function(){return chunkYFBDJ4FH_js.f}});Object.defineProperty(exports,"isNDPCApprovalRequired",{enumerable:true,get:function(){return chunkYFBDJ4FH_js.e}});Object.defineProperty(exports,"validateTransfer",{enumerable:true,get:function(){return chunkYFBDJ4FH_js.g}});Object.defineProperty(exports,"assessComplianceGaps",{enumerable:true,get:function(){return chunkWZYCBW2R_js.c}});Object.defineProperty(exports,"generateLawfulBasisSummary",{enumerable:true,get:function(){return chunkWZYCBW2R_js.d}});Object.defineProperty(exports,"getLawfulBasisDescription",{enumerable:true,get:function(){return chunkWZYCBW2R_js.b}});Object.defineProperty(exports,"validateProcessingActivity",{enumerable:true,get:function(){return chunkWZYCBW2R_js.a}});Object.defineProperty(exports,"exportROPAToCSV",{enumerable:true,get:function(){return chunk4CVBQC66_js.c}});Object.defineProperty(exports,"generateROPASummary",{enumerable:true,get:function(){return chunk4CVBQC66_js.b}});Object.defineProperty(exports,"identifyComplianceGaps",{enumerable:true,get:function(){return chunk4CVBQC66_js.d}});Object.defineProperty(exports,"validateProcessingRecord",{enumerable:true,get:function(){return chunk4CVBQC66_js.a}});Object.defineProperty(exports,"ConsentStorage",{enumerable:true,get:function(){return chunkSJDDNB6M_js.a}});Object.defineProperty(exports,"ConsentManager",{enumerable:true,get:function(){return chunkC32TMS75_js.a}});Object.defineProperty(exports,"ConsentBanner",{enumerable:true,get:function(){return chunkPXUX4FYM_js.a}});Object.defineProperty(exports,"appendAuditEntry",{enumerable:true,get:function(){return chunk3IA3KDII_js.c}});Object.defineProperty(exports,"createAuditEntry",{enumerable:true,get:function(){return chunk3IA3KDII_js.a}});Object.defineProperty(exports,"getAuditLog",{enumerable:true,get:function(){return chunk3IA3KDII_js.b}});Object.defineProperty(exports,"useConsent",{enumerable:true,get:function(){return chunkQKXGVT2Q_js.a}});Object.defineProperty(exports,"useFocusTrap",{enumerable:true,get:function(){return chunkL2VO3MEJ_js.a}});Object.defineProperty(exports,"validateConsentOptionsStructured",{enumerable:true,get:function(){return chunkDKLJ5DYN_js.b}});Object.defineProperty(exports,"validateConsentStructured",{enumerable:true,get:function(){return chunkDKLJ5DYN_js.a}});Object.defineProperty(exports,"DSRDashboard",{enumerable:true,get:function(){return chunkTYR5PFYD_js.a}});Object.defineProperty(exports,"DSRTracker",{enumerable:true,get:function(){return chunkTYR5PFYD_js.b}});Object.defineProperty(exports,"DSRRequestForm",{enumerable:true,get:function(){return chunkFRHFIEWZ_js.a}});Object.defineProperty(exports,"sanitizeInput",{enumerable:true,get:function(){return chunkUXUMYP4L_js.a}});Object.defineProperty(exports,"useDSR",{enumerable:true,get:function(){return chunkTVA6D6S4_js.a}});Object.defineProperty(exports,"formatDSRRequestStructured",{enumerable:true,get:function(){return chunkR2ZZMATR_js.b}});Object.defineProperty(exports,"validateDsrSubmissionStructured",{enumerable:true,get:function(){return chunkR2ZZMATR_js.a}});Object.defineProperty(exports,"DPIAReport",{enumerable:true,get:function(){return chunkQG72X7G4_js.a}});Object.defineProperty(exports,"StepIndicator",{enumerable:true,get:function(){return chunkQG72X7G4_js.b}});Object.defineProperty(exports,"DPIAQuestionnaire",{enumerable:true,get:function(){return chunkDRQURLN5_js.a}});Object.defineProperty(exports,"useDPIA",{enumerable:true,get:function(){return chunkJLQT3W3E_js.a}});Object.defineProperty(exports,"assessDPIARisk",{enumerable:true,get:function(){return chunkTQZWJGJ2_js.a}});Object.defineProperty(exports,"LEGAL_DISCLAIMER_LONG",{enumerable:true,get:function(){return chunkZVOIR4QH_js.b}});Object.defineProperty(exports,"LEGAL_DISCLAIMER_SHORT",{enumerable:true,get:function(){return chunkZVOIR4QH_js.a}});Object.defineProperty(exports,"legalDisclaimerBlock",{enumerable:true,get:function(){return chunkZVOIR4QH_js.c}});Object.defineProperty(exports,"resolveClass",{enumerable:true,get:function(){return chunkAME4HJR4_js.a}});Object.defineProperty(exports,"NDPRProvider",{enumerable:true,get:function(){return chunkI5ZDNSX5_js.a}});Object.defineProperty(exports,"useNDPRConfig",{enumerable:true,get:function(){return chunkI5ZDNSX5_js.b}});exports.LegalNotice=Ie;exports.NDPRThemeProvider=Be;
package/dist/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- export{a as NDPRDashboard}from'./chunk-ZIZL37BG.mjs';export{b as BreachNotificationManager,a as BreachRiskAssessment,c as RegulatoryReportGenerator}from'./chunk-EF5CLD4V.mjs';export{a as BreachReportForm}from'./chunk-WLZTATLL.mjs';export{c as PolicyExporter,a as PolicyGenerator,b as PolicyPreview}from'./chunk-5E56KT7E.mjs';export{a as LawfulBasisTracker}from'./chunk-RW7V7DDR.mjs';export{a as CrossBorderTransferManager}from'./chunk-6UGLAVRM.mjs';export{a as ROPAManager}from'./chunk-2ASQQYJR.mjs';export{a as useBreachNotificationAssessment,d as useComplianceAuditReturn,b as useComplianceScore,c as useDCPMI}from'./chunk-NKFTLFPD.mjs';export{a as useBreach}from'./chunk-RFXGD5NE.mjs';export{b as useDefaultPrivacyPolicy,a as usePrivacyPolicy}from'./chunk-UVXS7KRV.mjs';export{a as useAdaptivePolicyWizard}from'./chunk-KE2FZH2V.mjs';export{a as useLawfulBasis}from'./chunk-B6BRD5SL.mjs';export{a as useCrossBorderTransfer}from'./chunk-KDAZQO3N.mjs';export{a as useROPA}from'./chunk-FRMVSG4N.mjs';export{c as DEFAULT_DCPMI_FEES_NGN,b as DEFAULT_DCPMI_THRESHOLDS,a as assessBreachNotification,d as classifyDCPMI,e as generateComplianceAuditReturn}from'./chunk-KOHFQIV4.mjs';import'./chunk-IVSNHT24.mjs';export{a as getComplianceScore}from'./chunk-6A7M4CGJ.mjs';export{a as calculateBreachSeverity}from'./chunk-WTGKZX7J.mjs';export{c as DEFAULT_POLICY_SECTIONS,d as DEFAULT_POLICY_VARIABLES,e as createBusinessPolicyTemplate,b as generatePolicyText}from'./chunk-NBQQ2GN3.mjs';import'./chunk-BIJSMSUU.mjs';export{h as assessTransferRisk,f as getTransferMechanismDescription,e as isNDPCApprovalRequired,g as validateTransfer}from'./chunk-7BJXI2HI.mjs';export{c as assessComplianceGaps,d as generateLawfulBasisSummary,b as getLawfulBasisDescription,a as validateProcessingActivity}from'./chunk-LWIKDDSU.mjs';export{c as exportROPAToCSV,b as generateROPASummary,d as identifyComplianceGaps,a as validateProcessingRecord}from'./chunk-XP5PL6K7.mjs';export{a as ConsentStorage}from'./chunk-XOH4WXOZ.mjs';export{a as ConsentManager}from'./chunk-CNCEP66F.mjs';export{a as ConsentBanner}from'./chunk-HMKXK23C.mjs';export{c as appendAuditEntry,a as createAuditEntry,b as getAuditLog}from'./chunk-V7UFP6QU.mjs';export{a as useConsent}from'./chunk-PQ5IPUJN.mjs';export{a as useFocusTrap}from'./chunk-YTU4FNM2.mjs';import'./chunk-XC3DLYEG.mjs';export{b as validateConsentOptionsStructured,a as validateConsentStructured}from'./chunk-R3ZKV2J7.mjs';export{a as DSRDashboard,b as DSRTracker}from'./chunk-AS2M5OTX.mjs';export{a as DSRRequestForm}from'./chunk-EAV4BZKO.mjs';export{a as sanitizeInput}from'./chunk-EWVK45Z3.mjs';export{a as useDSR}from'./chunk-ZSRO4L3C.mjs';export{b as formatDSRRequestStructured,a as validateDsrSubmissionStructured}from'./chunk-RRVML7CU.mjs';export{a as DPIAReport,b as StepIndicator}from'./chunk-MIQQYXTE.mjs';export{a as DPIAQuestionnaire}from'./chunk-YZHEEGGK.mjs';export{a as useDPIA}from'./chunk-I3V3ITN7.mjs';export{a as assessDPIARisk}from'./chunk-LRRENTT5.mjs';import {b,a}from'./chunk-ITCY2Z66.mjs';export{b as LEGAL_DISCLAIMER_LONG,a as LEGAL_DISCLAIMER_SHORT,c as legalDisclaimerBlock}from'./chunk-ITCY2Z66.mjs';export{a as resolveClass}from'./chunk-SFGW37LE.mjs';export{a as NDPRProvider,b as useNDPRConfig}from'./chunk-PHA3YMFO.mjs';import'./chunk-5LJ652AH.mjs';import'./chunk-DBZSN4WP.mjs';import'./chunk-ZJYULEER.mjs';import {useMemo}from'react';import {jsx}from'react/jsx-runtime';var Be=({theme:o,className:t,children:s})=>{let n=useMemo(()=>{if(!o)return;let r={};if(o.colors){let e=o.colors;e.primary!==void 0&&(r["--ndpr-primary"]=e.primary),e.primaryHover!==void 0&&(r["--ndpr-primary-hover"]=e.primaryHover),e.primaryForeground!==void 0&&(r["--ndpr-primary-foreground"]=e.primaryForeground),e.background!==void 0&&(r["--ndpr-background"]=e.background),e.surface!==void 0&&(r["--ndpr-surface"]=e.surface),e.foreground!==void 0&&(r["--ndpr-foreground"]=e.foreground),e.muted!==void 0&&(r["--ndpr-muted"]=e.muted),e.mutedForeground!==void 0&&(r["--ndpr-muted-foreground"]=e.mutedForeground),e.border!==void 0&&(r["--ndpr-border"]=e.border),e.input!==void 0&&(r["--ndpr-input"]=e.input),e.ring!==void 0&&(r["--ndpr-ring"]=e.ring),e.success!==void 0&&(r["--ndpr-success"]=e.success),e.destructive!==void 0&&(r["--ndpr-destructive"]=e.destructive),e.warning!==void 0&&(r["--ndpr-warning"]=e.warning);}if(o.radius){let e=o.radius;e.sm!==void 0&&(r["--ndpr-radius-sm"]=e.sm),e.base!==void 0&&(r["--ndpr-radius"]=e.base),e.lg!==void 0&&(r["--ndpr-radius-lg"]=e.lg),e.full!==void 0&&(r["--ndpr-radius-full"]=e.full);}if(o.spacing){let e=o.spacing;e[1]!==void 0&&(r["--ndpr-space-1"]=e[1]),e[2]!==void 0&&(r["--ndpr-space-2"]=e[2]),e[3]!==void 0&&(r["--ndpr-space-3"]=e[3]),e[4]!==void 0&&(r["--ndpr-space-4"]=e[4]),e[5]!==void 0&&(r["--ndpr-space-5"]=e[5]),e[6]!==void 0&&(r["--ndpr-space-6"]=e[6]),e[8]!==void 0&&(r["--ndpr-space-8"]=e[8]);}if(o.shadow){let e=o.shadow;e.sm!==void 0&&(r["--ndpr-shadow-sm"]=e.sm),e.base!==void 0&&(r["--ndpr-shadow"]=e.base),e.lg!==void 0&&(r["--ndpr-shadow-lg"]=e.lg);}if(o.font){let e=o.font;e.sans!==void 0&&(r["--ndpr-font-sans"]=e.sans),e.sizeXs!==void 0&&(r["--ndpr-font-size-xs"]=e.sizeXs),e.sizeSm!==void 0&&(r["--ndpr-font-size-sm"]=e.sizeSm),e.sizeBase!==void 0&&(r["--ndpr-font-size-base"]=e.sizeBase),e.sizeLg!==void 0&&(r["--ndpr-font-size-lg"]=e.sizeLg),e.sizeXl!==void 0&&(r["--ndpr-font-size-xl"]=e.sizeXl),e.lineHeight!==void 0&&(r["--ndpr-line-height"]=e.lineHeight),e.lineHeightTight!==void 0&&(r["--ndpr-line-height-tight"]=e.lineHeightTight);}if(o.transition){let e=o.transition;e.base!==void 0&&(r["--ndpr-transition"]=e.base),e.slow!==void 0&&(r["--ndpr-transition-slow"]=e.slow);}if(o.z){let e=o.z;e.banner!==void 0&&(r["--ndpr-z-banner"]=String(e.banner)),e.modal!==void 0&&(r["--ndpr-z-modal"]=String(e.modal));}return Object.keys(r).length>0?r:void 0},[o]),p=o==null?void 0:o.mode;return jsx("div",{"data-ndpr-theme":"","data-theme":p,className:t,style:n,children:s})};var Ie=({variant:o="short",className:t,hidden:s})=>{if(s)return null;let n=o==="long"?b:a;return jsx("p",{role:"note",className:t!=null?t:"ndpr-legal-notice","data-ndpr-legal-notice":o,children:n})};export{Ie as LegalNotice,Be as NDPRThemeProvider};
2
+ export{a as NDPRDashboard}from'./chunk-ZIZL37BG.mjs';export{b as BreachNotificationManager,a as BreachRiskAssessment,c as RegulatoryReportGenerator}from'./chunk-EF5CLD4V.mjs';export{a as BreachReportForm}from'./chunk-5ZMYNOMR.mjs';export{c as PolicyExporter,a as PolicyGenerator,b as PolicyPreview}from'./chunk-5E56KT7E.mjs';export{a as LawfulBasisTracker}from'./chunk-RW7V7DDR.mjs';export{a as CrossBorderTransferManager}from'./chunk-6UGLAVRM.mjs';export{a as ROPAManager}from'./chunk-2ASQQYJR.mjs';export{a as useBreachNotificationAssessment,d as useComplianceAuditReturn,b as useComplianceScore,c as useDCPMI}from'./chunk-SDV2C5OT.mjs';export{a as useBreach}from'./chunk-RFXGD5NE.mjs';export{b as useDefaultPrivacyPolicy,a as usePrivacyPolicy}from'./chunk-UVXS7KRV.mjs';export{a as useAdaptivePolicyWizard}from'./chunk-KE2FZH2V.mjs';export{a as useLawfulBasis}from'./chunk-B6BRD5SL.mjs';export{a as useCrossBorderTransfer}from'./chunk-KDAZQO3N.mjs';export{a as useROPA}from'./chunk-FRMVSG4N.mjs';export{b as DEFAULT_DCPMI_FEES_NGN,a as DEFAULT_DCPMI_THRESHOLDS,c as classifyDCPMI,d as generateComplianceAuditReturn}from'./chunk-SZXHNJGG.mjs';export{a as assessBreachNotification}from'./chunk-WJSUVPYX.mjs';import'./chunk-IVSNHT24.mjs';export{a as getComplianceScore}from'./chunk-6A7M4CGJ.mjs';export{a as calculateBreachSeverity}from'./chunk-WTGKZX7J.mjs';export{c as DEFAULT_POLICY_SECTIONS,d as DEFAULT_POLICY_VARIABLES,e as createBusinessPolicyTemplate,b as generatePolicyText}from'./chunk-NBQQ2GN3.mjs';import'./chunk-BIJSMSUU.mjs';export{h as assessTransferRisk,f as getTransferMechanismDescription,e as isNDPCApprovalRequired,g as validateTransfer}from'./chunk-7BJXI2HI.mjs';export{c as assessComplianceGaps,d as generateLawfulBasisSummary,b as getLawfulBasisDescription,a as validateProcessingActivity}from'./chunk-LWIKDDSU.mjs';export{c as exportROPAToCSV,b as generateROPASummary,d as identifyComplianceGaps,a as validateProcessingRecord}from'./chunk-XP5PL6K7.mjs';export{a as ConsentStorage}from'./chunk-XOH4WXOZ.mjs';export{a as ConsentManager}from'./chunk-CNCEP66F.mjs';export{a as ConsentBanner}from'./chunk-HMKXK23C.mjs';export{c as appendAuditEntry,a as createAuditEntry,b as getAuditLog}from'./chunk-V7UFP6QU.mjs';export{a as useConsent}from'./chunk-PQ5IPUJN.mjs';export{a as useFocusTrap}from'./chunk-YTU4FNM2.mjs';import'./chunk-XC3DLYEG.mjs';export{b as validateConsentOptionsStructured,a as validateConsentStructured}from'./chunk-R3ZKV2J7.mjs';export{a as DSRDashboard,b as DSRTracker}from'./chunk-AS2M5OTX.mjs';export{a as DSRRequestForm}from'./chunk-EAV4BZKO.mjs';export{a as sanitizeInput}from'./chunk-EWVK45Z3.mjs';export{a as useDSR}from'./chunk-ZSRO4L3C.mjs';export{b as formatDSRRequestStructured,a as validateDsrSubmissionStructured}from'./chunk-RRVML7CU.mjs';export{a as DPIAReport,b as StepIndicator}from'./chunk-MIQQYXTE.mjs';export{a as DPIAQuestionnaire}from'./chunk-YZHEEGGK.mjs';export{a as useDPIA}from'./chunk-I3V3ITN7.mjs';export{a as assessDPIARisk}from'./chunk-LRRENTT5.mjs';import {b,a}from'./chunk-ITCY2Z66.mjs';export{b as LEGAL_DISCLAIMER_LONG,a as LEGAL_DISCLAIMER_SHORT,c as legalDisclaimerBlock}from'./chunk-ITCY2Z66.mjs';export{a as resolveClass}from'./chunk-SFGW37LE.mjs';export{a as NDPRProvider,b as useNDPRConfig}from'./chunk-PHA3YMFO.mjs';import'./chunk-5LJ652AH.mjs';import'./chunk-DBZSN4WP.mjs';import'./chunk-ZJYULEER.mjs';import {useMemo}from'react';import {jsx}from'react/jsx-runtime';var Be=({theme:o,className:t,children:s})=>{let n=useMemo(()=>{if(!o)return;let r={};if(o.colors){let e=o.colors;e.primary!==void 0&&(r["--ndpr-primary"]=e.primary),e.primaryHover!==void 0&&(r["--ndpr-primary-hover"]=e.primaryHover),e.primaryForeground!==void 0&&(r["--ndpr-primary-foreground"]=e.primaryForeground),e.background!==void 0&&(r["--ndpr-background"]=e.background),e.surface!==void 0&&(r["--ndpr-surface"]=e.surface),e.foreground!==void 0&&(r["--ndpr-foreground"]=e.foreground),e.muted!==void 0&&(r["--ndpr-muted"]=e.muted),e.mutedForeground!==void 0&&(r["--ndpr-muted-foreground"]=e.mutedForeground),e.border!==void 0&&(r["--ndpr-border"]=e.border),e.input!==void 0&&(r["--ndpr-input"]=e.input),e.ring!==void 0&&(r["--ndpr-ring"]=e.ring),e.success!==void 0&&(r["--ndpr-success"]=e.success),e.destructive!==void 0&&(r["--ndpr-destructive"]=e.destructive),e.warning!==void 0&&(r["--ndpr-warning"]=e.warning);}if(o.radius){let e=o.radius;e.sm!==void 0&&(r["--ndpr-radius-sm"]=e.sm),e.base!==void 0&&(r["--ndpr-radius"]=e.base),e.lg!==void 0&&(r["--ndpr-radius-lg"]=e.lg),e.full!==void 0&&(r["--ndpr-radius-full"]=e.full);}if(o.spacing){let e=o.spacing;e[1]!==void 0&&(r["--ndpr-space-1"]=e[1]),e[2]!==void 0&&(r["--ndpr-space-2"]=e[2]),e[3]!==void 0&&(r["--ndpr-space-3"]=e[3]),e[4]!==void 0&&(r["--ndpr-space-4"]=e[4]),e[5]!==void 0&&(r["--ndpr-space-5"]=e[5]),e[6]!==void 0&&(r["--ndpr-space-6"]=e[6]),e[8]!==void 0&&(r["--ndpr-space-8"]=e[8]);}if(o.shadow){let e=o.shadow;e.sm!==void 0&&(r["--ndpr-shadow-sm"]=e.sm),e.base!==void 0&&(r["--ndpr-shadow"]=e.base),e.lg!==void 0&&(r["--ndpr-shadow-lg"]=e.lg);}if(o.font){let e=o.font;e.sans!==void 0&&(r["--ndpr-font-sans"]=e.sans),e.sizeXs!==void 0&&(r["--ndpr-font-size-xs"]=e.sizeXs),e.sizeSm!==void 0&&(r["--ndpr-font-size-sm"]=e.sizeSm),e.sizeBase!==void 0&&(r["--ndpr-font-size-base"]=e.sizeBase),e.sizeLg!==void 0&&(r["--ndpr-font-size-lg"]=e.sizeLg),e.sizeXl!==void 0&&(r["--ndpr-font-size-xl"]=e.sizeXl),e.lineHeight!==void 0&&(r["--ndpr-line-height"]=e.lineHeight),e.lineHeightTight!==void 0&&(r["--ndpr-line-height-tight"]=e.lineHeightTight);}if(o.transition){let e=o.transition;e.base!==void 0&&(r["--ndpr-transition"]=e.base),e.slow!==void 0&&(r["--ndpr-transition-slow"]=e.slow);}if(o.z){let e=o.z;e.banner!==void 0&&(r["--ndpr-z-banner"]=String(e.banner)),e.modal!==void 0&&(r["--ndpr-z-modal"]=String(e.modal));}return Object.keys(r).length>0?r:void 0},[o]),p=o==null?void 0:o.mode;return jsx("div",{"data-ndpr-theme":"","data-theme":p,className:t,style:n,children:s})};var Ie=({variant:o="short",className:t,hidden:s})=>{if(s)return null;let n=o==="long"?b:a;return jsx("p",{role:"note",className:t!=null?t:"ndpr-legal-notice","data-ndpr-legal-notice":o,children:n})};export{Ie as LegalNotice,Be as NDPRThemeProvider};
@@ -119,6 +119,8 @@ declare interface BreachReportFormClassNames {
119
119
  notice?: string;
120
120
  /** Custom class applied when isSubmitting is true (e.g. a loading overlay) */
121
121
  loadingOverlay?: string;
122
+ /** Live NDPC-notification completeness panel */
123
+ completeness?: string;
122
124
  }
123
125
 
124
126
  declare interface ComplianceInput {
package/dist/presets.d.ts CHANGED
@@ -119,6 +119,8 @@ declare interface BreachReportFormClassNames {
119
119
  notice?: string;
120
120
  /** Custom class applied when isSubmitting is true (e.g. a loading overlay) */
121
121
  loadingOverlay?: string;
122
+ /** Live NDPC-notification completeness panel */
123
+ completeness?: string;
122
124
  }
123
125
 
124
126
  declare interface ComplianceInput {
package/dist/presets.js CHANGED
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- 'use strict';var chunkVTBHDHYK_js=require('./chunk-VTBHDHYK.js'),chunkVEWLYTRA_js=require('./chunk-VEWLYTRA.js'),chunkSMEZAQNJ_js=require('./chunk-SMEZAQNJ.js');require('./chunk-6KQADEFS.js');var chunkNUWVPRNI_js=require('./chunk-NUWVPRNI.js'),chunk6MO3GS3B_js=require('./chunk-6MO3GS3B.js'),chunkERCGW2DJ_js=require('./chunk-ERCGW2DJ.js'),chunk2OSZT7KI_js=require('./chunk-2OSZT7KI.js'),chunk37VR2MXL_js=require('./chunk-37VR2MXL.js');require('./chunk-NUOHT3LO.js'),require('./chunk-QHW4UKGJ.js'),require('./chunk-JS7SYL5P.js');var chunk7TTXS7JX_js=require('./chunk-7TTXS7JX.js');require('./chunk-6LJHLE6G.js'),require('./chunk-YFBDJ4FH.js'),require('./chunk-WZYCBW2R.js'),require('./chunk-4CVBQC66.js'),require('./chunk-PXUX4FYM.js'),require('./chunk-L2VO3MEJ.js'),require('./chunk-FRHFIEWZ.js'),require('./chunk-UXUMYP4L.js');var chunkDRQURLN5_js=require('./chunk-DRQURLN5.js'),chunkTQZWJGJ2_js=require('./chunk-TQZWJGJ2.js');require('./chunk-ZVOIR4QH.js'),require('./chunk-AME4HJR4.js'),require('./chunk-I5ZDNSX5.js'),require('./chunk-7563FVMY.js'),require('./chunk-VWED6UTN.js');var chunkRFPLZDIO_js=require('./chunk-RFPLZDIO.js'),jsxRuntime=require('react/jsx-runtime'),react=require('react');var W=[{id:"unauthorized_access",name:"Unauthorized Access",description:"Unauthorized access to personal data",defaultSeverity:"high"},{id:"data_loss",name:"Data Loss",description:"Loss of personal data",defaultSeverity:"high"},{id:"data_theft",name:"Data Theft",description:"Theft of personal data",defaultSeverity:"critical"},{id:"system_breach",name:"System Breach",description:"Breach of system containing personal data",defaultSeverity:"critical"},{id:"accidental_disclosure",name:"Accidental Disclosure",description:"Unintended disclosure of personal data",defaultSeverity:"medium"}],Y=({categories:p=W,adapter:o,classNames:P,unstyled:h,onSubmit:a=()=>{},copy:r,description:c,submitTo:s,submitOptions:i,onSubmitError:f,onSubmitSuccess:R})=>{var e;let d=n=>chunkRFPLZDIO_js.d(null,null,function*(){var u,N;if(s){let C=typeof(i==null?void 0:i.headers)=="function"?i.headers():(u=i==null?void 0:i.headers)!=null?u:{};try{let A=yield fetch(s,{method:"POST",headers:chunkRFPLZDIO_js.a({"Content-Type":"application/json"},C),credentials:(N=i==null?void 0:i.credentials)!=null?N:"same-origin",body:JSON.stringify(n)});if(!A.ok)f==null||f({response:A});else if(R){let v;try{let D=yield A.clone().text();D&&(v=JSON.parse(D));}catch(D){}R({response:A,data:n,body:v});}}catch(A){f==null||f({error:A});}}else o&&o.save(n);a(n);}),t=(e=r==null?void 0:r.description)!=null?e:c;return jsxRuntime.jsx(chunk6MO3GS3B_js.a,{categories:p,onSubmit:d,classNames:P,unstyled:h,title:r==null?void 0:r.title,description:t,submitButtonText:r==null?void 0:r.submitButton})};var j=[{id:"project_overview",title:"Project Overview",description:"Provide basic details about the processing activity being assessed.",order:0,questions:[{id:"project_name",text:"What is the name of the project or processing activity?",type:"text",required:true},{id:"project_description",text:"Describe the nature and purpose of the processing.",guidance:"Include what personal data will be collected, why it is needed, and how it will be used.",type:"textarea",required:true},{id:"data_controller",text:"Who is the data controller responsible for this processing?",type:"text",required:true}]},{id:"necessity",title:"Necessity & Proportionality",description:"Assess whether the processing is necessary and proportionate to the purposes.",order:1,questions:[{id:"lawful_basis",text:"What is the lawful basis for processing under the NDPA 2023?",type:"select",required:true,options:[{value:"consent",label:"Consent (Section 25(1)(a))"},{value:"contract",label:"Contract (Section 25(1)(b))"},{value:"legal_obligation",label:"Legal Obligation (Section 25(1)(c))"},{value:"vital_interests",label:"Vital Interests (Section 25(1)(d))"},{value:"public_task",label:"Public Task (Section 25(1)(e))"},{value:"legitimate_interests",label:"Legitimate Interests (Section 25(1)(f))"}]},{id:"data_minimisation",text:"Is the processing limited to what is necessary for the specified purpose?",type:"radio",required:true,options:[{value:"yes",label:"Yes \u2014 only minimum data is collected",riskLevel:"low"},{value:"partial",label:"Partially \u2014 some additional data may be collected",riskLevel:"medium"},{value:"no",label:"No \u2014 more data is collected than strictly necessary",riskLevel:"high"}]}]},{id:"risk_identification",title:"Risk Identification",description:"Identify and assess risks to data subjects arising from the processing.",order:2,questions:[{id:"sensitive_data",text:"Does the processing involve sensitive personal data (e.g., health, biometric, financial, children's data)?",type:"radio",required:true,options:[{value:"no",label:"No sensitive data",riskLevel:"low"},{value:"yes_protected",label:"Yes, with appropriate safeguards",riskLevel:"medium"},{value:"yes_unprotected",label:"Yes, without adequate safeguards",riskLevel:"high"}]},{id:"scale",text:"What is the scale of processing?",type:"radio",required:true,options:[{value:"small",label:"Small scale (fewer than 1,000 individuals)",riskLevel:"low"},{value:"medium",label:"Medium scale (1,000 to 100,000 individuals)",riskLevel:"medium"},{value:"large",label:"Large scale (over 100,000 individuals)",riskLevel:"high"}]},{id:"cross_border",text:"Will data be transferred outside Nigeria?",type:"radio",required:true,options:[{value:"no",label:"No international transfers",riskLevel:"low"},{value:"adequate",label:"Yes, to countries with adequate protection",riskLevel:"medium"},{value:"inadequate",label:"Yes, to countries without adequate protection",riskLevel:"high"}]}]},{id:"mitigation",title:"Risk Mitigation & Measures",description:"Document the measures taken to address identified risks.",order:3,questions:[{id:"security_measures",text:"What technical and organisational security measures are in place?",guidance:"Include encryption, access controls, pseudonymisation, staff training, etc.",type:"textarea",required:true},{id:"retention_period",text:"What is the data retention period?",guidance:"Specify how long data will be kept and the criteria used to determine this.",type:"text",required:true},{id:"dpo_consulted",text:"Has the Data Protection Officer (DPO) been consulted on this assessment?",type:"radio",required:false,options:[{value:"yes",label:"Yes",riskLevel:"low"},{value:"no",label:"No",riskLevel:"medium"},{value:"na",label:"Not applicable \u2014 no DPO appointed",riskLevel:"medium"}]}]}];function J(p,o){let P=[],h=s=>{let i=o[s.id];if(i!=null&&s.riskLevel)if(["select","radio","checkbox"].includes(s.type)&&s.options)(Array.isArray(i)?i:[i]).forEach(R=>{var t;let d=(t=s.options)==null?void 0:t.find(e=>e.value===R);if(d!=null&&d.riskLevel){let e=d.riskLevel,n=e==="low"?1:e==="medium"?3:5,u=e==="low"?1:e==="medium"?3:5;P.push({id:`risk_${P.length+1}`,description:`${s.text} - ${d.label}`,likelihood:n,impact:u,score:n*u,level:e,mitigated:false,relatedQuestionIds:[s.id]});}});else {let f=s.riskLevel,R=f==="low"?1:f==="medium"?3:5,d=f==="low"?1:f==="medium"?3:5;P.push({id:`risk_${P.length+1}`,description:s.text,likelihood:R,impact:d,score:R*d,level:f,mitigated:false,relatedQuestionIds:[s.id]});}};p.forEach(s=>s.questions.forEach(h));let a=Date.now(),r={id:`dpia_${a}`,title:"",processingDescription:"",startedAt:a,completedAt:a,assessor:{name:"",role:"",email:""},answers:o,risks:P,overallRiskLevel:"low",canProceed:true,conclusion:"",version:"1.0"},c=chunkTQZWJGJ2_js.a(r);return r.overallRiskLevel=c.overallRiskLevel,r.canProceed=c.canProceed,r.conclusion=c.canProceed?"Based on the assessment, the processing can proceed with appropriate safeguards.":"Based on the assessment, the processing should not proceed without further mitigation measures.",r.recommendations=c.recommendations,r}var V=({sections:p=j,adapter:o,classNames:P,unstyled:h,onResult:a,copy:r,submitTo:c,submitOptions:s,onSubmitError:i,onSubmitSuccess:f})=>{let[R,d]=react.useState({}),[t,e]=react.useState(0),n=(v,D)=>{d(w=>chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},w),{[v]:D}));},u=v=>chunkRFPLZDIO_js.d(null,null,function*(){var D,w;if(c){let q=typeof(s==null?void 0:s.headers)=="function"?s.headers():(D=s==null?void 0:s.headers)!=null?D:{};try{let y=yield fetch(c,{method:"POST",headers:chunkRFPLZDIO_js.a({"Content-Type":"application/json"},q),credentials:(w=s==null?void 0:s.credentials)!=null?w:"same-origin",body:JSON.stringify(v)});if(!y.ok)i==null||i({response:y});else if(f){let x;try{let B=yield y.clone().text();B&&(x=JSON.parse(B));}catch(B){}f({response:y,data:v,body:x});}}catch(y){i==null||i({error:y});}}else o&&o.save(v);a==null||a(J(p,v));}),N=()=>{t<p.length-1?e(v=>v+1):u(R);},C=()=>{t>0&&e(v=>v-1);},A=Math.round((t+1)/p.length*100);return jsxRuntime.jsx(chunkDRQURLN5_js.a,{sections:p,answers:R,onAnswerChange:n,currentSectionIndex:t,onNextSection:N,onPrevSection:C,progress:A,classNames:P,unstyled:h,submitButtonText:r==null?void 0:r.submitButton,nextButtonText:r==null?void 0:r.nextButton,prevButtonText:r==null?void 0:r.prevButton})};var X=({initialData:p,adapter:o,classNames:P,unstyled:h,copy:a})=>{let r=p!=null?p:[],[c,s]=react.useState(()=>{if(o){let t=o.load();if(t&&!(t instanceof Promise))return t}return r});react.useEffect(()=>{if(!o)return;let t=false;return chunkRFPLZDIO_js.d(null,null,function*(){try{let e=yield o.load();!t&&e&&s(e);}catch(e){}}),()=>{t=true;}},[o]);let i=t=>{o&&o.save(t);};return jsxRuntime.jsx(chunkERCGW2DJ_js.a,{activities:c,onAdd:t=>{let e=Date.now(),n=chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},t),{id:`activity-${e}`,createdAt:e,updatedAt:e}),u=[...c,n];s(u),i(u);},onUpdate:(t,e)=>{let n=c.map(u=>u.id===t?chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a(chunkRFPLZDIO_js.a({},u),e),{updatedAt:Date.now()}):u);s(n),i(n);},onArchive:t=>{let e=c.map(n=>n.id===t?chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},n),{status:"inactive",updatedAt:Date.now()}):n);s(e),i(e);},classNames:P,unstyled:h,title:a==null?void 0:a.title,description:a==null?void 0:a.description})};var te=({initialData:p,adapter:o,classNames:P,unstyled:h,copy:a})=>{let r=p!=null?p:[],[c,s]=react.useState(()=>{if(o){let t=o.load();if(t&&!(t instanceof Promise))return t}return r});react.useEffect(()=>{if(!o)return;let t=false;return chunkRFPLZDIO_js.d(null,null,function*(){try{let e=yield o.load();!t&&e&&s(e);}catch(e){}}),()=>{t=true;}},[o]);let i=t=>{o&&o.save(t);};return jsxRuntime.jsx(chunk2OSZT7KI_js.a,{transfers:c,onAdd:t=>{let e=Date.now(),n=chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},t),{id:`transfer-${e}`,createdAt:e,updatedAt:e}),u=[...c,n];s(u),i(u);},onUpdate:(t,e)=>{let n=c.map(u=>u.id===t?chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a(chunkRFPLZDIO_js.a({},u),e),{updatedAt:Date.now()}):u);s(n),i(n);},onArchive:t=>{let e=c.filter(n=>n.id!==t);s(e),i(e);},classNames:P,unstyled:h,title:a==null?void 0:a.title,description:a==null?void 0:a.description})};var ae={id:"ndpr-ropa-default",organizationName:"Your Organisation",organizationContact:"",organizationAddress:"",records:[],lastUpdated:Date.now(),version:"1.0"},ie=({initialData:p,adapter:o,classNames:P,unstyled:h,copy:a})=>{let[r,c]=react.useState(p!=null?p:ae);react.useEffect(()=>{if(!o)return;let d=false;return chunkRFPLZDIO_js.d(null,null,function*(){let e=yield o.load();!d&&e&&c(e);}),()=>{d=true;}},[o]);let s=d=>{o&&o.save(d);};return jsxRuntime.jsx(chunk37VR2MXL_js.a,{ropa:r,onAdd:d=>{let t=chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},r),{records:[...r.records,d],lastUpdated:Date.now()});c(t),s(t);},onUpdate:(d,t)=>{let e=chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},r),{records:r.records.map(n=>n.id===d?chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a(chunkRFPLZDIO_js.a({},n),t),{updatedAt:Date.now()}):n),lastUpdated:Date.now()});c(e),s(e);},onArchive:d=>{let t=chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},r),{records:r.records.map(e=>e.id===d?chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},e),{status:"archived",updatedAt:Date.now()}):e),lastUpdated:Date.now()});c(t),s(t);},classNames:P,unstyled:h,title:a==null?void 0:a.title,description:a==null?void 0:a.description})};var de=P=>{var h=P,{input:p}=h,o=chunkRFPLZDIO_js.c(h,["input"]);let a=chunk7TTXS7JX_js.a(p);return jsxRuntime.jsx(chunkNUWVPRNI_js.a,chunkRFPLZDIO_js.a({report:a},o))};Object.defineProperty(exports,"NDPRConsent",{enumerable:true,get:function(){return chunkVTBHDHYK_js.a}});Object.defineProperty(exports,"NDPRSubjectRights",{enumerable:true,get:function(){return chunkVEWLYTRA_js.a}});Object.defineProperty(exports,"NDPRPrivacyPolicy",{enumerable:true,get:function(){return chunkSMEZAQNJ_js.a}});exports.NDPRBreachReport=Y;exports.NDPRComplianceDashboard=de;exports.NDPRCrossBorder=te;exports.NDPRDPIA=V;exports.NDPRLawfulBasis=X;exports.NDPRROPA=ie;
2
+ 'use strict';var chunkVTBHDHYK_js=require('./chunk-VTBHDHYK.js'),chunkVEWLYTRA_js=require('./chunk-VEWLYTRA.js'),chunkSMEZAQNJ_js=require('./chunk-SMEZAQNJ.js');require('./chunk-6KQADEFS.js');var chunkNUWVPRNI_js=require('./chunk-NUWVPRNI.js'),chunkLHQG25Y2_js=require('./chunk-LHQG25Y2.js'),chunkERCGW2DJ_js=require('./chunk-ERCGW2DJ.js'),chunk2OSZT7KI_js=require('./chunk-2OSZT7KI.js'),chunk37VR2MXL_js=require('./chunk-37VR2MXL.js');require('./chunk-NUOHT3LO.js'),require('./chunk-QHW4UKGJ.js'),require('./chunk-Y346CURW.js'),require('./chunk-JS7SYL5P.js');var chunk7TTXS7JX_js=require('./chunk-7TTXS7JX.js');require('./chunk-6LJHLE6G.js'),require('./chunk-YFBDJ4FH.js'),require('./chunk-WZYCBW2R.js'),require('./chunk-4CVBQC66.js'),require('./chunk-PXUX4FYM.js'),require('./chunk-L2VO3MEJ.js'),require('./chunk-FRHFIEWZ.js'),require('./chunk-UXUMYP4L.js');var chunkDRQURLN5_js=require('./chunk-DRQURLN5.js'),chunkTQZWJGJ2_js=require('./chunk-TQZWJGJ2.js');require('./chunk-ZVOIR4QH.js'),require('./chunk-AME4HJR4.js'),require('./chunk-I5ZDNSX5.js'),require('./chunk-7563FVMY.js'),require('./chunk-VWED6UTN.js');var chunkRFPLZDIO_js=require('./chunk-RFPLZDIO.js'),jsxRuntime=require('react/jsx-runtime'),react=require('react');var W=[{id:"unauthorized_access",name:"Unauthorized Access",description:"Unauthorized access to personal data",defaultSeverity:"high"},{id:"data_loss",name:"Data Loss",description:"Loss of personal data",defaultSeverity:"high"},{id:"data_theft",name:"Data Theft",description:"Theft of personal data",defaultSeverity:"critical"},{id:"system_breach",name:"System Breach",description:"Breach of system containing personal data",defaultSeverity:"critical"},{id:"accidental_disclosure",name:"Accidental Disclosure",description:"Unintended disclosure of personal data",defaultSeverity:"medium"}],Y=({categories:p=W,adapter:o,classNames:P,unstyled:h,onSubmit:a=()=>{},copy:r,description:c,submitTo:s,submitOptions:i,onSubmitError:f,onSubmitSuccess:R})=>{var e;let d=n=>chunkRFPLZDIO_js.d(null,null,function*(){var u,N;if(s){let C=typeof(i==null?void 0:i.headers)=="function"?i.headers():(u=i==null?void 0:i.headers)!=null?u:{};try{let A=yield fetch(s,{method:"POST",headers:chunkRFPLZDIO_js.a({"Content-Type":"application/json"},C),credentials:(N=i==null?void 0:i.credentials)!=null?N:"same-origin",body:JSON.stringify(n)});if(!A.ok)f==null||f({response:A});else if(R){let v;try{let D=yield A.clone().text();D&&(v=JSON.parse(D));}catch(D){}R({response:A,data:n,body:v});}}catch(A){f==null||f({error:A});}}else o&&o.save(n);a(n);}),t=(e=r==null?void 0:r.description)!=null?e:c;return jsxRuntime.jsx(chunkLHQG25Y2_js.a,{categories:p,onSubmit:d,classNames:P,unstyled:h,title:r==null?void 0:r.title,description:t,submitButtonText:r==null?void 0:r.submitButton})};var j=[{id:"project_overview",title:"Project Overview",description:"Provide basic details about the processing activity being assessed.",order:0,questions:[{id:"project_name",text:"What is the name of the project or processing activity?",type:"text",required:true},{id:"project_description",text:"Describe the nature and purpose of the processing.",guidance:"Include what personal data will be collected, why it is needed, and how it will be used.",type:"textarea",required:true},{id:"data_controller",text:"Who is the data controller responsible for this processing?",type:"text",required:true}]},{id:"necessity",title:"Necessity & Proportionality",description:"Assess whether the processing is necessary and proportionate to the purposes.",order:1,questions:[{id:"lawful_basis",text:"What is the lawful basis for processing under the NDPA 2023?",type:"select",required:true,options:[{value:"consent",label:"Consent (Section 25(1)(a))"},{value:"contract",label:"Contract (Section 25(1)(b))"},{value:"legal_obligation",label:"Legal Obligation (Section 25(1)(c))"},{value:"vital_interests",label:"Vital Interests (Section 25(1)(d))"},{value:"public_task",label:"Public Task (Section 25(1)(e))"},{value:"legitimate_interests",label:"Legitimate Interests (Section 25(1)(f))"}]},{id:"data_minimisation",text:"Is the processing limited to what is necessary for the specified purpose?",type:"radio",required:true,options:[{value:"yes",label:"Yes \u2014 only minimum data is collected",riskLevel:"low"},{value:"partial",label:"Partially \u2014 some additional data may be collected",riskLevel:"medium"},{value:"no",label:"No \u2014 more data is collected than strictly necessary",riskLevel:"high"}]}]},{id:"risk_identification",title:"Risk Identification",description:"Identify and assess risks to data subjects arising from the processing.",order:2,questions:[{id:"sensitive_data",text:"Does the processing involve sensitive personal data (e.g., health, biometric, financial, children's data)?",type:"radio",required:true,options:[{value:"no",label:"No sensitive data",riskLevel:"low"},{value:"yes_protected",label:"Yes, with appropriate safeguards",riskLevel:"medium"},{value:"yes_unprotected",label:"Yes, without adequate safeguards",riskLevel:"high"}]},{id:"scale",text:"What is the scale of processing?",type:"radio",required:true,options:[{value:"small",label:"Small scale (fewer than 1,000 individuals)",riskLevel:"low"},{value:"medium",label:"Medium scale (1,000 to 100,000 individuals)",riskLevel:"medium"},{value:"large",label:"Large scale (over 100,000 individuals)",riskLevel:"high"}]},{id:"cross_border",text:"Will data be transferred outside Nigeria?",type:"radio",required:true,options:[{value:"no",label:"No international transfers",riskLevel:"low"},{value:"adequate",label:"Yes, to countries with adequate protection",riskLevel:"medium"},{value:"inadequate",label:"Yes, to countries without adequate protection",riskLevel:"high"}]}]},{id:"mitigation",title:"Risk Mitigation & Measures",description:"Document the measures taken to address identified risks.",order:3,questions:[{id:"security_measures",text:"What technical and organisational security measures are in place?",guidance:"Include encryption, access controls, pseudonymisation, staff training, etc.",type:"textarea",required:true},{id:"retention_period",text:"What is the data retention period?",guidance:"Specify how long data will be kept and the criteria used to determine this.",type:"text",required:true},{id:"dpo_consulted",text:"Has the Data Protection Officer (DPO) been consulted on this assessment?",type:"radio",required:false,options:[{value:"yes",label:"Yes",riskLevel:"low"},{value:"no",label:"No",riskLevel:"medium"},{value:"na",label:"Not applicable \u2014 no DPO appointed",riskLevel:"medium"}]}]}];function J(p,o){let P=[],h=s=>{let i=o[s.id];if(i!=null&&s.riskLevel)if(["select","radio","checkbox"].includes(s.type)&&s.options)(Array.isArray(i)?i:[i]).forEach(R=>{var t;let d=(t=s.options)==null?void 0:t.find(e=>e.value===R);if(d!=null&&d.riskLevel){let e=d.riskLevel,n=e==="low"?1:e==="medium"?3:5,u=e==="low"?1:e==="medium"?3:5;P.push({id:`risk_${P.length+1}`,description:`${s.text} - ${d.label}`,likelihood:n,impact:u,score:n*u,level:e,mitigated:false,relatedQuestionIds:[s.id]});}});else {let f=s.riskLevel,R=f==="low"?1:f==="medium"?3:5,d=f==="low"?1:f==="medium"?3:5;P.push({id:`risk_${P.length+1}`,description:s.text,likelihood:R,impact:d,score:R*d,level:f,mitigated:false,relatedQuestionIds:[s.id]});}};p.forEach(s=>s.questions.forEach(h));let a=Date.now(),r={id:`dpia_${a}`,title:"",processingDescription:"",startedAt:a,completedAt:a,assessor:{name:"",role:"",email:""},answers:o,risks:P,overallRiskLevel:"low",canProceed:true,conclusion:"",version:"1.0"},c=chunkTQZWJGJ2_js.a(r);return r.overallRiskLevel=c.overallRiskLevel,r.canProceed=c.canProceed,r.conclusion=c.canProceed?"Based on the assessment, the processing can proceed with appropriate safeguards.":"Based on the assessment, the processing should not proceed without further mitigation measures.",r.recommendations=c.recommendations,r}var V=({sections:p=j,adapter:o,classNames:P,unstyled:h,onResult:a,copy:r,submitTo:c,submitOptions:s,onSubmitError:i,onSubmitSuccess:f})=>{let[R,d]=react.useState({}),[t,e]=react.useState(0),n=(v,D)=>{d(w=>chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},w),{[v]:D}));},u=v=>chunkRFPLZDIO_js.d(null,null,function*(){var D,w;if(c){let q=typeof(s==null?void 0:s.headers)=="function"?s.headers():(D=s==null?void 0:s.headers)!=null?D:{};try{let y=yield fetch(c,{method:"POST",headers:chunkRFPLZDIO_js.a({"Content-Type":"application/json"},q),credentials:(w=s==null?void 0:s.credentials)!=null?w:"same-origin",body:JSON.stringify(v)});if(!y.ok)i==null||i({response:y});else if(f){let x;try{let B=yield y.clone().text();B&&(x=JSON.parse(B));}catch(B){}f({response:y,data:v,body:x});}}catch(y){i==null||i({error:y});}}else o&&o.save(v);a==null||a(J(p,v));}),N=()=>{t<p.length-1?e(v=>v+1):u(R);},C=()=>{t>0&&e(v=>v-1);},A=Math.round((t+1)/p.length*100);return jsxRuntime.jsx(chunkDRQURLN5_js.a,{sections:p,answers:R,onAnswerChange:n,currentSectionIndex:t,onNextSection:N,onPrevSection:C,progress:A,classNames:P,unstyled:h,submitButtonText:r==null?void 0:r.submitButton,nextButtonText:r==null?void 0:r.nextButton,prevButtonText:r==null?void 0:r.prevButton})};var X=({initialData:p,adapter:o,classNames:P,unstyled:h,copy:a})=>{let r=p!=null?p:[],[c,s]=react.useState(()=>{if(o){let t=o.load();if(t&&!(t instanceof Promise))return t}return r});react.useEffect(()=>{if(!o)return;let t=false;return chunkRFPLZDIO_js.d(null,null,function*(){try{let e=yield o.load();!t&&e&&s(e);}catch(e){}}),()=>{t=true;}},[o]);let i=t=>{o&&o.save(t);};return jsxRuntime.jsx(chunkERCGW2DJ_js.a,{activities:c,onAdd:t=>{let e=Date.now(),n=chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},t),{id:`activity-${e}`,createdAt:e,updatedAt:e}),u=[...c,n];s(u),i(u);},onUpdate:(t,e)=>{let n=c.map(u=>u.id===t?chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a(chunkRFPLZDIO_js.a({},u),e),{updatedAt:Date.now()}):u);s(n),i(n);},onArchive:t=>{let e=c.map(n=>n.id===t?chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},n),{status:"inactive",updatedAt:Date.now()}):n);s(e),i(e);},classNames:P,unstyled:h,title:a==null?void 0:a.title,description:a==null?void 0:a.description})};var te=({initialData:p,adapter:o,classNames:P,unstyled:h,copy:a})=>{let r=p!=null?p:[],[c,s]=react.useState(()=>{if(o){let t=o.load();if(t&&!(t instanceof Promise))return t}return r});react.useEffect(()=>{if(!o)return;let t=false;return chunkRFPLZDIO_js.d(null,null,function*(){try{let e=yield o.load();!t&&e&&s(e);}catch(e){}}),()=>{t=true;}},[o]);let i=t=>{o&&o.save(t);};return jsxRuntime.jsx(chunk2OSZT7KI_js.a,{transfers:c,onAdd:t=>{let e=Date.now(),n=chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},t),{id:`transfer-${e}`,createdAt:e,updatedAt:e}),u=[...c,n];s(u),i(u);},onUpdate:(t,e)=>{let n=c.map(u=>u.id===t?chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a(chunkRFPLZDIO_js.a({},u),e),{updatedAt:Date.now()}):u);s(n),i(n);},onArchive:t=>{let e=c.filter(n=>n.id!==t);s(e),i(e);},classNames:P,unstyled:h,title:a==null?void 0:a.title,description:a==null?void 0:a.description})};var ae={id:"ndpr-ropa-default",organizationName:"Your Organisation",organizationContact:"",organizationAddress:"",records:[],lastUpdated:Date.now(),version:"1.0"},ie=({initialData:p,adapter:o,classNames:P,unstyled:h,copy:a})=>{let[r,c]=react.useState(p!=null?p:ae);react.useEffect(()=>{if(!o)return;let d=false;return chunkRFPLZDIO_js.d(null,null,function*(){let e=yield o.load();!d&&e&&c(e);}),()=>{d=true;}},[o]);let s=d=>{o&&o.save(d);};return jsxRuntime.jsx(chunk37VR2MXL_js.a,{ropa:r,onAdd:d=>{let t=chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},r),{records:[...r.records,d],lastUpdated:Date.now()});c(t),s(t);},onUpdate:(d,t)=>{let e=chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},r),{records:r.records.map(n=>n.id===d?chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a(chunkRFPLZDIO_js.a({},n),t),{updatedAt:Date.now()}):n),lastUpdated:Date.now()});c(e),s(e);},onArchive:d=>{let t=chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},r),{records:r.records.map(e=>e.id===d?chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},e),{status:"archived",updatedAt:Date.now()}):e),lastUpdated:Date.now()});c(t),s(t);},classNames:P,unstyled:h,title:a==null?void 0:a.title,description:a==null?void 0:a.description})};var de=P=>{var h=P,{input:p}=h,o=chunkRFPLZDIO_js.c(h,["input"]);let a=chunk7TTXS7JX_js.a(p);return jsxRuntime.jsx(chunkNUWVPRNI_js.a,chunkRFPLZDIO_js.a({report:a},o))};Object.defineProperty(exports,"NDPRConsent",{enumerable:true,get:function(){return chunkVTBHDHYK_js.a}});Object.defineProperty(exports,"NDPRSubjectRights",{enumerable:true,get:function(){return chunkVEWLYTRA_js.a}});Object.defineProperty(exports,"NDPRPrivacyPolicy",{enumerable:true,get:function(){return chunkSMEZAQNJ_js.a}});exports.NDPRBreachReport=Y;exports.NDPRComplianceDashboard=de;exports.NDPRCrossBorder=te;exports.NDPRDPIA=V;exports.NDPRLawfulBasis=X;exports.NDPRROPA=ie;
package/dist/presets.mjs CHANGED
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- export{a as NDPRConsent}from'./chunk-C77CRJLD.mjs';export{a as NDPRSubjectRights}from'./chunk-OLTLB5MP.mjs';export{a as NDPRPrivacyPolicy}from'./chunk-TWWGNFPF.mjs';import'./chunk-HDPXARLC.mjs';import {a as a$7}from'./chunk-ZIZL37BG.mjs';import {a}from'./chunk-WLZTATLL.mjs';import {a as a$2}from'./chunk-RW7V7DDR.mjs';import {a as a$4}from'./chunk-6UGLAVRM.mjs';import {a as a$5}from'./chunk-2ASQQYJR.mjs';import'./chunk-CWY2FMIC.mjs';import'./chunk-KE2FZH2V.mjs';import'./chunk-IVSNHT24.mjs';import {a as a$6}from'./chunk-6A7M4CGJ.mjs';import'./chunk-BIJSMSUU.mjs';import'./chunk-7BJXI2HI.mjs';import'./chunk-LWIKDDSU.mjs';import'./chunk-XP5PL6K7.mjs';import'./chunk-HMKXK23C.mjs';import'./chunk-YTU4FNM2.mjs';import'./chunk-EAV4BZKO.mjs';import'./chunk-EWVK45Z3.mjs';import {a as a$1}from'./chunk-YZHEEGGK.mjs';import {a as a$8}from'./chunk-LRRENTT5.mjs';import'./chunk-ITCY2Z66.mjs';import'./chunk-SFGW37LE.mjs';import'./chunk-PHA3YMFO.mjs';import'./chunk-5LJ652AH.mjs';import'./chunk-DBZSN4WP.mjs';import {d,b,a as a$3,c}from'./chunk-ZJYULEER.mjs';import {jsx}from'react/jsx-runtime';import {useState,useEffect}from'react';var W=[{id:"unauthorized_access",name:"Unauthorized Access",description:"Unauthorized access to personal data",defaultSeverity:"high"},{id:"data_loss",name:"Data Loss",description:"Loss of personal data",defaultSeverity:"high"},{id:"data_theft",name:"Data Theft",description:"Theft of personal data",defaultSeverity:"critical"},{id:"system_breach",name:"System Breach",description:"Breach of system containing personal data",defaultSeverity:"critical"},{id:"accidental_disclosure",name:"Accidental Disclosure",description:"Unintended disclosure of personal data",defaultSeverity:"medium"}],Y=({categories:p=W,adapter:o,classNames:P,unstyled:h,onSubmit:a$1=()=>{},copy:r,description:c,submitTo:s,submitOptions:i,onSubmitError:f,onSubmitSuccess:R})=>{var e;let d$1=n=>d(null,null,function*(){var u,N;if(s){let C=typeof(i==null?void 0:i.headers)=="function"?i.headers():(u=i==null?void 0:i.headers)!=null?u:{};try{let A=yield fetch(s,{method:"POST",headers:a$3({"Content-Type":"application/json"},C),credentials:(N=i==null?void 0:i.credentials)!=null?N:"same-origin",body:JSON.stringify(n)});if(!A.ok)f==null||f({response:A});else if(R){let v;try{let D=yield A.clone().text();D&&(v=JSON.parse(D));}catch(D){}R({response:A,data:n,body:v});}}catch(A){f==null||f({error:A});}}else o&&o.save(n);a$1(n);}),t=(e=r==null?void 0:r.description)!=null?e:c;return jsx(a,{categories:p,onSubmit:d$1,classNames:P,unstyled:h,title:r==null?void 0:r.title,description:t,submitButtonText:r==null?void 0:r.submitButton})};var j=[{id:"project_overview",title:"Project Overview",description:"Provide basic details about the processing activity being assessed.",order:0,questions:[{id:"project_name",text:"What is the name of the project or processing activity?",type:"text",required:true},{id:"project_description",text:"Describe the nature and purpose of the processing.",guidance:"Include what personal data will be collected, why it is needed, and how it will be used.",type:"textarea",required:true},{id:"data_controller",text:"Who is the data controller responsible for this processing?",type:"text",required:true}]},{id:"necessity",title:"Necessity & Proportionality",description:"Assess whether the processing is necessary and proportionate to the purposes.",order:1,questions:[{id:"lawful_basis",text:"What is the lawful basis for processing under the NDPA 2023?",type:"select",required:true,options:[{value:"consent",label:"Consent (Section 25(1)(a))"},{value:"contract",label:"Contract (Section 25(1)(b))"},{value:"legal_obligation",label:"Legal Obligation (Section 25(1)(c))"},{value:"vital_interests",label:"Vital Interests (Section 25(1)(d))"},{value:"public_task",label:"Public Task (Section 25(1)(e))"},{value:"legitimate_interests",label:"Legitimate Interests (Section 25(1)(f))"}]},{id:"data_minimisation",text:"Is the processing limited to what is necessary for the specified purpose?",type:"radio",required:true,options:[{value:"yes",label:"Yes \u2014 only minimum data is collected",riskLevel:"low"},{value:"partial",label:"Partially \u2014 some additional data may be collected",riskLevel:"medium"},{value:"no",label:"No \u2014 more data is collected than strictly necessary",riskLevel:"high"}]}]},{id:"risk_identification",title:"Risk Identification",description:"Identify and assess risks to data subjects arising from the processing.",order:2,questions:[{id:"sensitive_data",text:"Does the processing involve sensitive personal data (e.g., health, biometric, financial, children's data)?",type:"radio",required:true,options:[{value:"no",label:"No sensitive data",riskLevel:"low"},{value:"yes_protected",label:"Yes, with appropriate safeguards",riskLevel:"medium"},{value:"yes_unprotected",label:"Yes, without adequate safeguards",riskLevel:"high"}]},{id:"scale",text:"What is the scale of processing?",type:"radio",required:true,options:[{value:"small",label:"Small scale (fewer than 1,000 individuals)",riskLevel:"low"},{value:"medium",label:"Medium scale (1,000 to 100,000 individuals)",riskLevel:"medium"},{value:"large",label:"Large scale (over 100,000 individuals)",riskLevel:"high"}]},{id:"cross_border",text:"Will data be transferred outside Nigeria?",type:"radio",required:true,options:[{value:"no",label:"No international transfers",riskLevel:"low"},{value:"adequate",label:"Yes, to countries with adequate protection",riskLevel:"medium"},{value:"inadequate",label:"Yes, to countries without adequate protection",riskLevel:"high"}]}]},{id:"mitigation",title:"Risk Mitigation & Measures",description:"Document the measures taken to address identified risks.",order:3,questions:[{id:"security_measures",text:"What technical and organisational security measures are in place?",guidance:"Include encryption, access controls, pseudonymisation, staff training, etc.",type:"textarea",required:true},{id:"retention_period",text:"What is the data retention period?",guidance:"Specify how long data will be kept and the criteria used to determine this.",type:"text",required:true},{id:"dpo_consulted",text:"Has the Data Protection Officer (DPO) been consulted on this assessment?",type:"radio",required:false,options:[{value:"yes",label:"Yes",riskLevel:"low"},{value:"no",label:"No",riskLevel:"medium"},{value:"na",label:"Not applicable \u2014 no DPO appointed",riskLevel:"medium"}]}]}];function J(p,o){let P=[],h=s=>{let i=o[s.id];if(i!=null&&s.riskLevel)if(["select","radio","checkbox"].includes(s.type)&&s.options)(Array.isArray(i)?i:[i]).forEach(R=>{var t;let d=(t=s.options)==null?void 0:t.find(e=>e.value===R);if(d!=null&&d.riskLevel){let e=d.riskLevel,n=e==="low"?1:e==="medium"?3:5,u=e==="low"?1:e==="medium"?3:5;P.push({id:`risk_${P.length+1}`,description:`${s.text} - ${d.label}`,likelihood:n,impact:u,score:n*u,level:e,mitigated:false,relatedQuestionIds:[s.id]});}});else {let f=s.riskLevel,R=f==="low"?1:f==="medium"?3:5,d=f==="low"?1:f==="medium"?3:5;P.push({id:`risk_${P.length+1}`,description:s.text,likelihood:R,impact:d,score:R*d,level:f,mitigated:false,relatedQuestionIds:[s.id]});}};p.forEach(s=>s.questions.forEach(h));let a=Date.now(),r={id:`dpia_${a}`,title:"",processingDescription:"",startedAt:a,completedAt:a,assessor:{name:"",role:"",email:""},answers:o,risks:P,overallRiskLevel:"low",canProceed:true,conclusion:"",version:"1.0"},c=a$8(r);return r.overallRiskLevel=c.overallRiskLevel,r.canProceed=c.canProceed,r.conclusion=c.canProceed?"Based on the assessment, the processing can proceed with appropriate safeguards.":"Based on the assessment, the processing should not proceed without further mitigation measures.",r.recommendations=c.recommendations,r}var V=({sections:p=j,adapter:o,classNames:P,unstyled:h,onResult:a,copy:r,submitTo:c,submitOptions:s,onSubmitError:i,onSubmitSuccess:f})=>{let[R,d$1]=useState({}),[t,e]=useState(0),n=(v,D)=>{d$1(w=>b(a$3({},w),{[v]:D}));},u=v=>d(null,null,function*(){var D,w;if(c){let q=typeof(s==null?void 0:s.headers)=="function"?s.headers():(D=s==null?void 0:s.headers)!=null?D:{};try{let y=yield fetch(c,{method:"POST",headers:a$3({"Content-Type":"application/json"},q),credentials:(w=s==null?void 0:s.credentials)!=null?w:"same-origin",body:JSON.stringify(v)});if(!y.ok)i==null||i({response:y});else if(f){let x;try{let B=yield y.clone().text();B&&(x=JSON.parse(B));}catch(B){}f({response:y,data:v,body:x});}}catch(y){i==null||i({error:y});}}else o&&o.save(v);a==null||a(J(p,v));}),N=()=>{t<p.length-1?e(v=>v+1):u(R);},C=()=>{t>0&&e(v=>v-1);},A=Math.round((t+1)/p.length*100);return jsx(a$1,{sections:p,answers:R,onAnswerChange:n,currentSectionIndex:t,onNextSection:N,onPrevSection:C,progress:A,classNames:P,unstyled:h,submitButtonText:r==null?void 0:r.submitButton,nextButtonText:r==null?void 0:r.nextButton,prevButtonText:r==null?void 0:r.prevButton})};var X=({initialData:p,adapter:o,classNames:P,unstyled:h,copy:a})=>{let r=p!=null?p:[],[c,s]=useState(()=>{if(o){let t=o.load();if(t&&!(t instanceof Promise))return t}return r});useEffect(()=>{if(!o)return;let t=false;return d(null,null,function*(){try{let e=yield o.load();!t&&e&&s(e);}catch(e){}}),()=>{t=true;}},[o]);let i=t=>{o&&o.save(t);};return jsx(a$2,{activities:c,onAdd:t=>{let e=Date.now(),n=b(a$3({},t),{id:`activity-${e}`,createdAt:e,updatedAt:e}),u=[...c,n];s(u),i(u);},onUpdate:(t,e)=>{let n=c.map(u=>u.id===t?b(a$3(a$3({},u),e),{updatedAt:Date.now()}):u);s(n),i(n);},onArchive:t=>{let e=c.map(n=>n.id===t?b(a$3({},n),{status:"inactive",updatedAt:Date.now()}):n);s(e),i(e);},classNames:P,unstyled:h,title:a==null?void 0:a.title,description:a==null?void 0:a.description})};var te=({initialData:p,adapter:o,classNames:P,unstyled:h,copy:a})=>{let r=p!=null?p:[],[c,s]=useState(()=>{if(o){let t=o.load();if(t&&!(t instanceof Promise))return t}return r});useEffect(()=>{if(!o)return;let t=false;return d(null,null,function*(){try{let e=yield o.load();!t&&e&&s(e);}catch(e){}}),()=>{t=true;}},[o]);let i=t=>{o&&o.save(t);};return jsx(a$4,{transfers:c,onAdd:t=>{let e=Date.now(),n=b(a$3({},t),{id:`transfer-${e}`,createdAt:e,updatedAt:e}),u=[...c,n];s(u),i(u);},onUpdate:(t,e)=>{let n=c.map(u=>u.id===t?b(a$3(a$3({},u),e),{updatedAt:Date.now()}):u);s(n),i(n);},onArchive:t=>{let e=c.filter(n=>n.id!==t);s(e),i(e);},classNames:P,unstyled:h,title:a==null?void 0:a.title,description:a==null?void 0:a.description})};var ae={id:"ndpr-ropa-default",organizationName:"Your Organisation",organizationContact:"",organizationAddress:"",records:[],lastUpdated:Date.now(),version:"1.0"},ie=({initialData:p,adapter:o,classNames:P,unstyled:h,copy:a})=>{let[r,c]=useState(p!=null?p:ae);useEffect(()=>{if(!o)return;let d$1=false;return d(null,null,function*(){let e=yield o.load();!d$1&&e&&c(e);}),()=>{d$1=true;}},[o]);let s=d=>{o&&o.save(d);};return jsx(a$5,{ropa:r,onAdd:d=>{let t=b(a$3({},r),{records:[...r.records,d],lastUpdated:Date.now()});c(t),s(t);},onUpdate:(d,t)=>{let e=b(a$3({},r),{records:r.records.map(n=>n.id===d?b(a$3(a$3({},n),t),{updatedAt:Date.now()}):n),lastUpdated:Date.now()});c(e),s(e);},onArchive:d=>{let t=b(a$3({},r),{records:r.records.map(e=>e.id===d?b(a$3({},e),{status:"archived",updatedAt:Date.now()}):e),lastUpdated:Date.now()});c(t),s(t);},classNames:P,unstyled:h,title:a==null?void 0:a.title,description:a==null?void 0:a.description})};var de=P=>{var h=P,{input:p}=h,o=c(h,["input"]);let a=a$6(p);return jsx(a$7,a$3({report:a},o))};export{Y as NDPRBreachReport,de as NDPRComplianceDashboard,te as NDPRCrossBorder,V as NDPRDPIA,X as NDPRLawfulBasis,ie as NDPRROPA};
2
+ export{a as NDPRConsent}from'./chunk-C77CRJLD.mjs';export{a as NDPRSubjectRights}from'./chunk-OLTLB5MP.mjs';export{a as NDPRPrivacyPolicy}from'./chunk-TWWGNFPF.mjs';import'./chunk-HDPXARLC.mjs';import {a as a$7}from'./chunk-ZIZL37BG.mjs';import {a}from'./chunk-5ZMYNOMR.mjs';import {a as a$2}from'./chunk-RW7V7DDR.mjs';import {a as a$4}from'./chunk-6UGLAVRM.mjs';import {a as a$5}from'./chunk-2ASQQYJR.mjs';import'./chunk-CWY2FMIC.mjs';import'./chunk-KE2FZH2V.mjs';import'./chunk-WJSUVPYX.mjs';import'./chunk-IVSNHT24.mjs';import {a as a$6}from'./chunk-6A7M4CGJ.mjs';import'./chunk-BIJSMSUU.mjs';import'./chunk-7BJXI2HI.mjs';import'./chunk-LWIKDDSU.mjs';import'./chunk-XP5PL6K7.mjs';import'./chunk-HMKXK23C.mjs';import'./chunk-YTU4FNM2.mjs';import'./chunk-EAV4BZKO.mjs';import'./chunk-EWVK45Z3.mjs';import {a as a$1}from'./chunk-YZHEEGGK.mjs';import {a as a$8}from'./chunk-LRRENTT5.mjs';import'./chunk-ITCY2Z66.mjs';import'./chunk-SFGW37LE.mjs';import'./chunk-PHA3YMFO.mjs';import'./chunk-5LJ652AH.mjs';import'./chunk-DBZSN4WP.mjs';import {d,b,a as a$3,c}from'./chunk-ZJYULEER.mjs';import {jsx}from'react/jsx-runtime';import {useState,useEffect}from'react';var W=[{id:"unauthorized_access",name:"Unauthorized Access",description:"Unauthorized access to personal data",defaultSeverity:"high"},{id:"data_loss",name:"Data Loss",description:"Loss of personal data",defaultSeverity:"high"},{id:"data_theft",name:"Data Theft",description:"Theft of personal data",defaultSeverity:"critical"},{id:"system_breach",name:"System Breach",description:"Breach of system containing personal data",defaultSeverity:"critical"},{id:"accidental_disclosure",name:"Accidental Disclosure",description:"Unintended disclosure of personal data",defaultSeverity:"medium"}],Y=({categories:p=W,adapter:o,classNames:P,unstyled:h,onSubmit:a$1=()=>{},copy:r,description:c,submitTo:s,submitOptions:i,onSubmitError:f,onSubmitSuccess:R})=>{var e;let d$1=n=>d(null,null,function*(){var u,N;if(s){let C=typeof(i==null?void 0:i.headers)=="function"?i.headers():(u=i==null?void 0:i.headers)!=null?u:{};try{let A=yield fetch(s,{method:"POST",headers:a$3({"Content-Type":"application/json"},C),credentials:(N=i==null?void 0:i.credentials)!=null?N:"same-origin",body:JSON.stringify(n)});if(!A.ok)f==null||f({response:A});else if(R){let v;try{let D=yield A.clone().text();D&&(v=JSON.parse(D));}catch(D){}R({response:A,data:n,body:v});}}catch(A){f==null||f({error:A});}}else o&&o.save(n);a$1(n);}),t=(e=r==null?void 0:r.description)!=null?e:c;return jsx(a,{categories:p,onSubmit:d$1,classNames:P,unstyled:h,title:r==null?void 0:r.title,description:t,submitButtonText:r==null?void 0:r.submitButton})};var j=[{id:"project_overview",title:"Project Overview",description:"Provide basic details about the processing activity being assessed.",order:0,questions:[{id:"project_name",text:"What is the name of the project or processing activity?",type:"text",required:true},{id:"project_description",text:"Describe the nature and purpose of the processing.",guidance:"Include what personal data will be collected, why it is needed, and how it will be used.",type:"textarea",required:true},{id:"data_controller",text:"Who is the data controller responsible for this processing?",type:"text",required:true}]},{id:"necessity",title:"Necessity & Proportionality",description:"Assess whether the processing is necessary and proportionate to the purposes.",order:1,questions:[{id:"lawful_basis",text:"What is the lawful basis for processing under the NDPA 2023?",type:"select",required:true,options:[{value:"consent",label:"Consent (Section 25(1)(a))"},{value:"contract",label:"Contract (Section 25(1)(b))"},{value:"legal_obligation",label:"Legal Obligation (Section 25(1)(c))"},{value:"vital_interests",label:"Vital Interests (Section 25(1)(d))"},{value:"public_task",label:"Public Task (Section 25(1)(e))"},{value:"legitimate_interests",label:"Legitimate Interests (Section 25(1)(f))"}]},{id:"data_minimisation",text:"Is the processing limited to what is necessary for the specified purpose?",type:"radio",required:true,options:[{value:"yes",label:"Yes \u2014 only minimum data is collected",riskLevel:"low"},{value:"partial",label:"Partially \u2014 some additional data may be collected",riskLevel:"medium"},{value:"no",label:"No \u2014 more data is collected than strictly necessary",riskLevel:"high"}]}]},{id:"risk_identification",title:"Risk Identification",description:"Identify and assess risks to data subjects arising from the processing.",order:2,questions:[{id:"sensitive_data",text:"Does the processing involve sensitive personal data (e.g., health, biometric, financial, children's data)?",type:"radio",required:true,options:[{value:"no",label:"No sensitive data",riskLevel:"low"},{value:"yes_protected",label:"Yes, with appropriate safeguards",riskLevel:"medium"},{value:"yes_unprotected",label:"Yes, without adequate safeguards",riskLevel:"high"}]},{id:"scale",text:"What is the scale of processing?",type:"radio",required:true,options:[{value:"small",label:"Small scale (fewer than 1,000 individuals)",riskLevel:"low"},{value:"medium",label:"Medium scale (1,000 to 100,000 individuals)",riskLevel:"medium"},{value:"large",label:"Large scale (over 100,000 individuals)",riskLevel:"high"}]},{id:"cross_border",text:"Will data be transferred outside Nigeria?",type:"radio",required:true,options:[{value:"no",label:"No international transfers",riskLevel:"low"},{value:"adequate",label:"Yes, to countries with adequate protection",riskLevel:"medium"},{value:"inadequate",label:"Yes, to countries without adequate protection",riskLevel:"high"}]}]},{id:"mitigation",title:"Risk Mitigation & Measures",description:"Document the measures taken to address identified risks.",order:3,questions:[{id:"security_measures",text:"What technical and organisational security measures are in place?",guidance:"Include encryption, access controls, pseudonymisation, staff training, etc.",type:"textarea",required:true},{id:"retention_period",text:"What is the data retention period?",guidance:"Specify how long data will be kept and the criteria used to determine this.",type:"text",required:true},{id:"dpo_consulted",text:"Has the Data Protection Officer (DPO) been consulted on this assessment?",type:"radio",required:false,options:[{value:"yes",label:"Yes",riskLevel:"low"},{value:"no",label:"No",riskLevel:"medium"},{value:"na",label:"Not applicable \u2014 no DPO appointed",riskLevel:"medium"}]}]}];function J(p,o){let P=[],h=s=>{let i=o[s.id];if(i!=null&&s.riskLevel)if(["select","radio","checkbox"].includes(s.type)&&s.options)(Array.isArray(i)?i:[i]).forEach(R=>{var t;let d=(t=s.options)==null?void 0:t.find(e=>e.value===R);if(d!=null&&d.riskLevel){let e=d.riskLevel,n=e==="low"?1:e==="medium"?3:5,u=e==="low"?1:e==="medium"?3:5;P.push({id:`risk_${P.length+1}`,description:`${s.text} - ${d.label}`,likelihood:n,impact:u,score:n*u,level:e,mitigated:false,relatedQuestionIds:[s.id]});}});else {let f=s.riskLevel,R=f==="low"?1:f==="medium"?3:5,d=f==="low"?1:f==="medium"?3:5;P.push({id:`risk_${P.length+1}`,description:s.text,likelihood:R,impact:d,score:R*d,level:f,mitigated:false,relatedQuestionIds:[s.id]});}};p.forEach(s=>s.questions.forEach(h));let a=Date.now(),r={id:`dpia_${a}`,title:"",processingDescription:"",startedAt:a,completedAt:a,assessor:{name:"",role:"",email:""},answers:o,risks:P,overallRiskLevel:"low",canProceed:true,conclusion:"",version:"1.0"},c=a$8(r);return r.overallRiskLevel=c.overallRiskLevel,r.canProceed=c.canProceed,r.conclusion=c.canProceed?"Based on the assessment, the processing can proceed with appropriate safeguards.":"Based on the assessment, the processing should not proceed without further mitigation measures.",r.recommendations=c.recommendations,r}var V=({sections:p=j,adapter:o,classNames:P,unstyled:h,onResult:a,copy:r,submitTo:c,submitOptions:s,onSubmitError:i,onSubmitSuccess:f})=>{let[R,d$1]=useState({}),[t,e]=useState(0),n=(v,D)=>{d$1(w=>b(a$3({},w),{[v]:D}));},u=v=>d(null,null,function*(){var D,w;if(c){let q=typeof(s==null?void 0:s.headers)=="function"?s.headers():(D=s==null?void 0:s.headers)!=null?D:{};try{let y=yield fetch(c,{method:"POST",headers:a$3({"Content-Type":"application/json"},q),credentials:(w=s==null?void 0:s.credentials)!=null?w:"same-origin",body:JSON.stringify(v)});if(!y.ok)i==null||i({response:y});else if(f){let x;try{let B=yield y.clone().text();B&&(x=JSON.parse(B));}catch(B){}f({response:y,data:v,body:x});}}catch(y){i==null||i({error:y});}}else o&&o.save(v);a==null||a(J(p,v));}),N=()=>{t<p.length-1?e(v=>v+1):u(R);},C=()=>{t>0&&e(v=>v-1);},A=Math.round((t+1)/p.length*100);return jsx(a$1,{sections:p,answers:R,onAnswerChange:n,currentSectionIndex:t,onNextSection:N,onPrevSection:C,progress:A,classNames:P,unstyled:h,submitButtonText:r==null?void 0:r.submitButton,nextButtonText:r==null?void 0:r.nextButton,prevButtonText:r==null?void 0:r.prevButton})};var X=({initialData:p,adapter:o,classNames:P,unstyled:h,copy:a})=>{let r=p!=null?p:[],[c,s]=useState(()=>{if(o){let t=o.load();if(t&&!(t instanceof Promise))return t}return r});useEffect(()=>{if(!o)return;let t=false;return d(null,null,function*(){try{let e=yield o.load();!t&&e&&s(e);}catch(e){}}),()=>{t=true;}},[o]);let i=t=>{o&&o.save(t);};return jsx(a$2,{activities:c,onAdd:t=>{let e=Date.now(),n=b(a$3({},t),{id:`activity-${e}`,createdAt:e,updatedAt:e}),u=[...c,n];s(u),i(u);},onUpdate:(t,e)=>{let n=c.map(u=>u.id===t?b(a$3(a$3({},u),e),{updatedAt:Date.now()}):u);s(n),i(n);},onArchive:t=>{let e=c.map(n=>n.id===t?b(a$3({},n),{status:"inactive",updatedAt:Date.now()}):n);s(e),i(e);},classNames:P,unstyled:h,title:a==null?void 0:a.title,description:a==null?void 0:a.description})};var te=({initialData:p,adapter:o,classNames:P,unstyled:h,copy:a})=>{let r=p!=null?p:[],[c,s]=useState(()=>{if(o){let t=o.load();if(t&&!(t instanceof Promise))return t}return r});useEffect(()=>{if(!o)return;let t=false;return d(null,null,function*(){try{let e=yield o.load();!t&&e&&s(e);}catch(e){}}),()=>{t=true;}},[o]);let i=t=>{o&&o.save(t);};return jsx(a$4,{transfers:c,onAdd:t=>{let e=Date.now(),n=b(a$3({},t),{id:`transfer-${e}`,createdAt:e,updatedAt:e}),u=[...c,n];s(u),i(u);},onUpdate:(t,e)=>{let n=c.map(u=>u.id===t?b(a$3(a$3({},u),e),{updatedAt:Date.now()}):u);s(n),i(n);},onArchive:t=>{let e=c.filter(n=>n.id!==t);s(e),i(e);},classNames:P,unstyled:h,title:a==null?void 0:a.title,description:a==null?void 0:a.description})};var ae={id:"ndpr-ropa-default",organizationName:"Your Organisation",organizationContact:"",organizationAddress:"",records:[],lastUpdated:Date.now(),version:"1.0"},ie=({initialData:p,adapter:o,classNames:P,unstyled:h,copy:a})=>{let[r,c]=useState(p!=null?p:ae);useEffect(()=>{if(!o)return;let d$1=false;return d(null,null,function*(){let e=yield o.load();!d$1&&e&&c(e);}),()=>{d$1=true;}},[o]);let s=d=>{o&&o.save(d);};return jsx(a$5,{ropa:r,onAdd:d=>{let t=b(a$3({},r),{records:[...r.records,d],lastUpdated:Date.now()});c(t),s(t);},onUpdate:(d,t)=>{let e=b(a$3({},r),{records:r.records.map(n=>n.id===d?b(a$3(a$3({},n),t),{updatedAt:Date.now()}):n),lastUpdated:Date.now()});c(e),s(e);},onArchive:d=>{let t=b(a$3({},r),{records:r.records.map(e=>e.id===d?b(a$3({},e),{status:"archived",updatedAt:Date.now()}):e),lastUpdated:Date.now()});c(t),s(t);},classNames:P,unstyled:h,title:a==null?void 0:a.title,description:a==null?void 0:a.description})};var de=P=>{var h=P,{input:p}=h,o=c(h,["input"]);let a=a$6(p);return jsx(a$7,a$3({report:a},o))};export{Y as NDPRBreachReport,de as NDPRComplianceDashboard,te as NDPRCrossBorder,V as NDPRDPIA,X as NDPRLawfulBasis,ie as NDPRROPA};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tantainnovative/ndpr-toolkit",
3
- "version": "5.3.0",
3
+ "version": "5.4.0",
4
4
  "private": false,
5
5
  "packageManager": "pnpm@10.34.1",
6
6
  "description": "Nigeria Data Protection Toolkit — enterprise-grade compliance components for the Nigeria Data Protection Act (NDPA) 2023",
@@ -1,2 +0,0 @@
1
- 'use strict';var chunkUXUMYP4L_js=require('./chunk-UXUMYP4L.js'),chunkAME4HJR4_js=require('./chunk-AME4HJR4.js'),chunkI5ZDNSX5_js=require('./chunk-I5ZDNSX5.js'),chunkRFPLZDIO_js=require('./chunk-RFPLZDIO.js'),react=require('react'),jsxRuntime=require('react/jsx-runtime');var fr=({categories:Ze,onSubmit:Ge,onValidationError:u,title:x,description:C,submitButtonText:S,className:Q="",buttonClassName:X="",classNames:d={},unstyled:c=false,isSubmitting:f=false,showConfirmation:Ke=true,confirmationMessage:We="Your breach report has been submitted successfully. The data protection team has been notified.",allowAttachments:Je=true,maxAttachments:D=5,maxFileSize:A=5*1024*1024,allowedFileTypes:R=[".pdf",".jpg",".jpeg",".png",".doc",".docx",".xls",".xlsx",".txt"],defaultValues:t,onReset:w})=>{var we,Fe,qe,Pe,ke,je,Te,Ie,Be,Ee,Me,$e,Oe,Le;let F=chunkI5ZDNSX5_js.c(),Qe=(we=x!=null?x:F.breach.title)!=null?we:"Report a Data Breach",Xe=(Fe=C!=null?C:F.breach.description)!=null?Fe:"Use this form to report a suspected or confirmed data breach in accordance with NDPA Section 40. All fields marked with * are required.",Ve=(qe=S!=null?S:F.breach.submitReport)!=null?qe:"Submit Report",V=r=>{if(!r)return "";let o=new Date(r),l=s=>String(s).padStart(2,"0");return `${o.getFullYear()}-${l(o.getMonth()+1)}-${l(o.getDate())}T${l(o.getHours())}:${l(o.getMinutes())}`},[q,ee]=react.useState((t==null?void 0:t.title)||""),[P,re]=react.useState((t==null?void 0:t.description)||""),[k,te]=react.useState((t==null?void 0:t.category)||""),[j,ie]=react.useState(V(t==null?void 0:t.discoveredAt)),[T,ae]=react.useState(V(t==null?void 0:t.occurredAt)),[I,ne]=react.useState(((Pe=t==null?void 0:t.reporter)==null?void 0:Pe.name)||""),[N,oe]=react.useState(((ke=t==null?void 0:t.reporter)==null?void 0:ke.email)||""),[B,se]=react.useState(((je=t==null?void 0:t.reporter)==null?void 0:je.department)||""),[E,de]=react.useState(((Te=t==null?void 0:t.reporter)==null?void 0:Te.phone)||""),[me,ce]=react.useState((t==null?void 0:t.affectedSystems)||[]),[er,pe]=react.useState(((Ie=t==null?void 0:t.affectedSystems)==null?void 0:Ie.join(", "))||""),[M,le]=react.useState((t==null?void 0:t.dataTypes)||[]),[h,ge]=react.useState((t==null?void 0:t.estimatedAffectedSubjects)!=null?String(t.estimatedAffectedSubjects):""),[$,be]=react.useState((t==null?void 0:t.approximateRecordCount)!=null?String(t.approximateRecordCount):""),[O,fe]=react.useState(((Be=t==null?void 0:t.dataSubjectCategories)==null?void 0:Be.join(", "))||""),[he,ve]=react.useState((Ee=t==null?void 0:t.involvesSensitiveData)!=null?Ee:false),[L,Ne]=react.useState((t==null?void 0:t.likelyConsequences)||""),[z,_e]=react.useState((t==null?void 0:t.mitigationMeasures)||""),[Y,ye]=react.useState(((Me=t==null?void 0:t.dpoContact)==null?void 0:Me.name)||""),[U,ue]=react.useState((($e=t==null?void 0:t.dpoContact)==null?void 0:$e.email)||""),[H,xe]=react.useState(((Oe=t==null?void 0:t.dpoContact)==null?void 0:Oe.phone)||""),[Z,Ce]=react.useState((Le=t==null?void 0:t.isPhasedReport)!=null?Le:false),[G,Se]=react.useState((t==null?void 0:t.supplementsReportId)||""),[De,Ae]=react.useState((t==null?void 0:t.status)||"ongoing"),[K,Re]=react.useState((t==null?void 0:t.initialActions)||""),[_,W]=react.useState([]),[rr,J]=react.useState(false),[a,v]=react.useState({}),tr=()=>{ee(""),re(""),te(""),ie(""),ae(""),ne(""),oe(""),se(""),de(""),ce([]),pe(""),le([]),ge(""),be(""),fe(""),ve(false),Ne(""),_e(""),ye(""),ue(""),xe(""),Ce(false),Se(""),Ae("ongoing"),Re(""),W([]),J(false),v({}),w==null||w();},ir=r=>{let o=r.target.value;pe(o);let l=o.split(",").map(s=>s.trim()).filter(Boolean);ce(l);},ar=r=>{le(o=>o.includes(r)?o.filter(l=>l!==r):[...o,r]);},nr=r=>{var ze;let o=r.target.files;if(!o)return;let l=[],s={};if(_.length+o.length>D){s.attachments=`Maximum of ${D} files allowed`,v(g=>chunkRFPLZDIO_js.a(chunkRFPLZDIO_js.a({},g),s));return}for(let g=0;g<o.length;g++){let y=o[g];if(y.size>A){s.attachments=`File ${y.name} exceeds the maximum size of ${A/(1024*1024)}MB`;continue}let Ye="."+((ze=y.name.split(".").pop())==null?void 0:ze.toLowerCase());if(!R.includes(Ye)){s.attachments=`File type ${Ye} is not allowed`;continue}l.push(y);}l.length>0&&W(g=>[...g,...l]),Object.keys(s).length>0?v(g=>chunkRFPLZDIO_js.a(chunkRFPLZDIO_js.a({},g),s)):v(g=>chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},g),{attachments:""}));},or=r=>{W(o=>o.filter((l,s)=>s!==r));},sr=()=>{let r={};return q.trim()||(r.breachTitle="Breach title is required"),P.trim()||(r.description="Description is required"),k||(r.category="Category is required"),j||(r.discoveredAt="Discovery date is required"),I.trim()||(r.reporterName="Reporter name is required"),N.trim()?/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/.test(N)||(r.reporterEmail="Reporter email is invalid"):r.reporterEmail="Reporter email is required",B.trim()||(r.reporterDepartment="Reporter department is required"),me.length===0&&(r.affectedSystems="At least one affected system is required"),M.length===0&&(r.dataTypes="At least one data type is required"),h&&isNaN(Number(h))&&(r.estimatedAffectedSubjects="Estimated affected subjects must be a number"),v(r),r},dr=r=>{r.preventDefault();let o=sr();if(Object.keys(o).length>0){u==null||u(o);return}let l={title:chunkUXUMYP4L_js.a(q),description:chunkUXUMYP4L_js.a(P),category:k,discoveredAt:new Date(j).getTime(),occurredAt:T?new Date(T).getTime():void 0,reportedAt:Date.now(),reporter:{name:chunkUXUMYP4L_js.a(I),email:chunkUXUMYP4L_js.a(N),department:chunkUXUMYP4L_js.a(B),phone:E?chunkUXUMYP4L_js.a(E):void 0},affectedSystems:me.map(s=>chunkUXUMYP4L_js.a(s)),dataTypes:M,estimatedAffectedSubjects:h?Number(h):void 0,approximateRecordCount:$?Number($):void 0,dataSubjectCategories:O?O.split(",").map(s=>chunkUXUMYP4L_js.a(s.trim())).filter(Boolean):void 0,involvesSensitiveData:he,likelyConsequences:L?chunkUXUMYP4L_js.a(L):void 0,mitigationMeasures:z?chunkUXUMYP4L_js.a(z):void 0,dpoContact:Y||U?{name:chunkUXUMYP4L_js.a(Y),email:chunkUXUMYP4L_js.a(U),phone:H?chunkUXUMYP4L_js.a(H):void 0}:void 0,isPhasedReport:Z||void 0,supplementsReportId:G?chunkUXUMYP4L_js.a(G):void 0,status:De,initialActions:K?chunkUXUMYP4L_js.a(K):void 0,attachments:_.map(s=>({name:s.name,type:s.type,size:s.size,file:s}))};Ge(l),Ke&&J(true);};if(rr)return jsxRuntime.jsxs("div",{"data-ndpr-component":"breach-report-form",className:`p-4 bg-green-50 dark:bg-green-900/20 rounded-md ${Q}`,children:[jsxRuntime.jsx("h2",{className:"text-lg font-bold ndpr-text-success mb-2",children:"Report Submitted"}),jsxRuntime.jsx("p",{className:"ndpr-text-success",children:We}),jsxRuntime.jsxs("div",{className:"mt-4 p-4 bg-yellow-50 dark:bg-yellow-900/20 rounded-md",children:[jsxRuntime.jsx("h3",{className:"text-sm font-bold ndpr-text-warning mb-2",children:"Important: Next Steps"}),jsxRuntime.jsx("p",{className:"ndpr-text-warning text-sm",children:"Under the NDPA (Section 40), data breaches that pose a risk to the rights and freedoms of data subjects must be reported to the NDPC within 72 hours of discovery. The data protection team will assess this breach and determine if notification is required."})]}),jsxRuntime.jsx("button",{onClick:()=>J(false),className:`mt-4 px-4 py-2 bg-green-600 text-white rounded hover:bg-green-700 ${X}`,children:"Report Another Breach"})]});let mr=[{id:"personal",label:"Personal Information (names, addresses)"},{id:"contact",label:"Contact Information (email, phone)"},{id:"financial",label:"Financial Information (bank details, payment info)"},{id:"health",label:"Health Information"},{id:"identification",label:"Identification Documents (ID cards, passports)"},{id:"login",label:"Login Credentials"},{id:"biometric",label:"Biometric Data"},{id:"children",label:"Children's Data"},{id:"location",label:"Location Data"},{id:"communications",label:"Communications Content"}];return jsxRuntime.jsxs("div",{className:chunkAME4HJR4_js.a(`bg-white dark:bg-gray-800 p-6 rounded-lg shadow-md ${Q}`,d.root,c),children:[jsxRuntime.jsx("h2",{className:chunkAME4HJR4_js.a("ndpr-section-heading",d.title,c),children:Qe}),jsxRuntime.jsx("p",{className:"ndpr-card__subtitle",children:Xe}),jsxRuntime.jsx("form",{onSubmit:dr,className:chunkAME4HJR4_js.a("",d.form,c),children:jsxRuntime.jsxs("div",{className:"ndpr-form-section",children:[jsxRuntime.jsxs("div",{className:chunkAME4HJR4_js.a("",d.fieldGroup,c),children:[jsxRuntime.jsx("h3",{className:"ndpr-section-heading",children:"Breach Information"}),jsxRuntime.jsxs("div",{className:"ndpr-form-grid ndpr-form-grid--2",children:[jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("label",{htmlFor:"breachTitle",className:chunkAME4HJR4_js.a("ndpr-form-field__label",d.label,c),children:["Breach Title/Summary ",jsxRuntime.jsx("span",{className:"ndpr-form-field__required",children:"*"})]}),jsxRuntime.jsx("input",{type:"text",id:"breachTitle",value:q,onChange:r=>ee(r.target.value),className:chunkAME4HJR4_js.a("ndpr-form-field__input",d.input,c),required:true,"aria-invalid":!!a.breachTitle,"aria-describedby":a.breachTitle?"breachTitle-error":void 0}),a.breachTitle&&jsxRuntime.jsx("p",{id:"breachTitle-error",role:"alert",className:"ndpr-form-field__error",children:a.breachTitle})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("label",{htmlFor:"category",className:chunkAME4HJR4_js.a("ndpr-form-field__label",d.label,c),children:["Breach Category ",jsxRuntime.jsx("span",{className:"ndpr-form-field__required",children:"*"})]}),jsxRuntime.jsxs("select",{id:"category",value:k,onChange:r=>te(r.target.value),className:chunkAME4HJR4_js.a("ndpr-form-field__input",d.select,c),required:true,"aria-invalid":!!a.category,"aria-describedby":a.category?"category-error":void 0,children:[jsxRuntime.jsx("option",{value:"",children:"Select a category"}),Ze.map(r=>jsxRuntime.jsx("option",{value:r.id,children:r.name},r.id))]}),a.category&&jsxRuntime.jsx("p",{id:"category-error",role:"alert",className:"ndpr-form-field__error",children:a.category})]}),jsxRuntime.jsxs("div",{className:"md:col-span-2",children:[jsxRuntime.jsxs("label",{htmlFor:"description",className:chunkAME4HJR4_js.a("ndpr-form-field__label",d.label,c),children:["Detailed Description ",jsxRuntime.jsx("span",{className:"ndpr-form-field__required",children:"*"})]}),jsxRuntime.jsx("textarea",{id:"description",value:P,onChange:r=>re(r.target.value),rows:4,className:chunkAME4HJR4_js.a("ndpr-form-field__input",d.textarea,c),required:true,"aria-invalid":!!a.description,"aria-describedby":a.description?"description-error":void 0}),a.description&&jsxRuntime.jsx("p",{id:"description-error",role:"alert",className:"ndpr-form-field__error",children:a.description})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("label",{htmlFor:"discoveredAt",className:"ndpr-form-field__label",children:["Date Discovered ",jsxRuntime.jsx("span",{className:"ndpr-form-field__required",children:"*"})]}),jsxRuntime.jsx("input",{type:"datetime-local",id:"discoveredAt",value:j,onChange:r=>ie(r.target.value),className:"ndpr-form-field__input",required:true,"aria-invalid":!!a.discoveredAt,"aria-describedby":a.discoveredAt?"discoveredAt-error":void 0}),a.discoveredAt&&jsxRuntime.jsx("p",{id:"discoveredAt-error",role:"alert",className:"ndpr-form-field__error",children:a.discoveredAt})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{htmlFor:"occurredAt",className:"ndpr-form-field__label",children:"Date Occurred (if known)"}),jsxRuntime.jsx("input",{type:"datetime-local",id:"occurredAt",value:T,onChange:r=>ae(r.target.value),className:"ndpr-form-field__input"})]})]})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("h3",{className:"ndpr-section-heading",children:"Reporter Information"}),jsxRuntime.jsxs("div",{className:"ndpr-form-grid ndpr-form-grid--2",children:[jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("label",{htmlFor:"reporterName",className:"ndpr-form-field__label",children:["Your Name ",jsxRuntime.jsx("span",{className:"ndpr-form-field__required",children:"*"})]}),jsxRuntime.jsx("input",{type:"text",id:"reporterName",value:I,onChange:r=>ne(r.target.value),className:"ndpr-form-field__input",required:true,"aria-invalid":!!a.reporterName,"aria-describedby":a.reporterName?"reporterName-error":void 0}),a.reporterName&&jsxRuntime.jsx("p",{id:"reporterName-error",role:"alert",className:"ndpr-form-field__error",children:a.reporterName})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("label",{htmlFor:"reporterEmail",className:"ndpr-form-field__label",children:["Your Email ",jsxRuntime.jsx("span",{className:"ndpr-form-field__required",children:"*"})]}),jsxRuntime.jsx("input",{type:"email",id:"reporterEmail",value:N,onChange:r=>oe(r.target.value),className:"ndpr-form-field__input",required:true,"aria-invalid":!!a.reporterEmail,"aria-describedby":a.reporterEmail?"reporterEmail-error":void 0}),a.reporterEmail&&jsxRuntime.jsx("p",{id:"reporterEmail-error",role:"alert",className:"ndpr-form-field__error",children:a.reporterEmail})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("label",{htmlFor:"reporterDepartment",className:"ndpr-form-field__label",children:["Your Department ",jsxRuntime.jsx("span",{className:"ndpr-form-field__required",children:"*"})]}),jsxRuntime.jsx("input",{type:"text",id:"reporterDepartment",value:B,onChange:r=>se(r.target.value),className:"ndpr-form-field__input",required:true,"aria-invalid":!!a.reporterDepartment,"aria-describedby":a.reporterDepartment?"reporterDepartment-error":void 0}),a.reporterDepartment&&jsxRuntime.jsx("p",{id:"reporterDepartment-error",role:"alert",className:"ndpr-form-field__error",children:a.reporterDepartment})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{htmlFor:"reporterPhone",className:"ndpr-form-field__label",children:"Your Phone Number (Optional)"}),jsxRuntime.jsx("input",{type:"tel",id:"reporterPhone",value:E,onChange:r=>de(r.target.value),className:"ndpr-form-field__input"})]})]})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("h3",{className:"ndpr-section-heading",children:"Impact Information"}),jsxRuntime.jsxs("div",{className:"ndpr-form-grid ndpr-form-grid--2",children:[jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("label",{htmlFor:"affectedSystems",className:"ndpr-form-field__label",children:["Affected Systems/Applications ",jsxRuntime.jsx("span",{className:"ndpr-form-field__required",children:"*"})]}),jsxRuntime.jsx("input",{type:"text",id:"affectedSystems",value:er,onChange:ir,placeholder:"e.g. CRM, Email Server, Website (comma separated)",className:"ndpr-form-field__input",required:true,"aria-invalid":!!a.affectedSystems,"aria-describedby":a.affectedSystems?"affectedSystems-error":void 0}),a.affectedSystems&&jsxRuntime.jsx("p",{id:"affectedSystems-error",role:"alert",className:"ndpr-form-field__error",children:a.affectedSystems})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{htmlFor:"estimatedAffectedSubjects",className:"ndpr-form-field__label",children:"Estimated Number of Affected Data Subjects"}),jsxRuntime.jsx("input",{type:"text",id:"estimatedAffectedSubjects",value:h,onChange:r=>ge(r.target.value),placeholder:"e.g. 100",className:"ndpr-form-field__input","aria-invalid":!!a.estimatedAffectedSubjects,"aria-describedby":a.estimatedAffectedSubjects?"estimatedAffectedSubjects-error":void 0}),a.estimatedAffectedSubjects&&jsxRuntime.jsx("p",{id:"estimatedAffectedSubjects-error",role:"alert",className:"ndpr-form-field__error",children:a.estimatedAffectedSubjects})]}),jsxRuntime.jsxs("fieldset",{className:"md:col-span-2","aria-invalid":!!a.dataTypes,"aria-describedby":a.dataTypes?"dataTypes-error":void 0,children:[jsxRuntime.jsxs("legend",{className:"ndpr-form-field__label",children:["Types of Data Involved ",jsxRuntime.jsx("span",{className:"ndpr-form-field__required","aria-hidden":"true",children:"*"}),jsxRuntime.jsx("span",{className:"sr-only",children:"(required)"})]}),jsxRuntime.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-2",children:mr.map(r=>jsxRuntime.jsxs("div",{className:"flex items-center",children:[jsxRuntime.jsx("input",{type:"checkbox",id:`dataType_${r.id}`,checked:M.includes(r.id),onChange:()=>ar(r.id),className:"h-4 w-4 rounded border-gray-300 text-[rgb(var(--ndpr-primary))] focus:ring-[rgb(var(--ndpr-ring))]"}),jsxRuntime.jsx("label",{htmlFor:`dataType_${r.id}`,className:"ml-2 text-sm ndpr-text-muted",children:r.label})]},r.id))}),a.dataTypes&&jsxRuntime.jsx("p",{id:"dataTypes-error",role:"alert",className:"ndpr-form-field__error",children:a.dataTypes})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsxs("label",{htmlFor:"status",className:"ndpr-form-field__label",children:["Current Status ",jsxRuntime.jsx("span",{className:"ndpr-form-field__required",children:"*"})]}),jsxRuntime.jsxs("select",{id:"status",value:De,onChange:r=>Ae(r.target.value),className:chunkAME4HJR4_js.a("ndpr-form-field__input",d.select,c),required:true,children:[jsxRuntime.jsx("option",{value:"ongoing",children:"Ongoing (breach is still active)"}),jsxRuntime.jsx("option",{value:"contained",children:"Contained (breach is stopped but not resolved)"}),jsxRuntime.jsx("option",{value:"resolved",children:"Resolved (breach is fully addressed)"})]})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{htmlFor:"approximateRecordCount",className:"ndpr-form-field__label",children:"Approximate Number of Records Concerned"}),jsxRuntime.jsx("input",{type:"text",id:"approximateRecordCount",value:$,onChange:r=>be(r.target.value),placeholder:"e.g. 5000",className:"ndpr-form-field__input"}),jsxRuntime.jsx("p",{className:"text-xs ndpr-text-muted mt-1",children:"Required for the NDPC report (NDPA Section 40(2))."})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{htmlFor:"dataSubjectCategories",className:"ndpr-form-field__label",children:"Categories of Data Subjects Affected"}),jsxRuntime.jsx("input",{type:"text",id:"dataSubjectCategories",value:O,onChange:r=>fe(r.target.value),placeholder:"e.g. customers, employees, minors",className:"ndpr-form-field__input"}),jsxRuntime.jsx("p",{className:"text-xs ndpr-text-muted mt-1",children:"Comma-separated. Required for the NDPC report (NDPA Section 40(2))."})]}),jsxRuntime.jsxs("div",{className:"md:col-span-2 flex items-center",children:[jsxRuntime.jsx("input",{id:"involvesSensitiveData",type:"checkbox",checked:he,onChange:r=>ve(r.target.checked),className:"h-4 w-4 rounded border-gray-300 text-[rgb(var(--ndpr-primary))] focus:ring-[rgb(var(--ndpr-ring))]"}),jsxRuntime.jsx("label",{htmlFor:"involvesSensitiveData",className:"ml-2 text-sm ndpr-text-muted",children:"Sensitive personal data (NDPA Section 30) is involved"})]}),jsxRuntime.jsxs("div",{className:"md:col-span-2",children:[jsxRuntime.jsx("label",{htmlFor:"likelyConsequences",className:"ndpr-form-field__label",children:"Likely Consequences for Data Subjects"}),jsxRuntime.jsx("textarea",{id:"likelyConsequences",value:L,onChange:r=>Ne(r.target.value),placeholder:"e.g. identity theft, financial loss, reputational damage, discrimination",rows:3,className:chunkAME4HJR4_js.a("ndpr-form-field__input",d.textarea,c)}),jsxRuntime.jsx("p",{className:"text-xs ndpr-text-muted mt-1",children:"Required content for NDPC report and Section 40(3) communications to data subjects."})]}),jsxRuntime.jsxs("div",{className:"md:col-span-2",children:[jsxRuntime.jsx("label",{htmlFor:"mitigationMeasures",className:"ndpr-form-field__label",children:"Mitigation Measures"}),jsxRuntime.jsx("textarea",{id:"mitigationMeasures",value:z,onChange:r=>_e(r.target.value),placeholder:"Measures taken or proposed to mitigate possible adverse effects (NDPA Section 40(3))",rows:3,className:chunkAME4HJR4_js.a("ndpr-form-field__input",d.textarea,c)})]}),jsxRuntime.jsxs("div",{className:"md:col-span-2",children:[jsxRuntime.jsx("h4",{className:"ndpr-section-heading text-sm mt-4",children:"Data Protection Officer (NDPC contact)"}),jsxRuntime.jsx("p",{className:"text-xs ndpr-text-muted mb-2",children:"Defaults to organisation-level DPO if left blank."})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{htmlFor:"dpoName",className:"ndpr-form-field__label",children:"DPO Name"}),jsxRuntime.jsx("input",{type:"text",id:"dpoName",value:Y,onChange:r=>ye(r.target.value),className:"ndpr-form-field__input"})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{htmlFor:"dpoEmail",className:"ndpr-form-field__label",children:"DPO Email"}),jsxRuntime.jsx("input",{type:"email",id:"dpoEmail",value:U,onChange:r=>ue(r.target.value),className:"ndpr-form-field__input"})]}),jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("label",{htmlFor:"dpoPhone",className:"ndpr-form-field__label",children:"DPO Phone"}),jsxRuntime.jsx("input",{type:"tel",id:"dpoPhone",value:H,onChange:r=>xe(r.target.value),className:"ndpr-form-field__input"})]}),jsxRuntime.jsxs("div",{className:"md:col-span-2 flex items-center mt-2",children:[jsxRuntime.jsx("input",{id:"isPhasedReport",type:"checkbox",checked:Z,onChange:r=>Ce(r.target.checked),className:"h-4 w-4 rounded border-gray-300 text-[rgb(var(--ndpr-primary))] focus:ring-[rgb(var(--ndpr-ring))]"}),jsxRuntime.jsx("label",{htmlFor:"isPhasedReport",className:"ml-2 text-sm ndpr-text-muted",children:"This is a phased / interim report (Section 40(2) \u2014 complete info not yet available)"})]}),Z&&jsxRuntime.jsxs("div",{className:"md:col-span-2",children:[jsxRuntime.jsx("label",{htmlFor:"supplementsReportId",className:"ndpr-form-field__label",children:"Supplements Report ID (if applicable)"}),jsxRuntime.jsx("input",{type:"text",id:"supplementsReportId",value:G,onChange:r=>Se(r.target.value),placeholder:"Prior report ID this report supplements",className:"ndpr-form-field__input"})]}),jsxRuntime.jsxs("div",{className:"md:col-span-2",children:[jsxRuntime.jsx("label",{htmlFor:"initialActions",className:"ndpr-form-field__label",children:"Initial Actions Taken"}),jsxRuntime.jsx("textarea",{id:"initialActions",value:K,onChange:r=>Re(r.target.value),placeholder:"Describe any immediate actions that have been taken to address the breach",rows:3,className:chunkAME4HJR4_js.a("ndpr-form-field__input",d.textarea,c)})]})]})]}),Je&&jsxRuntime.jsxs("div",{children:[jsxRuntime.jsx("h3",{className:"ndpr-section-heading",children:"Attachments"}),jsxRuntime.jsxs("div",{className:"ndpr-form-field",children:[jsxRuntime.jsx("label",{htmlFor:"breach-attachments",className:"ndpr-form-field__label",children:"Upload Supporting Files (Optional)"}),jsxRuntime.jsxs("p",{className:"text-xs ndpr-text-muted mb-2",children:["Max ",D," files, ",A/(1024*1024),"MB each. Allowed types: ",R.join(", ")]}),jsxRuntime.jsx("input",{id:"breach-attachments",type:"file",onChange:nr,multiple:true,className:"ndpr-form-field__input",accept:R.join(",")}),a.attachments&&jsxRuntime.jsx("p",{id:"attachments-error",role:"alert",className:"ndpr-form-field__error",children:a.attachments})]}),_.length>0&&jsxRuntime.jsxs("div",{className:"ndpr-form-field",children:[jsxRuntime.jsx("h4",{className:"ndpr-form-field__label",children:"Attached Files:"}),jsxRuntime.jsx("ul",{className:"ndpr-form-section",children:_.map((r,o)=>jsxRuntime.jsxs("li",{className:"flex items-center justify-between p-2 bg-gray-50 dark:bg-gray-700 rounded",children:[jsxRuntime.jsxs("div",{className:"flex items-center",children:[jsxRuntime.jsx("svg",{"aria-hidden":"true",focusable:"false",className:"w-4 h-4 ndpr-text-muted mr-2",fill:"currentColor",viewBox:"0 0 20 20",xmlns:"http://www.w3.org/2000/svg",children:jsxRuntime.jsx("path",{fillRule:"evenodd",d:"M8 4a3 3 0 00-3 3v4a5 5 0 0010 0V7a1 1 0 112 0v4a7 7 0 11-14 0V7a5 5 0 0110 0v4a3 3 0 11-6 0V7a1 1 0 012 0v4a1 1 0 102 0V7a3 3 0 00-3-3z",clipRule:"evenodd"})}),jsxRuntime.jsx("span",{className:"text-sm ndpr-text-muted",children:r.name}),jsxRuntime.jsxs("span",{className:"ml-2 text-xs ndpr-text-muted",children:["(",(r.size/1024).toFixed(1)," KB)"]})]}),jsxRuntime.jsxs("button",{type:"button",onClick:()=>or(o),"aria-label":`Remove attachment ${r.name}`,className:"text-red-500 hover:ndpr-text-destructive p-2 min-w-[44px] min-h-[44px] flex items-center justify-center",children:[jsxRuntime.jsx("svg",{"aria-hidden":"true",focusable:"false",className:"w-4 h-4",fill:"currentColor",viewBox:"0 0 20 20",xmlns:"http://www.w3.org/2000/svg",children:jsxRuntime.jsx("path",{fillRule:"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",clipRule:"evenodd"})}),jsxRuntime.jsx("span",{className:"sr-only",children:"Remove"})]})]},o))})]})]}),jsxRuntime.jsxs("div",{className:chunkAME4HJR4_js.a("ndpr-alert ndpr-alert--info",d.notice,c),children:[jsxRuntime.jsx("h3",{className:"text-sm font-bold ndpr-text-info mb-2",children:"NDPA Breach Notification Requirements"}),jsxRuntime.jsx("p",{className:"ndpr-text-info text-sm",children:"Under the Nigeria Data Protection Act (NDPA), Section 40, data breaches that pose a risk to the rights and freedoms of data subjects must be reported to the NDPC within 72 hours of discovery. The data protection team will assess this breach and determine if notification is required."})]}),jsxRuntime.jsxs("div",{className:"mt-6 relative flex gap-3",children:[f&&d.loadingOverlay&&jsxRuntime.jsx("div",{className:d.loadingOverlay}),jsxRuntime.jsx("button",{type:"submit",disabled:f,className:chunkAME4HJR4_js.a(`px-6 py-3 bg-[rgb(var(--ndpr-primary))] text-white rounded-md hover:bg-[rgb(var(--ndpr-primary-hover))] focus:outline-none focus:ring-2 focus:ring-[rgb(var(--ndpr-ring))] focus:ring-offset-2 ${X} ${f?"opacity-50 cursor-not-allowed":""}`,d.primaryButton||d.submitButton,c),children:f?"Submitting...":Ve}),jsxRuntime.jsx("button",{type:"button",onClick:tr,disabled:f,className:chunkAME4HJR4_js.a("px-6 py-3 bg-gray-200 dark:bg-gray-600 text-gray-700 dark:text-gray-200 rounded-md hover:bg-gray-300 dark:hover:bg-gray-500 focus:outline-none focus:ring-2 focus:ring-gray-400 focus:ring-offset-2",void 0,c),children:"Reset"})]})]})})]})};
2
- exports.a=fr;
@@ -1 +0,0 @@
1
- 'use strict';var chunkOXFULQTE_js=require('./chunk-OXFULQTE.js'),chunk7TTXS7JX_js=require('./chunk-7TTXS7JX.js'),react=require('react');function u(t,e){return react.useMemo(()=>chunkOXFULQTE_js.a(t,e),[t,e])}function M({input:t}){let e=JSON.stringify(t);return react.useMemo(()=>chunk7TTXS7JX_js.a(t),[e])}function D(t,e){return react.useMemo(()=>chunkOXFULQTE_js.d(t,e),[t.dataSubjectsInSixMonths,t.isDesignated,e])}function P(t,e){return react.useMemo(()=>chunkOXFULQTE_js.e(t,e),[t.commencementDate,t.asOf,t.tier,e])}exports.a=u;exports.b=M;exports.c=D;exports.d=P;
@@ -1 +0,0 @@
1
- import {a}from'./chunk-ZJYULEER.mjs';var d=e=>typeof e=="string"&&e.trim().length>0,R=e=>typeof e=="number"&&Number.isFinite(e)&&e>=0,x=e=>Array.isArray(e)&&e.length>0,H=e=>!!e&&d(e.name)&&d(e.email);function G(e,n={}){var C,A,I,N,O;let i=(C=n.asOf)!=null?C:Date.now(),r=(A=n.deadlineHours)!=null?A:72,s=e.discoveredAt+r*36e5,o=n.notification,t=!!o,c=o==null?void 0:o.sentAt,a=(t?c:i)>s,h={deadline:s,hoursSinceDiscovery:Math.round((i-e.discoveredAt)/36e5),notified:t,notifiedAt:c,withinDeadline:!a,hoursRemaining:Math.round((s-i)/36e5),overdue:a,requiresDelayJustification:a},f=[{id:"circumstances",label:"Description of the circumstances of the breach",section:"GAID 2025 Art. 33(5)(a)",satisfied:d(e.description)},{id:"occurrence",label:"Date or time period of the breach",section:"GAID 2025 Art. 33(5)(b)",satisfied:R(e.occurredAt)},{id:"personalInfo",label:"Description of the personal data involved",section:"GAID 2025 Art. 33(5)(c)",satisfied:x(e.dataTypes)},{id:"riskOfHarm",label:"Assessment of the risk of harm to data subjects",section:"GAID 2025 Art. 33(5)(d)",satisfied:d(e.likelyConsequences)},{id:"numberAtRisk",label:"Estimated number of data subjects at risk of significant harm",section:"GAID 2025 Art. 33(5)(e)",satisfied:R(e.estimatedAffectedSubjects)},{id:"mitigation",label:"Steps taken to reduce the risk of harm",section:"GAID 2025 Art. 33(5)(f)",satisfied:d(e.mitigationMeasures)},{id:"notifySteps",label:"Steps taken to notify affected data subjects",section:"GAID 2025 Art. 33(5)(g)",satisfied:d(e.initialActions)},{id:"contactPoint",label:"Name and contact details of a contact point",section:"GAID 2025 Art. 33(5)(h)",satisfied:H(e.dpoContact)},{id:"dataSubjectCategories",label:"Categories of data subjects concerned",section:"NDPA 2023 S. 40(2)",satisfied:x(e.dataSubjectCategories)},{id:"recordCount",label:"Approximate number of personal data records concerned",section:"NDPA 2023 S. 40(2)",satisfied:R(e.approximateRecordCount)}],D=(O=(N=n.highRisk)!=null?N:(I=n.assessment)==null?void 0:I.highRisksToRightsAndFreedoms)!=null?O:false,g=D?[{id:"dsNature",label:"Nature and context of the breach in plain language",section:"NDPA 2023 S. 40(3)",satisfied:d(e.description)},{id:"dsConsequences",label:"Likely consequences of the breach",section:"NDPA 2023 S. 40(3)",satisfied:d(e.likelyConsequences)},{id:"dsMeasures",label:"Safeguards and measures data subjects can take",section:"NDPA 2023 S. 40(3)",satisfied:d(e.mitigationMeasures)},{id:"dsContact",label:"Contact point for data subjects",section:"NDPA 2023 S. 40(3)",satisfied:H(e.dpoContact)}]:[],l=[...f,...g],P=l.filter(m=>m.satisfied).length,S=Math.round(P/l.length*100),p=l.filter(m=>!m.satisfied).map(m=>m.label),y=p.length===0,u=[];for(let m of l.filter(L=>!L.satisfied))u.push(`Add: ${m.label} (${m.section}).`);return a?u.push("The 72-hour notification deadline has passed \u2014 notify the NDPC now and state the reasons for the delay; phased reporting is permitted where complete details are not yet available (NDPA S. 40(2))."):t||u.push(`${Math.max(0,h.hoursRemaining)} hour(s) remain to notify the NDPC within the 72-hour window (NDPA S. 40(2)).`),D&&u.push("High risk to data subjects \u2014 communicate the breach to affected data subjects immediately, in plain and clear language (NDPA S. 40(3))."),{complete:y,completeness:S,notificationToCommission:f,dataSubjectCommunication:g,dataSubjectCommunicationRequired:D,timing:h,missing:p,recommendations:u,asOf:i}}var j={ohl:200,ehl:1e3,uhl:5e3},k={UHL:25e4,EHL:1e5,OHL:1e4};function _(e,n={}){let i=a(a({},j),n.thresholds),r=a(a({},k),n.fees),s=e==null?void 0:e.dataSubjectsInSixMonths,o=typeof s=="number"&&s>0?Math.floor(s):0,t;o>i.uhl?t="UHL":o>=i.ehl?t="EHL":o>=i.ohl?t="OHL":e!=null&&e.isDesignated?t="listed":t="none";let c=t!=="none",b=t==="UHL"||t==="EHL"||t==="OHL"?r[t]:0,a$1=[];return t==="listed"&&a$1.push("Designated as a DCPMI below the volume tiers \u2014 confirm the applicable registration tier and fee with the NDPC."),c&&a$1.push(t==="OHL"?"OHL organisations renew their NDPC registration annually and file Compliance Audit Returns (CAR) each year.":"Register once with the NDPC, then file Compliance Audit Returns (CAR) annually."),a$1.push("Thresholds, fees, and filing dates follow the NDPC GAID 2025 baseline and can change \u2014 verify against current NDPC guidance before relying on them."),{tier:t,isDCPMI:c,annualFeeNGN:b,registration:{required:c,renewsAnnually:t==="OHL"},compliance:{auditReturnsAnnual:c,initialAuditWithinMonths:15},notes:a$1,dataSubjectsConsidered:o}}function w(e){return String(e).padStart(2,"0")}function T(e){let[n,i,r]=e.split("-").map(Number);return new Date(Date.UTC(n,i-1,r))}function B(e){return e.toISOString().slice(0,10)}function U(e,n){let[i,r,s]=e.split("-").map(Number);return B(new Date(Date.UTC(i,r-1+n,s)))}function F(){return new Date().toISOString().slice(0,10)}function W(e,n={}){var P,S,p,y,u,C,A;let i=(P=e.asOf)!=null?P:F(),r=(S=n.initialAuditWithinMonths)!=null?S:15,s=(y=(p=n.annualDeadline)==null?void 0:p.month)!=null?y:3,o=(C=(u=n.annualDeadline)==null?void 0:u.day)!=null?C:31,t=(A=n.deadlineOverrides)!=null?A:{},c=e.tier===void 0?true:e.tier!=="none",b=U(e.commencementDate,r),a=I=>{var N;return (N=t[I])!=null?N:`${I}-${w(s)}-${w(o)}`},h=Number(i.slice(0,4)),f=a(h);i>f&&(h+=1,f=a(h));let D=Math.round((T(f).getTime()-T(i).getTime())/864e5),g=i>=b,l=[];return c?(l.push("File the Compliance Audit Return with the NDPC via the NDPC Information Management Portal (NIMP)."),g&&l.push("The initial compliance-audit window has elapsed \u2014 ensure the initial audit has been conducted.")):l.push("Compliance Audit Returns apply only to Data Controllers/Processors of Major Importance."),l.push("Filing deadlines follow the NDPC GAID 2025 baseline and can be extended \u2014 verify the current deadline with the NDPC."),{applicable:c,schedule:{commencementDate:e.commencementDate,initialAuditWithinMonths:r,initialAuditDueDate:b,nextFilingDeadline:f,filingYear:h},status:{initialAuditDue:g,daysUntilNextDeadline:D},notes:l,asOf:i}}export{G as a,j as b,k as c,_ as d,W as e};
@@ -1 +0,0 @@
1
- import {a,d,e}from'./chunk-KOHFQIV4.mjs';import {a as a$1}from'./chunk-6A7M4CGJ.mjs';import {useMemo}from'react';function u(t,e){return useMemo(()=>a(t,e),[t,e])}function M({input:t}){let e=JSON.stringify(t);return useMemo(()=>a$1(t),[e])}function D(t,e){return useMemo(()=>d(t,e),[t.dataSubjectsInSixMonths,t.isDesignated,e])}function P(t,e$1){return useMemo(()=>e(t,e$1),[t.commencementDate,t.asOf,t.tier,e$1])}export{u as a,M as b,D as c,P as d};
@@ -1 +0,0 @@
1
- 'use strict';var chunkRFPLZDIO_js=require('./chunk-RFPLZDIO.js');var d=e=>typeof e=="string"&&e.trim().length>0,R=e=>typeof e=="number"&&Number.isFinite(e)&&e>=0,x=e=>Array.isArray(e)&&e.length>0,H=e=>!!e&&d(e.name)&&d(e.email);function G(e,n={}){var C,A,I,N,O;let i=(C=n.asOf)!=null?C:Date.now(),r=(A=n.deadlineHours)!=null?A:72,s=e.discoveredAt+r*36e5,o=n.notification,t=!!o,c=o==null?void 0:o.sentAt,a=(t?c:i)>s,h={deadline:s,hoursSinceDiscovery:Math.round((i-e.discoveredAt)/36e5),notified:t,notifiedAt:c,withinDeadline:!a,hoursRemaining:Math.round((s-i)/36e5),overdue:a,requiresDelayJustification:a},f=[{id:"circumstances",label:"Description of the circumstances of the breach",section:"GAID 2025 Art. 33(5)(a)",satisfied:d(e.description)},{id:"occurrence",label:"Date or time period of the breach",section:"GAID 2025 Art. 33(5)(b)",satisfied:R(e.occurredAt)},{id:"personalInfo",label:"Description of the personal data involved",section:"GAID 2025 Art. 33(5)(c)",satisfied:x(e.dataTypes)},{id:"riskOfHarm",label:"Assessment of the risk of harm to data subjects",section:"GAID 2025 Art. 33(5)(d)",satisfied:d(e.likelyConsequences)},{id:"numberAtRisk",label:"Estimated number of data subjects at risk of significant harm",section:"GAID 2025 Art. 33(5)(e)",satisfied:R(e.estimatedAffectedSubjects)},{id:"mitigation",label:"Steps taken to reduce the risk of harm",section:"GAID 2025 Art. 33(5)(f)",satisfied:d(e.mitigationMeasures)},{id:"notifySteps",label:"Steps taken to notify affected data subjects",section:"GAID 2025 Art. 33(5)(g)",satisfied:d(e.initialActions)},{id:"contactPoint",label:"Name and contact details of a contact point",section:"GAID 2025 Art. 33(5)(h)",satisfied:H(e.dpoContact)},{id:"dataSubjectCategories",label:"Categories of data subjects concerned",section:"NDPA 2023 S. 40(2)",satisfied:x(e.dataSubjectCategories)},{id:"recordCount",label:"Approximate number of personal data records concerned",section:"NDPA 2023 S. 40(2)",satisfied:R(e.approximateRecordCount)}],D=(O=(N=n.highRisk)!=null?N:(I=n.assessment)==null?void 0:I.highRisksToRightsAndFreedoms)!=null?O:false,g=D?[{id:"dsNature",label:"Nature and context of the breach in plain language",section:"NDPA 2023 S. 40(3)",satisfied:d(e.description)},{id:"dsConsequences",label:"Likely consequences of the breach",section:"NDPA 2023 S. 40(3)",satisfied:d(e.likelyConsequences)},{id:"dsMeasures",label:"Safeguards and measures data subjects can take",section:"NDPA 2023 S. 40(3)",satisfied:d(e.mitigationMeasures)},{id:"dsContact",label:"Contact point for data subjects",section:"NDPA 2023 S. 40(3)",satisfied:H(e.dpoContact)}]:[],l=[...f,...g],P=l.filter(m=>m.satisfied).length,S=Math.round(P/l.length*100),p=l.filter(m=>!m.satisfied).map(m=>m.label),y=p.length===0,u=[];for(let m of l.filter(L=>!L.satisfied))u.push(`Add: ${m.label} (${m.section}).`);return a?u.push("The 72-hour notification deadline has passed \u2014 notify the NDPC now and state the reasons for the delay; phased reporting is permitted where complete details are not yet available (NDPA S. 40(2))."):t||u.push(`${Math.max(0,h.hoursRemaining)} hour(s) remain to notify the NDPC within the 72-hour window (NDPA S. 40(2)).`),D&&u.push("High risk to data subjects \u2014 communicate the breach to affected data subjects immediately, in plain and clear language (NDPA S. 40(3))."),{complete:y,completeness:S,notificationToCommission:f,dataSubjectCommunication:g,dataSubjectCommunicationRequired:D,timing:h,missing:p,recommendations:u,asOf:i}}var j={ohl:200,ehl:1e3,uhl:5e3},k={UHL:25e4,EHL:1e5,OHL:1e4};function _(e,n={}){let i=chunkRFPLZDIO_js.a(chunkRFPLZDIO_js.a({},j),n.thresholds),r=chunkRFPLZDIO_js.a(chunkRFPLZDIO_js.a({},k),n.fees),s=e==null?void 0:e.dataSubjectsInSixMonths,o=typeof s=="number"&&s>0?Math.floor(s):0,t;o>i.uhl?t="UHL":o>=i.ehl?t="EHL":o>=i.ohl?t="OHL":e!=null&&e.isDesignated?t="listed":t="none";let c=t!=="none",b=t==="UHL"||t==="EHL"||t==="OHL"?r[t]:0,a=[];return t==="listed"&&a.push("Designated as a DCPMI below the volume tiers \u2014 confirm the applicable registration tier and fee with the NDPC."),c&&a.push(t==="OHL"?"OHL organisations renew their NDPC registration annually and file Compliance Audit Returns (CAR) each year.":"Register once with the NDPC, then file Compliance Audit Returns (CAR) annually."),a.push("Thresholds, fees, and filing dates follow the NDPC GAID 2025 baseline and can change \u2014 verify against current NDPC guidance before relying on them."),{tier:t,isDCPMI:c,annualFeeNGN:b,registration:{required:c,renewsAnnually:t==="OHL"},compliance:{auditReturnsAnnual:c,initialAuditWithinMonths:15},notes:a,dataSubjectsConsidered:o}}function w(e){return String(e).padStart(2,"0")}function T(e){let[n,i,r]=e.split("-").map(Number);return new Date(Date.UTC(n,i-1,r))}function B(e){return e.toISOString().slice(0,10)}function U(e,n){let[i,r,s]=e.split("-").map(Number);return B(new Date(Date.UTC(i,r-1+n,s)))}function F(){return new Date().toISOString().slice(0,10)}function W(e,n={}){var P,S,p,y,u,C,A;let i=(P=e.asOf)!=null?P:F(),r=(S=n.initialAuditWithinMonths)!=null?S:15,s=(y=(p=n.annualDeadline)==null?void 0:p.month)!=null?y:3,o=(C=(u=n.annualDeadline)==null?void 0:u.day)!=null?C:31,t=(A=n.deadlineOverrides)!=null?A:{},c=e.tier===void 0?true:e.tier!=="none",b=U(e.commencementDate,r),a=I=>{var N;return (N=t[I])!=null?N:`${I}-${w(s)}-${w(o)}`},h=Number(i.slice(0,4)),f=a(h);i>f&&(h+=1,f=a(h));let D=Math.round((T(f).getTime()-T(i).getTime())/864e5),g=i>=b,l=[];return c?(l.push("File the Compliance Audit Return with the NDPC via the NDPC Information Management Portal (NIMP)."),g&&l.push("The initial compliance-audit window has elapsed \u2014 ensure the initial audit has been conducted.")):l.push("Compliance Audit Returns apply only to Data Controllers/Processors of Major Importance."),l.push("Filing deadlines follow the NDPC GAID 2025 baseline and can be extended \u2014 verify the current deadline with the NDPC."),{applicable:c,schedule:{commencementDate:e.commencementDate,initialAuditWithinMonths:r,initialAuditDueDate:b,nextFilingDeadline:f,filingYear:h},status:{initialAuditDue:g,daysUntilNextDeadline:D},notes:l,asOf:i}}exports.a=G;exports.b=j;exports.c=k;exports.d=_;exports.e=W;
@@ -1,2 +0,0 @@
1
- import {a as a$2}from'./chunk-EWVK45Z3.mjs';import {a}from'./chunk-SFGW37LE.mjs';import {c}from'./chunk-PHA3YMFO.mjs';import {a as a$1,b}from'./chunk-ZJYULEER.mjs';import {useState}from'react';import {jsxs,jsx}from'react/jsx-runtime';var fr=({categories:Ze,onSubmit:Ge,onValidationError:u,title:x,description:C,submitButtonText:S,className:Q="",buttonClassName:X="",classNames:d={},unstyled:c$1=false,isSubmitting:f=false,showConfirmation:Ke=true,confirmationMessage:We="Your breach report has been submitted successfully. The data protection team has been notified.",allowAttachments:Je=true,maxAttachments:D=5,maxFileSize:A=5*1024*1024,allowedFileTypes:R=[".pdf",".jpg",".jpeg",".png",".doc",".docx",".xls",".xlsx",".txt"],defaultValues:t,onReset:w})=>{var we,Fe,qe,Pe,ke,je,Te,Ie,Be,Ee,Me,$e,Oe,Le;let F=c(),Qe=(we=x!=null?x:F.breach.title)!=null?we:"Report a Data Breach",Xe=(Fe=C!=null?C:F.breach.description)!=null?Fe:"Use this form to report a suspected or confirmed data breach in accordance with NDPA Section 40. All fields marked with * are required.",Ve=(qe=S!=null?S:F.breach.submitReport)!=null?qe:"Submit Report",V=r=>{if(!r)return "";let o=new Date(r),l=s=>String(s).padStart(2,"0");return `${o.getFullYear()}-${l(o.getMonth()+1)}-${l(o.getDate())}T${l(o.getHours())}:${l(o.getMinutes())}`},[q,ee]=useState((t==null?void 0:t.title)||""),[P,re]=useState((t==null?void 0:t.description)||""),[k,te]=useState((t==null?void 0:t.category)||""),[j,ie]=useState(V(t==null?void 0:t.discoveredAt)),[T,ae]=useState(V(t==null?void 0:t.occurredAt)),[I,ne]=useState(((Pe=t==null?void 0:t.reporter)==null?void 0:Pe.name)||""),[N,oe]=useState(((ke=t==null?void 0:t.reporter)==null?void 0:ke.email)||""),[B,se]=useState(((je=t==null?void 0:t.reporter)==null?void 0:je.department)||""),[E,de]=useState(((Te=t==null?void 0:t.reporter)==null?void 0:Te.phone)||""),[me,ce]=useState((t==null?void 0:t.affectedSystems)||[]),[er,pe]=useState(((Ie=t==null?void 0:t.affectedSystems)==null?void 0:Ie.join(", "))||""),[M,le]=useState((t==null?void 0:t.dataTypes)||[]),[h,ge]=useState((t==null?void 0:t.estimatedAffectedSubjects)!=null?String(t.estimatedAffectedSubjects):""),[$,be]=useState((t==null?void 0:t.approximateRecordCount)!=null?String(t.approximateRecordCount):""),[O,fe]=useState(((Be=t==null?void 0:t.dataSubjectCategories)==null?void 0:Be.join(", "))||""),[he,ve]=useState((Ee=t==null?void 0:t.involvesSensitiveData)!=null?Ee:false),[L,Ne]=useState((t==null?void 0:t.likelyConsequences)||""),[z,_e]=useState((t==null?void 0:t.mitigationMeasures)||""),[Y,ye]=useState(((Me=t==null?void 0:t.dpoContact)==null?void 0:Me.name)||""),[U,ue]=useState((($e=t==null?void 0:t.dpoContact)==null?void 0:$e.email)||""),[H,xe]=useState(((Oe=t==null?void 0:t.dpoContact)==null?void 0:Oe.phone)||""),[Z,Ce]=useState((Le=t==null?void 0:t.isPhasedReport)!=null?Le:false),[G,Se]=useState((t==null?void 0:t.supplementsReportId)||""),[De,Ae]=useState((t==null?void 0:t.status)||"ongoing"),[K,Re]=useState((t==null?void 0:t.initialActions)||""),[_,W]=useState([]),[rr,J]=useState(false),[a$3,v]=useState({}),tr=()=>{ee(""),re(""),te(""),ie(""),ae(""),ne(""),oe(""),se(""),de(""),ce([]),pe(""),le([]),ge(""),be(""),fe(""),ve(false),Ne(""),_e(""),ye(""),ue(""),xe(""),Ce(false),Se(""),Ae("ongoing"),Re(""),W([]),J(false),v({}),w==null||w();},ir=r=>{let o=r.target.value;pe(o);let l=o.split(",").map(s=>s.trim()).filter(Boolean);ce(l);},ar=r=>{le(o=>o.includes(r)?o.filter(l=>l!==r):[...o,r]);},nr=r=>{var ze;let o=r.target.files;if(!o)return;let l=[],s={};if(_.length+o.length>D){s.attachments=`Maximum of ${D} files allowed`,v(g=>a$1(a$1({},g),s));return}for(let g=0;g<o.length;g++){let y=o[g];if(y.size>A){s.attachments=`File ${y.name} exceeds the maximum size of ${A/(1024*1024)}MB`;continue}let Ye="."+((ze=y.name.split(".").pop())==null?void 0:ze.toLowerCase());if(!R.includes(Ye)){s.attachments=`File type ${Ye} is not allowed`;continue}l.push(y);}l.length>0&&W(g=>[...g,...l]),Object.keys(s).length>0?v(g=>a$1(a$1({},g),s)):v(g=>b(a$1({},g),{attachments:""}));},or=r=>{W(o=>o.filter((l,s)=>s!==r));},sr=()=>{let r={};return q.trim()||(r.breachTitle="Breach title is required"),P.trim()||(r.description="Description is required"),k||(r.category="Category is required"),j||(r.discoveredAt="Discovery date is required"),I.trim()||(r.reporterName="Reporter name is required"),N.trim()?/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/.test(N)||(r.reporterEmail="Reporter email is invalid"):r.reporterEmail="Reporter email is required",B.trim()||(r.reporterDepartment="Reporter department is required"),me.length===0&&(r.affectedSystems="At least one affected system is required"),M.length===0&&(r.dataTypes="At least one data type is required"),h&&isNaN(Number(h))&&(r.estimatedAffectedSubjects="Estimated affected subjects must be a number"),v(r),r},dr=r=>{r.preventDefault();let o=sr();if(Object.keys(o).length>0){u==null||u(o);return}let l={title:a$2(q),description:a$2(P),category:k,discoveredAt:new Date(j).getTime(),occurredAt:T?new Date(T).getTime():void 0,reportedAt:Date.now(),reporter:{name:a$2(I),email:a$2(N),department:a$2(B),phone:E?a$2(E):void 0},affectedSystems:me.map(s=>a$2(s)),dataTypes:M,estimatedAffectedSubjects:h?Number(h):void 0,approximateRecordCount:$?Number($):void 0,dataSubjectCategories:O?O.split(",").map(s=>a$2(s.trim())).filter(Boolean):void 0,involvesSensitiveData:he,likelyConsequences:L?a$2(L):void 0,mitigationMeasures:z?a$2(z):void 0,dpoContact:Y||U?{name:a$2(Y),email:a$2(U),phone:H?a$2(H):void 0}:void 0,isPhasedReport:Z||void 0,supplementsReportId:G?a$2(G):void 0,status:De,initialActions:K?a$2(K):void 0,attachments:_.map(s=>({name:s.name,type:s.type,size:s.size,file:s}))};Ge(l),Ke&&J(true);};if(rr)return jsxs("div",{"data-ndpr-component":"breach-report-form",className:`p-4 bg-green-50 dark:bg-green-900/20 rounded-md ${Q}`,children:[jsx("h2",{className:"text-lg font-bold ndpr-text-success mb-2",children:"Report Submitted"}),jsx("p",{className:"ndpr-text-success",children:We}),jsxs("div",{className:"mt-4 p-4 bg-yellow-50 dark:bg-yellow-900/20 rounded-md",children:[jsx("h3",{className:"text-sm font-bold ndpr-text-warning mb-2",children:"Important: Next Steps"}),jsx("p",{className:"ndpr-text-warning text-sm",children:"Under the NDPA (Section 40), data breaches that pose a risk to the rights and freedoms of data subjects must be reported to the NDPC within 72 hours of discovery. The data protection team will assess this breach and determine if notification is required."})]}),jsx("button",{onClick:()=>J(false),className:`mt-4 px-4 py-2 bg-green-600 text-white rounded hover:bg-green-700 ${X}`,children:"Report Another Breach"})]});let mr=[{id:"personal",label:"Personal Information (names, addresses)"},{id:"contact",label:"Contact Information (email, phone)"},{id:"financial",label:"Financial Information (bank details, payment info)"},{id:"health",label:"Health Information"},{id:"identification",label:"Identification Documents (ID cards, passports)"},{id:"login",label:"Login Credentials"},{id:"biometric",label:"Biometric Data"},{id:"children",label:"Children's Data"},{id:"location",label:"Location Data"},{id:"communications",label:"Communications Content"}];return jsxs("div",{className:a(`bg-white dark:bg-gray-800 p-6 rounded-lg shadow-md ${Q}`,d.root,c$1),children:[jsx("h2",{className:a("ndpr-section-heading",d.title,c$1),children:Qe}),jsx("p",{className:"ndpr-card__subtitle",children:Xe}),jsx("form",{onSubmit:dr,className:a("",d.form,c$1),children:jsxs("div",{className:"ndpr-form-section",children:[jsxs("div",{className:a("",d.fieldGroup,c$1),children:[jsx("h3",{className:"ndpr-section-heading",children:"Breach Information"}),jsxs("div",{className:"ndpr-form-grid ndpr-form-grid--2",children:[jsxs("div",{children:[jsxs("label",{htmlFor:"breachTitle",className:a("ndpr-form-field__label",d.label,c$1),children:["Breach Title/Summary ",jsx("span",{className:"ndpr-form-field__required",children:"*"})]}),jsx("input",{type:"text",id:"breachTitle",value:q,onChange:r=>ee(r.target.value),className:a("ndpr-form-field__input",d.input,c$1),required:true,"aria-invalid":!!a$3.breachTitle,"aria-describedby":a$3.breachTitle?"breachTitle-error":void 0}),a$3.breachTitle&&jsx("p",{id:"breachTitle-error",role:"alert",className:"ndpr-form-field__error",children:a$3.breachTitle})]}),jsxs("div",{children:[jsxs("label",{htmlFor:"category",className:a("ndpr-form-field__label",d.label,c$1),children:["Breach Category ",jsx("span",{className:"ndpr-form-field__required",children:"*"})]}),jsxs("select",{id:"category",value:k,onChange:r=>te(r.target.value),className:a("ndpr-form-field__input",d.select,c$1),required:true,"aria-invalid":!!a$3.category,"aria-describedby":a$3.category?"category-error":void 0,children:[jsx("option",{value:"",children:"Select a category"}),Ze.map(r=>jsx("option",{value:r.id,children:r.name},r.id))]}),a$3.category&&jsx("p",{id:"category-error",role:"alert",className:"ndpr-form-field__error",children:a$3.category})]}),jsxs("div",{className:"md:col-span-2",children:[jsxs("label",{htmlFor:"description",className:a("ndpr-form-field__label",d.label,c$1),children:["Detailed Description ",jsx("span",{className:"ndpr-form-field__required",children:"*"})]}),jsx("textarea",{id:"description",value:P,onChange:r=>re(r.target.value),rows:4,className:a("ndpr-form-field__input",d.textarea,c$1),required:true,"aria-invalid":!!a$3.description,"aria-describedby":a$3.description?"description-error":void 0}),a$3.description&&jsx("p",{id:"description-error",role:"alert",className:"ndpr-form-field__error",children:a$3.description})]}),jsxs("div",{children:[jsxs("label",{htmlFor:"discoveredAt",className:"ndpr-form-field__label",children:["Date Discovered ",jsx("span",{className:"ndpr-form-field__required",children:"*"})]}),jsx("input",{type:"datetime-local",id:"discoveredAt",value:j,onChange:r=>ie(r.target.value),className:"ndpr-form-field__input",required:true,"aria-invalid":!!a$3.discoveredAt,"aria-describedby":a$3.discoveredAt?"discoveredAt-error":void 0}),a$3.discoveredAt&&jsx("p",{id:"discoveredAt-error",role:"alert",className:"ndpr-form-field__error",children:a$3.discoveredAt})]}),jsxs("div",{children:[jsx("label",{htmlFor:"occurredAt",className:"ndpr-form-field__label",children:"Date Occurred (if known)"}),jsx("input",{type:"datetime-local",id:"occurredAt",value:T,onChange:r=>ae(r.target.value),className:"ndpr-form-field__input"})]})]})]}),jsxs("div",{children:[jsx("h3",{className:"ndpr-section-heading",children:"Reporter Information"}),jsxs("div",{className:"ndpr-form-grid ndpr-form-grid--2",children:[jsxs("div",{children:[jsxs("label",{htmlFor:"reporterName",className:"ndpr-form-field__label",children:["Your Name ",jsx("span",{className:"ndpr-form-field__required",children:"*"})]}),jsx("input",{type:"text",id:"reporterName",value:I,onChange:r=>ne(r.target.value),className:"ndpr-form-field__input",required:true,"aria-invalid":!!a$3.reporterName,"aria-describedby":a$3.reporterName?"reporterName-error":void 0}),a$3.reporterName&&jsx("p",{id:"reporterName-error",role:"alert",className:"ndpr-form-field__error",children:a$3.reporterName})]}),jsxs("div",{children:[jsxs("label",{htmlFor:"reporterEmail",className:"ndpr-form-field__label",children:["Your Email ",jsx("span",{className:"ndpr-form-field__required",children:"*"})]}),jsx("input",{type:"email",id:"reporterEmail",value:N,onChange:r=>oe(r.target.value),className:"ndpr-form-field__input",required:true,"aria-invalid":!!a$3.reporterEmail,"aria-describedby":a$3.reporterEmail?"reporterEmail-error":void 0}),a$3.reporterEmail&&jsx("p",{id:"reporterEmail-error",role:"alert",className:"ndpr-form-field__error",children:a$3.reporterEmail})]}),jsxs("div",{children:[jsxs("label",{htmlFor:"reporterDepartment",className:"ndpr-form-field__label",children:["Your Department ",jsx("span",{className:"ndpr-form-field__required",children:"*"})]}),jsx("input",{type:"text",id:"reporterDepartment",value:B,onChange:r=>se(r.target.value),className:"ndpr-form-field__input",required:true,"aria-invalid":!!a$3.reporterDepartment,"aria-describedby":a$3.reporterDepartment?"reporterDepartment-error":void 0}),a$3.reporterDepartment&&jsx("p",{id:"reporterDepartment-error",role:"alert",className:"ndpr-form-field__error",children:a$3.reporterDepartment})]}),jsxs("div",{children:[jsx("label",{htmlFor:"reporterPhone",className:"ndpr-form-field__label",children:"Your Phone Number (Optional)"}),jsx("input",{type:"tel",id:"reporterPhone",value:E,onChange:r=>de(r.target.value),className:"ndpr-form-field__input"})]})]})]}),jsxs("div",{children:[jsx("h3",{className:"ndpr-section-heading",children:"Impact Information"}),jsxs("div",{className:"ndpr-form-grid ndpr-form-grid--2",children:[jsxs("div",{children:[jsxs("label",{htmlFor:"affectedSystems",className:"ndpr-form-field__label",children:["Affected Systems/Applications ",jsx("span",{className:"ndpr-form-field__required",children:"*"})]}),jsx("input",{type:"text",id:"affectedSystems",value:er,onChange:ir,placeholder:"e.g. CRM, Email Server, Website (comma separated)",className:"ndpr-form-field__input",required:true,"aria-invalid":!!a$3.affectedSystems,"aria-describedby":a$3.affectedSystems?"affectedSystems-error":void 0}),a$3.affectedSystems&&jsx("p",{id:"affectedSystems-error",role:"alert",className:"ndpr-form-field__error",children:a$3.affectedSystems})]}),jsxs("div",{children:[jsx("label",{htmlFor:"estimatedAffectedSubjects",className:"ndpr-form-field__label",children:"Estimated Number of Affected Data Subjects"}),jsx("input",{type:"text",id:"estimatedAffectedSubjects",value:h,onChange:r=>ge(r.target.value),placeholder:"e.g. 100",className:"ndpr-form-field__input","aria-invalid":!!a$3.estimatedAffectedSubjects,"aria-describedby":a$3.estimatedAffectedSubjects?"estimatedAffectedSubjects-error":void 0}),a$3.estimatedAffectedSubjects&&jsx("p",{id:"estimatedAffectedSubjects-error",role:"alert",className:"ndpr-form-field__error",children:a$3.estimatedAffectedSubjects})]}),jsxs("fieldset",{className:"md:col-span-2","aria-invalid":!!a$3.dataTypes,"aria-describedby":a$3.dataTypes?"dataTypes-error":void 0,children:[jsxs("legend",{className:"ndpr-form-field__label",children:["Types of Data Involved ",jsx("span",{className:"ndpr-form-field__required","aria-hidden":"true",children:"*"}),jsx("span",{className:"sr-only",children:"(required)"})]}),jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-2",children:mr.map(r=>jsxs("div",{className:"flex items-center",children:[jsx("input",{type:"checkbox",id:`dataType_${r.id}`,checked:M.includes(r.id),onChange:()=>ar(r.id),className:"h-4 w-4 rounded border-gray-300 text-[rgb(var(--ndpr-primary))] focus:ring-[rgb(var(--ndpr-ring))]"}),jsx("label",{htmlFor:`dataType_${r.id}`,className:"ml-2 text-sm ndpr-text-muted",children:r.label})]},r.id))}),a$3.dataTypes&&jsx("p",{id:"dataTypes-error",role:"alert",className:"ndpr-form-field__error",children:a$3.dataTypes})]}),jsxs("div",{children:[jsxs("label",{htmlFor:"status",className:"ndpr-form-field__label",children:["Current Status ",jsx("span",{className:"ndpr-form-field__required",children:"*"})]}),jsxs("select",{id:"status",value:De,onChange:r=>Ae(r.target.value),className:a("ndpr-form-field__input",d.select,c$1),required:true,children:[jsx("option",{value:"ongoing",children:"Ongoing (breach is still active)"}),jsx("option",{value:"contained",children:"Contained (breach is stopped but not resolved)"}),jsx("option",{value:"resolved",children:"Resolved (breach is fully addressed)"})]})]}),jsxs("div",{children:[jsx("label",{htmlFor:"approximateRecordCount",className:"ndpr-form-field__label",children:"Approximate Number of Records Concerned"}),jsx("input",{type:"text",id:"approximateRecordCount",value:$,onChange:r=>be(r.target.value),placeholder:"e.g. 5000",className:"ndpr-form-field__input"}),jsx("p",{className:"text-xs ndpr-text-muted mt-1",children:"Required for the NDPC report (NDPA Section 40(2))."})]}),jsxs("div",{children:[jsx("label",{htmlFor:"dataSubjectCategories",className:"ndpr-form-field__label",children:"Categories of Data Subjects Affected"}),jsx("input",{type:"text",id:"dataSubjectCategories",value:O,onChange:r=>fe(r.target.value),placeholder:"e.g. customers, employees, minors",className:"ndpr-form-field__input"}),jsx("p",{className:"text-xs ndpr-text-muted mt-1",children:"Comma-separated. Required for the NDPC report (NDPA Section 40(2))."})]}),jsxs("div",{className:"md:col-span-2 flex items-center",children:[jsx("input",{id:"involvesSensitiveData",type:"checkbox",checked:he,onChange:r=>ve(r.target.checked),className:"h-4 w-4 rounded border-gray-300 text-[rgb(var(--ndpr-primary))] focus:ring-[rgb(var(--ndpr-ring))]"}),jsx("label",{htmlFor:"involvesSensitiveData",className:"ml-2 text-sm ndpr-text-muted",children:"Sensitive personal data (NDPA Section 30) is involved"})]}),jsxs("div",{className:"md:col-span-2",children:[jsx("label",{htmlFor:"likelyConsequences",className:"ndpr-form-field__label",children:"Likely Consequences for Data Subjects"}),jsx("textarea",{id:"likelyConsequences",value:L,onChange:r=>Ne(r.target.value),placeholder:"e.g. identity theft, financial loss, reputational damage, discrimination",rows:3,className:a("ndpr-form-field__input",d.textarea,c$1)}),jsx("p",{className:"text-xs ndpr-text-muted mt-1",children:"Required content for NDPC report and Section 40(3) communications to data subjects."})]}),jsxs("div",{className:"md:col-span-2",children:[jsx("label",{htmlFor:"mitigationMeasures",className:"ndpr-form-field__label",children:"Mitigation Measures"}),jsx("textarea",{id:"mitigationMeasures",value:z,onChange:r=>_e(r.target.value),placeholder:"Measures taken or proposed to mitigate possible adverse effects (NDPA Section 40(3))",rows:3,className:a("ndpr-form-field__input",d.textarea,c$1)})]}),jsxs("div",{className:"md:col-span-2",children:[jsx("h4",{className:"ndpr-section-heading text-sm mt-4",children:"Data Protection Officer (NDPC contact)"}),jsx("p",{className:"text-xs ndpr-text-muted mb-2",children:"Defaults to organisation-level DPO if left blank."})]}),jsxs("div",{children:[jsx("label",{htmlFor:"dpoName",className:"ndpr-form-field__label",children:"DPO Name"}),jsx("input",{type:"text",id:"dpoName",value:Y,onChange:r=>ye(r.target.value),className:"ndpr-form-field__input"})]}),jsxs("div",{children:[jsx("label",{htmlFor:"dpoEmail",className:"ndpr-form-field__label",children:"DPO Email"}),jsx("input",{type:"email",id:"dpoEmail",value:U,onChange:r=>ue(r.target.value),className:"ndpr-form-field__input"})]}),jsxs("div",{children:[jsx("label",{htmlFor:"dpoPhone",className:"ndpr-form-field__label",children:"DPO Phone"}),jsx("input",{type:"tel",id:"dpoPhone",value:H,onChange:r=>xe(r.target.value),className:"ndpr-form-field__input"})]}),jsxs("div",{className:"md:col-span-2 flex items-center mt-2",children:[jsx("input",{id:"isPhasedReport",type:"checkbox",checked:Z,onChange:r=>Ce(r.target.checked),className:"h-4 w-4 rounded border-gray-300 text-[rgb(var(--ndpr-primary))] focus:ring-[rgb(var(--ndpr-ring))]"}),jsx("label",{htmlFor:"isPhasedReport",className:"ml-2 text-sm ndpr-text-muted",children:"This is a phased / interim report (Section 40(2) \u2014 complete info not yet available)"})]}),Z&&jsxs("div",{className:"md:col-span-2",children:[jsx("label",{htmlFor:"supplementsReportId",className:"ndpr-form-field__label",children:"Supplements Report ID (if applicable)"}),jsx("input",{type:"text",id:"supplementsReportId",value:G,onChange:r=>Se(r.target.value),placeholder:"Prior report ID this report supplements",className:"ndpr-form-field__input"})]}),jsxs("div",{className:"md:col-span-2",children:[jsx("label",{htmlFor:"initialActions",className:"ndpr-form-field__label",children:"Initial Actions Taken"}),jsx("textarea",{id:"initialActions",value:K,onChange:r=>Re(r.target.value),placeholder:"Describe any immediate actions that have been taken to address the breach",rows:3,className:a("ndpr-form-field__input",d.textarea,c$1)})]})]})]}),Je&&jsxs("div",{children:[jsx("h3",{className:"ndpr-section-heading",children:"Attachments"}),jsxs("div",{className:"ndpr-form-field",children:[jsx("label",{htmlFor:"breach-attachments",className:"ndpr-form-field__label",children:"Upload Supporting Files (Optional)"}),jsxs("p",{className:"text-xs ndpr-text-muted mb-2",children:["Max ",D," files, ",A/(1024*1024),"MB each. Allowed types: ",R.join(", ")]}),jsx("input",{id:"breach-attachments",type:"file",onChange:nr,multiple:true,className:"ndpr-form-field__input",accept:R.join(",")}),a$3.attachments&&jsx("p",{id:"attachments-error",role:"alert",className:"ndpr-form-field__error",children:a$3.attachments})]}),_.length>0&&jsxs("div",{className:"ndpr-form-field",children:[jsx("h4",{className:"ndpr-form-field__label",children:"Attached Files:"}),jsx("ul",{className:"ndpr-form-section",children:_.map((r,o)=>jsxs("li",{className:"flex items-center justify-between p-2 bg-gray-50 dark:bg-gray-700 rounded",children:[jsxs("div",{className:"flex items-center",children:[jsx("svg",{"aria-hidden":"true",focusable:"false",className:"w-4 h-4 ndpr-text-muted mr-2",fill:"currentColor",viewBox:"0 0 20 20",xmlns:"http://www.w3.org/2000/svg",children:jsx("path",{fillRule:"evenodd",d:"M8 4a3 3 0 00-3 3v4a5 5 0 0010 0V7a1 1 0 112 0v4a7 7 0 11-14 0V7a5 5 0 0110 0v4a3 3 0 11-6 0V7a1 1 0 012 0v4a1 1 0 102 0V7a3 3 0 00-3-3z",clipRule:"evenodd"})}),jsx("span",{className:"text-sm ndpr-text-muted",children:r.name}),jsxs("span",{className:"ml-2 text-xs ndpr-text-muted",children:["(",(r.size/1024).toFixed(1)," KB)"]})]}),jsxs("button",{type:"button",onClick:()=>or(o),"aria-label":`Remove attachment ${r.name}`,className:"text-red-500 hover:ndpr-text-destructive p-2 min-w-[44px] min-h-[44px] flex items-center justify-center",children:[jsx("svg",{"aria-hidden":"true",focusable:"false",className:"w-4 h-4",fill:"currentColor",viewBox:"0 0 20 20",xmlns:"http://www.w3.org/2000/svg",children:jsx("path",{fillRule:"evenodd",d:"M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",clipRule:"evenodd"})}),jsx("span",{className:"sr-only",children:"Remove"})]})]},o))})]})]}),jsxs("div",{className:a("ndpr-alert ndpr-alert--info",d.notice,c$1),children:[jsx("h3",{className:"text-sm font-bold ndpr-text-info mb-2",children:"NDPA Breach Notification Requirements"}),jsx("p",{className:"ndpr-text-info text-sm",children:"Under the Nigeria Data Protection Act (NDPA), Section 40, data breaches that pose a risk to the rights and freedoms of data subjects must be reported to the NDPC within 72 hours of discovery. The data protection team will assess this breach and determine if notification is required."})]}),jsxs("div",{className:"mt-6 relative flex gap-3",children:[f&&d.loadingOverlay&&jsx("div",{className:d.loadingOverlay}),jsx("button",{type:"submit",disabled:f,className:a(`px-6 py-3 bg-[rgb(var(--ndpr-primary))] text-white rounded-md hover:bg-[rgb(var(--ndpr-primary-hover))] focus:outline-none focus:ring-2 focus:ring-[rgb(var(--ndpr-ring))] focus:ring-offset-2 ${X} ${f?"opacity-50 cursor-not-allowed":""}`,d.primaryButton||d.submitButton,c$1),children:f?"Submitting...":Ve}),jsx("button",{type:"button",onClick:tr,disabled:f,className:a("px-6 py-3 bg-gray-200 dark:bg-gray-600 text-gray-700 dark:text-gray-200 rounded-md hover:bg-gray-300 dark:hover:bg-gray-500 focus:outline-none focus:ring-2 focus:ring-gray-400 focus:ring-offset-2",void 0,c$1),children:"Reset"})]})]})})]})};
2
- export{fr as a};