@tantainnovative/ndpr-toolkit 3.5.0 → 3.5.5
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 +107 -0
- package/README.md +12 -7
- package/dist/adapters.js +1 -2
- package/dist/adapters.mjs +1 -2
- package/dist/breach.d.mts +80 -1
- package/dist/breach.d.ts +80 -1
- package/dist/breach.js +1 -2
- package/dist/breach.mjs +1 -2
- package/dist/{chunk-PATONNTZ.mjs → chunk-3HOXQNCH.mjs} +1 -2
- package/dist/{chunk-MJGOLP5M.js → chunk-3IA3KDII.js} +1 -2
- package/dist/{chunk-M2TPT5GB.js → chunk-3JPDTXGC.js} +1 -2
- package/dist/{chunk-BKRETVJ6.js → chunk-3YTAOT5O.js} +1 -2
- package/dist/{chunk-GOU6FU6Y.js → chunk-4CVBQC66.js} +1 -2
- package/dist/{chunk-E4NCJ7RD.mjs → chunk-4G3SRVRI.mjs} +1 -2
- package/dist/{chunk-6QPRDQZF.js → chunk-4QXTB3L6.js} +1 -2
- package/dist/{chunk-XNSZ7KUH.js → chunk-5GVMKUMP.js} +1 -2
- package/dist/chunk-66NQ5CVY.mjs +1 -0
- package/dist/{chunk-JBSCER34.js → chunk-6NXXQYQL.js} +1 -2
- package/dist/chunk-732C2EVN.js +1 -0
- package/dist/chunk-7BJXI2HI.mjs +1 -0
- package/dist/{chunk-C5QO3SX4.js → chunk-7IFSWCQP.js} +1 -2
- package/dist/{chunk-A4PK7JB2.js → chunk-7ZZO7GVB.js} +1 -2
- package/dist/chunk-AME4HJR4.js +1 -0
- package/dist/chunk-AOHKVFAS.mjs +322 -0
- package/dist/{chunk-HO5M7M4M.js → chunk-B46SJB5V.js} +1 -2
- package/dist/chunk-BFAX7JQA.mjs +1 -0
- package/dist/{chunk-ID2NYIVE.mjs → chunk-BNHQFZHL.mjs} +2 -3
- package/dist/{chunk-RLYTX3MM.js → chunk-BRS52EDT.js} +1 -2
- package/dist/{chunk-OPYQIJKY.js → chunk-C7IDR2IV.js} +1 -2
- package/dist/{chunk-CISJAQ6W.mjs → chunk-COD3RMTL.mjs} +1 -2
- package/dist/chunk-CR2QZTGW.js +1 -0
- package/dist/{chunk-6WIP33TW.mjs → chunk-DBZSN4WP.mjs} +1 -2
- package/dist/{chunk-74Z23WUA.mjs → chunk-EEQALYOY.mjs} +1 -2
- package/dist/chunk-EFIBHKQE.mjs +1 -0
- package/dist/{chunk-GKKAK6ES.mjs → chunk-EWVK45Z3.mjs} +1 -2
- package/dist/{chunk-QSVVAZVT.mjs → chunk-EXEXUAF6.mjs} +1 -2
- package/dist/chunk-EZCGTHQV.js +6 -0
- package/dist/{chunk-SYMQJO2W.mjs → chunk-GTYXVAJX.mjs} +2 -3
- package/dist/{chunk-6FGCGLH5.mjs → chunk-H3XJV2IR.mjs} +1 -2
- package/dist/chunk-HBLGN4SD.js +1 -0
- package/dist/{chunk-MCWV7S2G.js → chunk-HHK5LHEG.js} +1 -2
- package/dist/{chunk-XHROISIF.mjs → chunk-HWHBINVN.mjs} +1 -2
- package/dist/{chunk-3EGQWLJ6.js → chunk-I2LMQWK3.js} +2 -3
- package/dist/{chunk-NQNFS3QI.js → chunk-I3Y4LOSL.js} +4 -5
- package/dist/chunk-ITCY2Z66.mjs +4 -0
- package/dist/{chunk-Z6IIMLZU.mjs → chunk-KDAZQO3N.mjs} +1 -2
- package/dist/{chunk-J5WCPZLW.js → chunk-L2BRFMVS.js} +1 -2
- package/dist/chunk-L2VO3MEJ.js +1 -0
- package/dist/{chunk-R5FW5XUQ.mjs → chunk-LQTARVPU.mjs} +1 -2
- package/dist/{chunk-6TA2MVTU.mjs → chunk-LRRENTT5.mjs} +1 -2
- package/dist/{chunk-LIM64IV2.js → chunk-LVGT3DLT.js} +2 -3
- package/dist/{chunk-TXBZPCGF.mjs → chunk-LWIKDDSU.mjs} +1 -2
- package/dist/chunk-MPBPAEZC.mjs +1 -0
- package/dist/{chunk-Z73T6MWY.js → chunk-N3MQQUQP.js} +39 -35
- package/dist/{chunk-RY3PGVLZ.mjs → chunk-NBZUZYTB.mjs} +1 -2
- package/dist/{chunk-HGGLW5TE.js → chunk-NUWVPRNI.js} +1 -2
- package/dist/chunk-O45PKBZA.mjs +6 -0
- package/dist/chunk-O6CUBNXK.mjs +3 -0
- package/dist/{chunk-7SMLHZ4B.js → chunk-P4LNLCSF.js} +1 -2
- package/dist/{chunk-VWPGIES4.mjs → chunk-PCU6GKBE.mjs} +1 -2
- package/dist/chunk-PGI2LM6P.js +103 -0
- package/dist/{chunk-U62QYKVG.mjs → chunk-PJNKQPQP.mjs} +1 -2
- package/dist/{chunk-LSNL4XR5.js → chunk-PZRQWPWD.js} +1 -2
- package/dist/chunk-Q64735OC.js +144 -0
- package/dist/chunk-QPRYXVH2.js +1 -0
- package/dist/{chunk-MQFZHA2D.js → chunk-RFPLZDIO.js} +1 -2
- package/dist/chunk-RMQ7OLNY.mjs +144 -0
- package/dist/{chunk-2AW7KAZO.mjs → chunk-RPXRPGHL.mjs} +1 -2
- package/dist/chunk-RYREGZVQ.js +1 -0
- package/dist/{chunk-B4Z5MBUC.mjs → chunk-RZ6GC6WN.mjs} +1 -2
- package/dist/chunk-S6COXIZA.js +2 -0
- package/dist/chunk-SFGW37LE.mjs +1 -0
- package/dist/{chunk-3NQQSU4P.js → chunk-SJDDNB6M.js} +1 -2
- package/dist/{chunk-H3EYBSVP.mjs → chunk-TMXK4QKK.mjs} +2 -3
- package/dist/{chunk-P42Z5CFE.js → chunk-TQZWJGJ2.js} +1 -2
- package/dist/{chunk-EPT2K355.mjs → chunk-U5RWJRGA.mjs} +1 -2
- package/dist/{chunk-R3OYAJI6.mjs → chunk-UASG46LP.mjs} +1 -2
- package/dist/{chunk-RXL6CZAI.js → chunk-UAV7V4EM.js} +1 -2
- package/dist/chunk-UI536RU2.js +3 -0
- package/dist/{chunk-7AVN424U.js → chunk-UTFBKL73.js} +1 -2
- package/dist/{chunk-I54CDQGN.js → chunk-UXUMYP4L.js} +1 -2
- package/dist/{chunk-P3PULLYP.mjs → chunk-V7UFP6QU.mjs} +1 -2
- package/dist/{chunk-I4M2AA3N.js → chunk-VJTQXVAF.js} +1 -2
- package/dist/{chunk-ELKB2AFZ.js → chunk-VWED6UTN.js} +1 -2
- package/dist/{chunk-LU7PKE7Y.mjs → chunk-VYAL2TGT.mjs} +1 -2
- package/dist/chunk-W47OSMT6.js +2 -0
- package/dist/chunk-W65ZWTLD.mjs +1 -0
- package/dist/{chunk-5HL4UBFV.js → chunk-WDDCKYWA.js} +1 -2
- package/dist/{chunk-DJGS7SSN.mjs → chunk-WTGKZX7J.mjs} +1 -2
- package/dist/{chunk-TDDAYVKK.js → chunk-WZYCBW2R.js} +1 -2
- package/dist/chunk-X3GCGC3H.mjs +103 -0
- package/dist/chunk-XJO4DH3L.mjs +2 -0
- package/dist/{chunk-LWXZMKC2.js → chunk-XO3VQYTL.js} +7 -8
- package/dist/{chunk-IZCWCE7W.mjs → chunk-XOH4WXOZ.mjs} +1 -2
- package/dist/{chunk-SHMJNRHO.mjs → chunk-XP5PL6K7.mjs} +1 -2
- package/dist/{chunk-CKGJK4D7.mjs → chunk-Y3MKMAFQ.mjs} +2 -3
- package/dist/chunk-YFBDJ4FH.js +1 -0
- package/dist/chunk-YTU4FNM2.mjs +1 -0
- package/dist/{chunk-TV4U6AIS.js → chunk-Z763UI5U.js} +1 -2
- package/dist/chunk-ZHFLBL63.mjs +2 -0
- package/dist/{chunk-RRVKUCFR.mjs → chunk-ZIZL37BG.mjs} +1 -2
- package/dist/{chunk-WWT2ZSNU.mjs → chunk-ZJYULEER.mjs} +1 -2
- package/dist/{chunk-LJNNPAFU.mjs → chunk-ZQZJNKVB.mjs} +1 -2
- package/dist/chunk-ZVOIR4QH.js +4 -0
- package/dist/consent.js +1 -2
- package/dist/consent.mjs +1 -2
- package/dist/core.d.mts +98 -19
- package/dist/core.d.ts +98 -19
- package/dist/core.js +1 -2
- package/dist/core.mjs +1 -2
- package/dist/cross-border.d.mts +36 -14
- package/dist/cross-border.d.ts +36 -14
- package/dist/cross-border.js +1 -2
- package/dist/cross-border.mjs +1 -2
- package/dist/dpia.d.mts +4 -4
- package/dist/dpia.d.ts +4 -4
- package/dist/dpia.js +1 -2
- package/dist/dpia.mjs +1 -2
- package/dist/dsr.d.mts +30 -17
- package/dist/dsr.d.ts +30 -17
- package/dist/dsr.js +1 -2
- package/dist/dsr.mjs +1 -2
- package/dist/hooks.d.mts +113 -20
- package/dist/hooks.d.ts +113 -20
- package/dist/hooks.js +1 -2
- package/dist/hooks.mjs +1 -2
- package/dist/index.d.mts +422 -26
- package/dist/index.d.ts +422 -26
- package/dist/index.js +1 -2
- package/dist/index.mjs +1 -2
- package/dist/lawful-basis.js +1 -2
- package/dist/lawful-basis.mjs +1 -2
- package/dist/policy.js +1 -2
- package/dist/policy.mjs +1 -2
- package/dist/presets.d.mts +54 -5
- package/dist/presets.d.ts +54 -5
- package/dist/presets.js +1 -2
- package/dist/presets.mjs +1 -2
- package/dist/ropa.js +1 -2
- package/dist/ropa.mjs +1 -2
- package/dist/server.d.mts +89 -19
- package/dist/server.d.ts +89 -19
- package/dist/server.js +1 -2
- package/dist/server.mjs +1 -2
- package/dist/styles.css +34 -0
- package/dist/unstyled.d.mts +3 -1
- package/dist/unstyled.d.ts +3 -1
- package/dist/unstyled.js +1 -2
- package/dist/unstyled.mjs +1 -2
- package/package.json +59 -20
- package/dist/chunk-3VQAYQR7.js +0 -7
- package/dist/chunk-6HZL2WDU.mjs +0 -2
- package/dist/chunk-75TJPK2N.mjs +0 -2
- package/dist/chunk-ABDB7LEV.mjs +0 -2
- package/dist/chunk-AYKLAEOU.mjs +0 -2
- package/dist/chunk-C4YM4UMI.js +0 -2
- package/dist/chunk-CKJAECGV.js +0 -2
- package/dist/chunk-CPK5D5FY.js +0 -132
- package/dist/chunk-CWHBCQGT.mjs +0 -2
- package/dist/chunk-E64TU6IU.js +0 -2
- package/dist/chunk-F5TXUA4O.mjs +0 -4
- package/dist/chunk-GN5C32JB.mjs +0 -2
- package/dist/chunk-GRLIPT5V.mjs +0 -132
- package/dist/chunk-I557S566.mjs +0 -15
- package/dist/chunk-JFFOPHU3.mjs +0 -318
- package/dist/chunk-KF3EFJEF.mjs +0 -3
- package/dist/chunk-ORFC66EA.js +0 -4
- package/dist/chunk-S4GRSNB4.js +0 -2
- package/dist/chunk-SCWNM4PC.mjs +0 -2
- package/dist/chunk-SKKOMFXH.js +0 -81
- package/dist/chunk-TCN22KYP.mjs +0 -7
- package/dist/chunk-TUNQUVHU.mjs +0 -81
- package/dist/chunk-VIQUXWJC.js +0 -2
- package/dist/chunk-WTJGLNTB.js +0 -3
- package/dist/chunk-XIM7KMD6.js +0 -2
- package/dist/chunk-YPKUHSK4.js +0 -15
- package/dist/chunk-ZPKVLTSX.js +0 -2
package/dist/index.mjs
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
export{c as PolicyExporter,a as PolicyGenerator,b as PolicyPreview}from'./chunk-
|
|
3
|
-
//# sourceMappingURL=index.mjs.map
|
|
2
|
+
export{c as PolicyExporter,a as PolicyGenerator,b as PolicyPreview}from'./chunk-TMXK4QKK.mjs';export{a as NDPRDashboard}from'./chunk-ZIZL37BG.mjs';export{a as LawfulBasisTracker}from'./chunk-COD3RMTL.mjs';export{a as CrossBorderTransferManager}from'./chunk-GTYXVAJX.mjs';export{a as ROPAManager}from'./chunk-EXEXUAF6.mjs';export{a as NDPRProvider,b as useNDPRConfig}from'./chunk-EEQALYOY.mjs';import'./chunk-HWHBINVN.mjs';export{a as useComplianceScore}from'./chunk-W65ZWTLD.mjs';export{b as useDefaultPrivacyPolicy,a as usePrivacyPolicy}from'./chunk-VYAL2TGT.mjs';export{a as useLawfulBasis}from'./chunk-4G3SRVRI.mjs';export{a as useCrossBorderTransfer}from'./chunk-KDAZQO3N.mjs';export{a as useROPA}from'./chunk-RPXRPGHL.mjs';export{a as useAdaptivePolicyWizard}from'./chunk-O6CUBNXK.mjs';import'./chunk-AOHKVFAS.mjs';export{c as DEFAULT_POLICY_SECTIONS,d as DEFAULT_POLICY_VARIABLES,e as createBusinessPolicyTemplate,b as generatePolicyText}from'./chunk-Y3MKMAFQ.mjs';export{a as getComplianceScore}from'./chunk-EFIBHKQE.mjs';import'./chunk-RMQ7OLNY.mjs';export{c as assessComplianceGaps,d as generateLawfulBasisSummary,b as getLawfulBasisDescription,a as validateProcessingActivity}from'./chunk-LWIKDDSU.mjs';export{h as assessTransferRisk,f as getTransferMechanismDescription,e as isNDPCApprovalRequired,g as validateTransfer}from'./chunk-7BJXI2HI.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-U5RWJRGA.mjs';export{a as ConsentBanner}from'./chunk-BFAX7JQA.mjs';export{c as appendAuditEntry,a as createAuditEntry,b as getAuditLog}from'./chunk-V7UFP6QU.mjs';export{a as useConsent}from'./chunk-PCU6GKBE.mjs';export{a as useFocusTrap}from'./chunk-YTU4FNM2.mjs';import'./chunk-UASG46LP.mjs';export{a as validateConsent,b as validateConsentOptions}from'./chunk-PJNKQPQP.mjs';export{a as DSRDashboard,b as DSRTracker}from'./chunk-66NQ5CVY.mjs';export{a as DSRRequestForm}from'./chunk-XJO4DH3L.mjs';export{a as useDSR}from'./chunk-MPBPAEZC.mjs';export{b as formatDSRRequest}from'./chunk-RZ6GC6WN.mjs';export{a as DPIAReport,b as StepIndicator}from'./chunk-O45PKBZA.mjs';export{a as DPIAQuestionnaire}from'./chunk-ZQZJNKVB.mjs';export{a as useDPIA}from'./chunk-H3XJV2IR.mjs';export{a as assessDPIARisk}from'./chunk-LRRENTT5.mjs';export{b as BreachNotificationManager,a as BreachRiskAssessment,c as RegulatoryReportGenerator}from'./chunk-X3GCGC3H.mjs';export{a as BreachReportForm}from'./chunk-ZHFLBL63.mjs';export{a as useBreach}from'./chunk-3HOXQNCH.mjs';export{a as calculateBreachSeverity}from'./chunk-WTGKZX7J.mjs';export{a as sanitizeInput}from'./chunk-EWVK45Z3.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';import'./chunk-DBZSN4WP.mjs';import'./chunk-ZJYULEER.mjs';import {jsx}from'react/jsx-runtime';var xe=({variant:t="short",className:e,hidden:s})=>{if(s)return null;let a$1=t==="long"?b:a;return jsx("p",{role:"note",className:e!=null?e:"ndpr-legal-notice","data-ndpr-legal-notice":t,children:a$1})};export{xe as LegalNotice};
|
package/dist/lawful-basis.js
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
'use strict';var
|
|
3
|
-
//# sourceMappingURL=lawful-basis.js.map
|
|
2
|
+
'use strict';var chunkPZRQWPWD_js=require('./chunk-PZRQWPWD.js'),chunkUTFBKL73_js=require('./chunk-UTFBKL73.js'),chunkWZYCBW2R_js=require('./chunk-WZYCBW2R.js');require('./chunk-AME4HJR4.js'),require('./chunk-VWED6UTN.js'),require('./chunk-RFPLZDIO.js');var react=require('react'),jsxRuntime=require('react/jsx-runtime');var o=react.createContext(null);function x(){let s=react.useContext(o);if(!s)throw new Error("LawfulBasis compound components must be wrapped in <LawfulBasis.Provider>. Example: <LawfulBasis.Provider><LawfulBasis.Tracker /></LawfulBasis.Provider>");return s}var r=({adapter:s,storageKey:t,useLocalStorage:i,initialActivities:u,onAdd:f,onUpdate:p,onRemove:l,children:n})=>{let m=chunkUTFBKL73_js.a({adapter:s,storageKey:t,useLocalStorage:i,initialActivities:u,onAdd:f,onUpdate:p,onRemove:l});return jsxRuntime.jsx(o.Provider,{value:m,children:n})};var y={Provider:r,Tracker:chunkPZRQWPWD_js.a};Object.defineProperty(exports,"LawfulBasisTracker",{enumerable:true,get:function(){return chunkPZRQWPWD_js.a}});Object.defineProperty(exports,"useLawfulBasis",{enumerable:true,get:function(){return chunkUTFBKL73_js.a}});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}});exports.LawfulBasis=y;exports.LawfulBasisProvider=r;exports.useLawfulBasisCompound=x;
|
package/dist/lawful-basis.mjs
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {a}from'./chunk-
|
|
3
|
-
//# sourceMappingURL=lawful-basis.mjs.map
|
|
2
|
+
import {a}from'./chunk-COD3RMTL.mjs';export{a as LawfulBasisTracker}from'./chunk-COD3RMTL.mjs';import {a as a$1}from'./chunk-4G3SRVRI.mjs';export{a as useLawfulBasis}from'./chunk-4G3SRVRI.mjs';export{c as assessComplianceGaps,d as generateLawfulBasisSummary,b as getLawfulBasisDescription,a as validateProcessingActivity}from'./chunk-LWIKDDSU.mjs';import'./chunk-SFGW37LE.mjs';import'./chunk-DBZSN4WP.mjs';import'./chunk-ZJYULEER.mjs';import {createContext,useContext}from'react';import {jsx}from'react/jsx-runtime';var o=createContext(null);function x(){let s=useContext(o);if(!s)throw new Error("LawfulBasis compound components must be wrapped in <LawfulBasis.Provider>. Example: <LawfulBasis.Provider><LawfulBasis.Tracker /></LawfulBasis.Provider>");return s}var r=({adapter:s,storageKey:t,useLocalStorage:i,initialActivities:u,onAdd:f,onUpdate:p,onRemove:l,children:n})=>{let m=a$1({adapter:s,storageKey:t,useLocalStorage:i,initialActivities:u,onAdd:f,onUpdate:p,onRemove:l});return jsx(o.Provider,{value:m,children:n})};var y={Provider:r,Tracker:a};export{y as LawfulBasis,r as LawfulBasisProvider,x as useLawfulBasisCompound};
|
package/dist/policy.js
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
'use strict';var
|
|
3
|
-
//# sourceMappingURL=policy.js.map
|
|
2
|
+
'use strict';var chunkI2LMQWK3_js=require('./chunk-I2LMQWK3.js'),chunkXO3VQYTL_js=require('./chunk-XO3VQYTL.js'),chunkZ763UI5U_js=require('./chunk-Z763UI5U.js'),chunkUI536RU2_js=require('./chunk-UI536RU2.js'),chunkN3MQQUQP_js=require('./chunk-N3MQQUQP.js'),chunkLVGT3DLT_js=require('./chunk-LVGT3DLT.js'),chunkQ64735OC_js=require('./chunk-Q64735OC.js');require('./chunk-ZVOIR4QH.js'),require('./chunk-AME4HJR4.js'),require('./chunk-VWED6UTN.js');var chunkRFPLZDIO_js=require('./chunk-RFPLZDIO.js'),react=require('react'),jsxRuntime=require('react/jsx-runtime');var u=react.createContext(null);function Y(){let o=react.useContext(u);if(!o)throw new Error("Policy compound components must be wrapped in <Policy.Provider>. Example: <Policy.Provider templates={...}><Policy.Generator /></Policy.Provider>");return o}var x=({templates:o,adapter:l,storageKey:t,useLocalStorage:i,initialPolicy:p,onGenerate:a,children:e})=>{let y=chunkZ763UI5U_js.a({templates:o,adapter:l,storageKey:t,useLocalStorage:i,initialPolicy:p,onGenerate:a}),r=chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},y),{templates:o});return jsxRuntime.jsx(u.Provider,{value:r,children:e})};var X={Provider:x,Generator:chunkXO3VQYTL_js.a,Preview:chunkXO3VQYTL_js.b,Exporter:chunkXO3VQYTL_js.c};var Q=({policy:o,className:l,mode:t="shadow",options:i})=>{let p=react.useRef(null);if(react.useEffect(()=>{var g;if(t!=="shadow")return;let e=p.current;if(!e)return;let y=chunkN3MQQUQP_js.a(o,chunkRFPLZDIO_js.a({includeStyles:true,includePrintCSS:true},i)),r=(g=e.shadowRoot)!=null?g:e.attachShadow({mode:"open"});r.innerHTML=y;let v=h=>{var A;let C=h.target;if(!C)return;let T=C.closest("a[href]");if(!T)return;let P=(A=T.getAttribute("href"))!=null?A:"";if(!P.startsWith("#")||P.length<2)return;let R=decodeURIComponent(P.slice(1)),E=r.getElementById(R);E&&(h.preventDefault(),E.scrollIntoView({behavior:"smooth",block:"start"}));};return r.addEventListener("click",v),()=>{r.removeEventListener("click",v),e.shadowRoot&&(e.shadowRoot.innerHTML="");}},[o,i,t]),t==="shadow")return jsxRuntime.jsx("div",{ref:p,"data-ndpr-component":"policy-page",className:l});let a=chunkN3MQQUQP_js.a(o,chunkRFPLZDIO_js.a({includeStyles:false},i));return jsxRuntime.jsx("div",{"data-ndpr-component":"policy-page",className:l,dangerouslySetInnerHTML:{__html:a}})};Object.defineProperty(exports,"AdaptivePolicyWizard",{enumerable:true,get:function(){return chunkI2LMQWK3_js.a}});Object.defineProperty(exports,"PolicyExporter",{enumerable:true,get:function(){return chunkXO3VQYTL_js.c}});Object.defineProperty(exports,"PolicyGenerator",{enumerable:true,get:function(){return chunkXO3VQYTL_js.a}});Object.defineProperty(exports,"PolicyPreview",{enumerable:true,get:function(){return chunkXO3VQYTL_js.b}});Object.defineProperty(exports,"useDefaultPrivacyPolicy",{enumerable:true,get:function(){return chunkZ763UI5U_js.b}});Object.defineProperty(exports,"usePrivacyPolicy",{enumerable:true,get:function(){return chunkZ763UI5U_js.a}});Object.defineProperty(exports,"useAdaptivePolicyWizard",{enumerable:true,get:function(){return chunkUI536RU2_js.a}});Object.defineProperty(exports,"exportDOCX",{enumerable:true,get:function(){return chunkN3MQQUQP_js.d}});Object.defineProperty(exports,"exportHTML",{enumerable:true,get:function(){return chunkN3MQQUQP_js.a}});Object.defineProperty(exports,"exportMarkdown",{enumerable:true,get:function(){return chunkN3MQQUQP_js.b}});Object.defineProperty(exports,"exportPDF",{enumerable:true,get:function(){return chunkN3MQQUQP_js.c}});Object.defineProperty(exports,"DEFAULT_POLICY_SECTIONS",{enumerable:true,get:function(){return chunkLVGT3DLT_js.c}});Object.defineProperty(exports,"DEFAULT_POLICY_VARIABLES",{enumerable:true,get:function(){return chunkLVGT3DLT_js.d}});Object.defineProperty(exports,"createBusinessPolicyTemplate",{enumerable:true,get:function(){return chunkLVGT3DLT_js.e}});Object.defineProperty(exports,"findUnfilledTokens",{enumerable:true,get:function(){return chunkLVGT3DLT_js.a}});Object.defineProperty(exports,"generatePolicyText",{enumerable:true,get:function(){return chunkLVGT3DLT_js.b}});Object.defineProperty(exports,"DEFAULT_DATA_CATEGORIES",{enumerable:true,get:function(){return chunkQ64735OC_js.d}});Object.defineProperty(exports,"assemblePolicy",{enumerable:true,get:function(){return chunkQ64735OC_js.c}});Object.defineProperty(exports,"createDefaultContext",{enumerable:true,get:function(){return chunkQ64735OC_js.e}});Object.defineProperty(exports,"evaluatePolicyCompliance",{enumerable:true,get:function(){return chunkQ64735OC_js.f}});exports.Policy=X;exports.PolicyPage=Q;exports.PolicyProvider=x;exports.usePolicyCompound=Y;
|
package/dist/policy.mjs
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
export{a as AdaptivePolicyWizard}from'./chunk-
|
|
3
|
-
//# sourceMappingURL=policy.mjs.map
|
|
2
|
+
export{a as AdaptivePolicyWizard}from'./chunk-BNHQFZHL.mjs';import {c,b,a}from'./chunk-TMXK4QKK.mjs';export{c as PolicyExporter,a as PolicyGenerator,b as PolicyPreview}from'./chunk-TMXK4QKK.mjs';import {a as a$1}from'./chunk-VYAL2TGT.mjs';export{b as useDefaultPrivacyPolicy,a as usePrivacyPolicy}from'./chunk-VYAL2TGT.mjs';export{a as useAdaptivePolicyWizard}from'./chunk-O6CUBNXK.mjs';import {a as a$3}from'./chunk-AOHKVFAS.mjs';export{d as exportDOCX,a as exportHTML,b as exportMarkdown,c as exportPDF}from'./chunk-AOHKVFAS.mjs';export{c as DEFAULT_POLICY_SECTIONS,d as DEFAULT_POLICY_VARIABLES,e as createBusinessPolicyTemplate,a as findUnfilledTokens,b as generatePolicyText}from'./chunk-Y3MKMAFQ.mjs';export{d as DEFAULT_DATA_CATEGORIES,c as assemblePolicy,e as createDefaultContext,f as evaluatePolicyCompliance}from'./chunk-RMQ7OLNY.mjs';import'./chunk-ITCY2Z66.mjs';import'./chunk-SFGW37LE.mjs';import'./chunk-DBZSN4WP.mjs';import {b as b$1,a as a$2}from'./chunk-ZJYULEER.mjs';import {createContext,useContext,useRef,useEffect}from'react';import {jsx}from'react/jsx-runtime';var u=createContext(null);function Y(){let o=useContext(u);if(!o)throw new Error("Policy compound components must be wrapped in <Policy.Provider>. Example: <Policy.Provider templates={...}><Policy.Generator /></Policy.Provider>");return o}var x=({templates:o,adapter:l,storageKey:t,useLocalStorage:i,initialPolicy:p,onGenerate:a,children:e})=>{let y=a$1({templates:o,adapter:l,storageKey:t,useLocalStorage:i,initialPolicy:p,onGenerate:a}),r=b$1(a$2({},y),{templates:o});return jsx(u.Provider,{value:r,children:e})};var X={Provider:x,Generator:a,Preview:b,Exporter:c};var Q=({policy:o,className:l,mode:t="shadow",options:i})=>{let p=useRef(null);if(useEffect(()=>{var g;if(t!=="shadow")return;let e=p.current;if(!e)return;let y=a$3(o,a$2({includeStyles:true,includePrintCSS:true},i)),r=(g=e.shadowRoot)!=null?g:e.attachShadow({mode:"open"});r.innerHTML=y;let v=h=>{var A;let C=h.target;if(!C)return;let T=C.closest("a[href]");if(!T)return;let P=(A=T.getAttribute("href"))!=null?A:"";if(!P.startsWith("#")||P.length<2)return;let R=decodeURIComponent(P.slice(1)),E=r.getElementById(R);E&&(h.preventDefault(),E.scrollIntoView({behavior:"smooth",block:"start"}));};return r.addEventListener("click",v),()=>{r.removeEventListener("click",v),e.shadowRoot&&(e.shadowRoot.innerHTML="");}},[o,i,t]),t==="shadow")return jsx("div",{ref:p,"data-ndpr-component":"policy-page",className:l});let a=a$3(o,a$2({includeStyles:false},i));return jsx("div",{"data-ndpr-component":"policy-page",className:l,dangerouslySetInnerHTML:{__html:a}})};export{X as Policy,Q as PolicyPage,x as PolicyProvider,Y as usePolicyCompound};
|
package/dist/presets.d.mts
CHANGED
|
@@ -53,6 +53,44 @@ declare interface BreachFormSubmission {
|
|
|
53
53
|
dataTypes: string[];
|
|
54
54
|
/** Estimated number of affected data subjects */
|
|
55
55
|
estimatedAffectedSubjects?: number;
|
|
56
|
+
/**
|
|
57
|
+
* Approximate number of personal data RECORDS concerned. Distinct from
|
|
58
|
+
* subject count (one subject may have many records). NDPA Section 40(2).
|
|
59
|
+
*/
|
|
60
|
+
approximateRecordCount?: number;
|
|
61
|
+
/**
|
|
62
|
+
* Categories of data subjects affected (e.g. customers, employees, minors).
|
|
63
|
+
* NDPA Section 40(2).
|
|
64
|
+
*/
|
|
65
|
+
dataSubjectCategories?: string[];
|
|
66
|
+
/** Whether sensitive personal data (NDPA Section 30) is involved */
|
|
67
|
+
involvesSensitiveData?: boolean;
|
|
68
|
+
/**
|
|
69
|
+
* Likely consequences of the breach for affected data subjects.
|
|
70
|
+
* Required content for the NDPC report and Section 40(3) communications.
|
|
71
|
+
*/
|
|
72
|
+
likelyConsequences?: string;
|
|
73
|
+
/**
|
|
74
|
+
* Measures taken or proposed to mitigate adverse effects.
|
|
75
|
+
* NDPA Section 40(3).
|
|
76
|
+
*/
|
|
77
|
+
mitigationMeasures?: string;
|
|
78
|
+
/**
|
|
79
|
+
* Data Protection Officer contact details (Section 32(3)(c) — DPO is the
|
|
80
|
+
* named NDPC contact). Falls back to organisation-level DPO if omitted.
|
|
81
|
+
*/
|
|
82
|
+
dpoContact?: {
|
|
83
|
+
name: string;
|
|
84
|
+
email: string;
|
|
85
|
+
phone?: string;
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* Whether this is a phased / interim report submitted under Section 40(2)
|
|
89
|
+
* before complete information is available.
|
|
90
|
+
*/
|
|
91
|
+
isPhasedReport?: boolean;
|
|
92
|
+
/** ID of the prior phased report this report supplements, if any. */
|
|
93
|
+
supplementsReportId?: string;
|
|
56
94
|
/** Current status of the breach */
|
|
57
95
|
status: 'ongoing' | 'contained' | 'resolved';
|
|
58
96
|
/** Initial actions taken to address the breach */
|
|
@@ -321,6 +359,12 @@ declare interface DataCategory {
|
|
|
321
359
|
selected: boolean;
|
|
322
360
|
}
|
|
323
361
|
|
|
362
|
+
/** A map of question IDs to their answer values */
|
|
363
|
+
declare type DPIAAnswerMap = Record<string, DPIAAnswerValue>;
|
|
364
|
+
|
|
365
|
+
/** Possible value types for a DPIA answer */
|
|
366
|
+
declare type DPIAAnswerValue = string | number | boolean | string[];
|
|
367
|
+
|
|
324
368
|
/**
|
|
325
369
|
* Data Protection Impact Assessment types aligned with NDPA 2023 Sections 38-39
|
|
326
370
|
* A DPIA is required when processing is likely to result in high risk to data subjects
|
|
@@ -574,10 +618,10 @@ export declare const NDPRDPIA: React__default.FC<NDPRDPIAProps>;
|
|
|
574
618
|
|
|
575
619
|
export declare interface NDPRDPIAProps {
|
|
576
620
|
sections?: DPIASection[];
|
|
577
|
-
adapter?: StorageAdapter<
|
|
621
|
+
adapter?: StorageAdapter<DPIAAnswerMap>;
|
|
578
622
|
classNames?: DPIAQuestionnaireClassNames;
|
|
579
623
|
unstyled?: boolean;
|
|
580
|
-
onComplete?: (answers:
|
|
624
|
+
onComplete?: (answers: DPIAAnswerMap) => void;
|
|
581
625
|
}
|
|
582
626
|
|
|
583
627
|
export declare const NDPRLawfulBasis: React__default.FC<NDPRLawfulBasisProps>;
|
|
@@ -913,7 +957,9 @@ declare interface RequestType {
|
|
|
913
957
|
/** Description of what this request type entails */
|
|
914
958
|
description: string;
|
|
915
959
|
/**
|
|
916
|
-
* NDPA section reference
|
|
960
|
+
* NDPA 2023 section reference for this right
|
|
961
|
+
* (e.g., "Section 34(1)(a)" for access, "Section 38" for portability).
|
|
962
|
+
* Used for display purposes only — verify the exact subsection with counsel.
|
|
917
963
|
*/
|
|
918
964
|
ndpaSection?: string;
|
|
919
965
|
/**
|
|
@@ -1009,8 +1055,11 @@ declare interface ThirdPartyProcessor {
|
|
|
1009
1055
|
}
|
|
1010
1056
|
|
|
1011
1057
|
/**
|
|
1012
|
-
* Cross-Border Data Transfer types aligned with NDPA 2023 Part
|
|
1013
|
-
* Personal data may only be transferred outside Nigeria under
|
|
1058
|
+
* Cross-Border Data Transfer types aligned with NDPA 2023 Part VIII (Sections 41-43).
|
|
1059
|
+
* Personal data may only be transferred outside Nigeria under the bases listed in
|
|
1060
|
+
* Section 41(1), where Section 42 defines adequacy and Section 43 lists derogations.
|
|
1061
|
+
*
|
|
1062
|
+
* Note: These are guidance labels — not legal advice. Verify with your DPO or counsel.
|
|
1014
1063
|
*/
|
|
1015
1064
|
/**
|
|
1016
1065
|
* Transfer mechanisms recognized under the NDPA
|
package/dist/presets.d.ts
CHANGED
|
@@ -53,6 +53,44 @@ declare interface BreachFormSubmission {
|
|
|
53
53
|
dataTypes: string[];
|
|
54
54
|
/** Estimated number of affected data subjects */
|
|
55
55
|
estimatedAffectedSubjects?: number;
|
|
56
|
+
/**
|
|
57
|
+
* Approximate number of personal data RECORDS concerned. Distinct from
|
|
58
|
+
* subject count (one subject may have many records). NDPA Section 40(2).
|
|
59
|
+
*/
|
|
60
|
+
approximateRecordCount?: number;
|
|
61
|
+
/**
|
|
62
|
+
* Categories of data subjects affected (e.g. customers, employees, minors).
|
|
63
|
+
* NDPA Section 40(2).
|
|
64
|
+
*/
|
|
65
|
+
dataSubjectCategories?: string[];
|
|
66
|
+
/** Whether sensitive personal data (NDPA Section 30) is involved */
|
|
67
|
+
involvesSensitiveData?: boolean;
|
|
68
|
+
/**
|
|
69
|
+
* Likely consequences of the breach for affected data subjects.
|
|
70
|
+
* Required content for the NDPC report and Section 40(3) communications.
|
|
71
|
+
*/
|
|
72
|
+
likelyConsequences?: string;
|
|
73
|
+
/**
|
|
74
|
+
* Measures taken or proposed to mitigate adverse effects.
|
|
75
|
+
* NDPA Section 40(3).
|
|
76
|
+
*/
|
|
77
|
+
mitigationMeasures?: string;
|
|
78
|
+
/**
|
|
79
|
+
* Data Protection Officer contact details (Section 32(3)(c) — DPO is the
|
|
80
|
+
* named NDPC contact). Falls back to organisation-level DPO if omitted.
|
|
81
|
+
*/
|
|
82
|
+
dpoContact?: {
|
|
83
|
+
name: string;
|
|
84
|
+
email: string;
|
|
85
|
+
phone?: string;
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* Whether this is a phased / interim report submitted under Section 40(2)
|
|
89
|
+
* before complete information is available.
|
|
90
|
+
*/
|
|
91
|
+
isPhasedReport?: boolean;
|
|
92
|
+
/** ID of the prior phased report this report supplements, if any. */
|
|
93
|
+
supplementsReportId?: string;
|
|
56
94
|
/** Current status of the breach */
|
|
57
95
|
status: 'ongoing' | 'contained' | 'resolved';
|
|
58
96
|
/** Initial actions taken to address the breach */
|
|
@@ -321,6 +359,12 @@ declare interface DataCategory {
|
|
|
321
359
|
selected: boolean;
|
|
322
360
|
}
|
|
323
361
|
|
|
362
|
+
/** A map of question IDs to their answer values */
|
|
363
|
+
declare type DPIAAnswerMap = Record<string, DPIAAnswerValue>;
|
|
364
|
+
|
|
365
|
+
/** Possible value types for a DPIA answer */
|
|
366
|
+
declare type DPIAAnswerValue = string | number | boolean | string[];
|
|
367
|
+
|
|
324
368
|
/**
|
|
325
369
|
* Data Protection Impact Assessment types aligned with NDPA 2023 Sections 38-39
|
|
326
370
|
* A DPIA is required when processing is likely to result in high risk to data subjects
|
|
@@ -574,10 +618,10 @@ export declare const NDPRDPIA: React__default.FC<NDPRDPIAProps>;
|
|
|
574
618
|
|
|
575
619
|
export declare interface NDPRDPIAProps {
|
|
576
620
|
sections?: DPIASection[];
|
|
577
|
-
adapter?: StorageAdapter<
|
|
621
|
+
adapter?: StorageAdapter<DPIAAnswerMap>;
|
|
578
622
|
classNames?: DPIAQuestionnaireClassNames;
|
|
579
623
|
unstyled?: boolean;
|
|
580
|
-
onComplete?: (answers:
|
|
624
|
+
onComplete?: (answers: DPIAAnswerMap) => void;
|
|
581
625
|
}
|
|
582
626
|
|
|
583
627
|
export declare const NDPRLawfulBasis: React__default.FC<NDPRLawfulBasisProps>;
|
|
@@ -913,7 +957,9 @@ declare interface RequestType {
|
|
|
913
957
|
/** Description of what this request type entails */
|
|
914
958
|
description: string;
|
|
915
959
|
/**
|
|
916
|
-
* NDPA section reference
|
|
960
|
+
* NDPA 2023 section reference for this right
|
|
961
|
+
* (e.g., "Section 34(1)(a)" for access, "Section 38" for portability).
|
|
962
|
+
* Used for display purposes only — verify the exact subsection with counsel.
|
|
917
963
|
*/
|
|
918
964
|
ndpaSection?: string;
|
|
919
965
|
/**
|
|
@@ -1009,8 +1055,11 @@ declare interface ThirdPartyProcessor {
|
|
|
1009
1055
|
}
|
|
1010
1056
|
|
|
1011
1057
|
/**
|
|
1012
|
-
* Cross-Border Data Transfer types aligned with NDPA 2023 Part
|
|
1013
|
-
* Personal data may only be transferred outside Nigeria under
|
|
1058
|
+
* Cross-Border Data Transfer types aligned with NDPA 2023 Part VIII (Sections 41-43).
|
|
1059
|
+
* Personal data may only be transferred outside Nigeria under the bases listed in
|
|
1060
|
+
* Section 41(1), where Section 42 defines adequacy and Section 43 lists derogations.
|
|
1061
|
+
*
|
|
1062
|
+
* Note: These are guidance labels — not legal advice. Verify with your DPO or counsel.
|
|
1014
1063
|
*/
|
|
1015
1064
|
/**
|
|
1016
1065
|
* Transfer mechanisms recognized under the NDPA
|
package/dist/presets.js
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
'use strict';var chunk3EGQWLJ6_js=require('./chunk-3EGQWLJ6.js'),chunkHGGLW5TE_js=require('./chunk-HGGLW5TE.js'),chunkLSNL4XR5_js=require('./chunk-LSNL4XR5.js'),chunkNQNFS3QI_js=require('./chunk-NQNFS3QI.js'),chunkXNSZ7KUH_js=require('./chunk-XNSZ7KUH.js');require('./chunk-ORFC66EA.js'),require('./chunk-Z73T6MWY.js'),require('./chunk-YPKUHSK4.js');var chunkS4GRSNB4_js=require('./chunk-S4GRSNB4.js');require('./chunk-CPK5D5FY.js'),require('./chunk-TDDAYVKK.js'),require('./chunk-C4YM4UMI.js'),require('./chunk-GOU6FU6Y.js');var chunkXIM7KMD6_js=require('./chunk-XIM7KMD6.js'),chunkZPKVLTSX_js=require('./chunk-ZPKVLTSX.js'),chunk5HL4UBFV_js=require('./chunk-5HL4UBFV.js'),chunkWTJGLNTB_js=require('./chunk-WTJGLNTB.js');require('./chunk-I54CDQGN.js'),require('./chunk-E64TU6IU.js'),require('./chunk-ELKB2AFZ.js');var chunkMQFZHA2D_js=require('./chunk-MQFZHA2D.js'),jsxRuntime=require('react/jsx-runtime'),react=require('react');var q=[{id:"essential",label:"Essential Cookies",description:"Required for basic site functionality. Cannot be disabled.",required:true,purpose:"Site operation"},{id:"analytics",label:"Analytics",description:"Help us understand how visitors use our site to improve the experience.",required:false,purpose:"Usage analytics"},{id:"marketing",label:"Marketing",description:"Used to deliver relevant advertisements and track campaign effectiveness.",required:false,purpose:"Targeted advertising"},{id:"preferences",label:"Preferences",description:"Remember your settings and preferences for a personalised experience.",required:false,purpose:"Personalisation"}],O=({extraOptions:d=[],options:t,adapter:p,position:l="bottom",classNames:s,unstyled:c,onSave:a})=>{let u=t!=null?t:[...q,...d];return jsxRuntime.jsx(chunkXIM7KMD6_js.a,{options:u,onSave:f=>{p&&p.save(f),a==null||a(f);},position:l,classNames:s,unstyled:c,manageStorage:!p})};var I=[{id:"access",name:"Access My Data",description:"Request a copy of your personal data held by us",ndpaSection:"Section 30",estimatedCompletionTime:30,requiresAdditionalInfo:false},{id:"rectification",name:"Correct My Data",description:"Request corrections to inaccurate personal data",ndpaSection:"Section 31",estimatedCompletionTime:30,requiresAdditionalInfo:true,additionalFields:[{id:"correction_details",label:"What data needs to be corrected?",type:"textarea",required:true,placeholder:"Please describe the inaccurate data and what the correct information should be"}]},{id:"erasure",name:"Delete My Data",description:"Request deletion of your personal data",ndpaSection:"Section 32",estimatedCompletionTime:30,requiresAdditionalInfo:false},{id:"portability",name:"Export My Data",description:"Receive your data in a portable format",ndpaSection:"Section 34",estimatedCompletionTime:30,requiresAdditionalInfo:false},{id:"restrict",name:"Restrict Processing",description:"Request restriction of data processing",ndpaSection:"Section 33",estimatedCompletionTime:30,requiresAdditionalInfo:false},{id:"object",name:"Object to Processing",description:"Object to processing of your personal data",ndpaSection:"Section 35",estimatedCompletionTime:30,requiresAdditionalInfo:false}],k=({requestTypes:d=I,adapter:t,classNames:p,unstyled:l,onSubmit:s=()=>{}})=>jsxRuntime.jsx(chunkZPKVLTSX_js.a,{requestTypes:d,onSubmit:a=>{t&&t.save(a),s(a);},classNames:p,unstyled:l});var _=[{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"}],U=({categories:d=_,adapter:t,classNames:p,unstyled:l,onSubmit:s=()=>{}})=>jsxRuntime.jsx(chunkWTJGLNTB_js.a,{categories:d,onSubmit:a=>{t&&t.save(a),s(a);},classNames:p,unstyled:l});var E=d=>jsxRuntime.jsx(chunk3EGQWLJ6_js.a,chunkMQFZHA2D_js.a({},d));var Y=[{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"}]}]}],z=({sections:d=Y,adapter:t,classNames:p,unstyled:l,onComplete:s=()=>{}})=>{let[c,a]=react.useState({}),[u,y]=react.useState(0),f=(i,T)=>{a(B=>chunkMQFZHA2D_js.b(chunkMQFZHA2D_js.a({},B),{[i]:T}));},e=()=>{u<d.length-1?y(i=>i+1):(t&&t.save(c),s(c));},r=()=>{u>0&&y(i=>i-1);},o=Math.round((u+1)/d.length*100);return jsxRuntime.jsx(chunk5HL4UBFV_js.a,{sections:d,answers:c,onAnswerChange:f,currentSectionIndex:u,onNextSection:e,onPrevSection:r,progress:o,classNames:p,unstyled:l})};var H=({initialActivities:d=[],adapter:t,classNames:p,unstyled:l})=>{let[s,c]=react.useState(()=>{if(t){let e=t.load();if(e&&!(e instanceof Promise))return e}return d}),a=e=>{t&&t.save(e);};return jsxRuntime.jsx(chunkLSNL4XR5_js.a,{activities:s,onAddActivity:e=>{let r=Date.now(),o=chunkMQFZHA2D_js.b(chunkMQFZHA2D_js.a({},e),{id:`activity-${r}`,createdAt:r,updatedAt:r}),i=[...s,o];c(i),a(i);},onUpdateActivity:(e,r)=>{let o=s.map(i=>i.id===e?chunkMQFZHA2D_js.b(chunkMQFZHA2D_js.a(chunkMQFZHA2D_js.a({},i),r),{updatedAt:Date.now()}):i);c(o),a(o);},onArchiveActivity:e=>{let r=s.map(o=>o.id===e?chunkMQFZHA2D_js.b(chunkMQFZHA2D_js.a({},o),{status:"inactive",updatedAt:Date.now()}):o);c(r),a(r);},classNames:p,unstyled:l})};var V=({initialTransfers:d=[],adapter:t,classNames:p,unstyled:l})=>{let[s,c]=react.useState(()=>{if(t){let e=t.load();if(e&&!(e instanceof Promise))return e}return d}),a=e=>{t&&t.save(e);};return jsxRuntime.jsx(chunkNQNFS3QI_js.a,{transfers:s,onAddTransfer:e=>{let r=Date.now(),o=chunkMQFZHA2D_js.b(chunkMQFZHA2D_js.a({},e),{id:`transfer-${r}`,createdAt:r,updatedAt:r}),i=[...s,o];c(i),a(i);},onUpdateTransfer:(e,r)=>{let o=s.map(i=>i.id===e?chunkMQFZHA2D_js.b(chunkMQFZHA2D_js.a(chunkMQFZHA2D_js.a({},i),r),{updatedAt:Date.now()}):i);c(o),a(o);},onRemoveTransfer:e=>{let r=s.filter(o=>o.id!==e);c(r),a(r);},classNames:p,unstyled:l})};var Z={id:"ndpr-ropa-default",organizationName:"Your Organisation",organizationContact:"",organizationAddress:"",records:[],lastUpdated:Date.now(),version:"1.0"},ee=({initialData:d,adapter:t,classNames:p,unstyled:l})=>{let[s,c]=react.useState(d!=null?d:Z);react.useEffect(()=>{if(!t)return;let e=false;return chunkMQFZHA2D_js.d(null,null,function*(){let o=yield t.load();!e&&o&&c(o);}),()=>{e=true;}},[t]);let a=e=>{t&&t.save(e);};return jsxRuntime.jsx(chunkXNSZ7KUH_js.a,{ropa:s,onAddRecord:e=>{let r=chunkMQFZHA2D_js.b(chunkMQFZHA2D_js.a({},s),{records:[...s.records,e],lastUpdated:Date.now()});c(r),a(r);},onUpdateRecord:(e,r)=>{let o=chunkMQFZHA2D_js.b(chunkMQFZHA2D_js.a({},s),{records:s.records.map(i=>i.id===e?chunkMQFZHA2D_js.b(chunkMQFZHA2D_js.a(chunkMQFZHA2D_js.a({},i),r),{updatedAt:Date.now()}):i),lastUpdated:Date.now()});c(o),a(o);},onArchiveRecord:e=>{let r=chunkMQFZHA2D_js.b(chunkMQFZHA2D_js.a({},s),{records:s.records.map(o=>o.id===e?chunkMQFZHA2D_js.b(chunkMQFZHA2D_js.a({},o),{status:"archived",updatedAt:Date.now()}):o),lastUpdated:Date.now()});c(r),a(r);},classNames:p,unstyled:l})};var re=p=>{var l=p,{input:d}=l,t=chunkMQFZHA2D_js.c(l,["input"]);let s=chunkS4GRSNB4_js.a(d);return jsxRuntime.jsx(chunkHGGLW5TE_js.a,chunkMQFZHA2D_js.a({report:s},t))};exports.NDPRBreachReport=U;exports.NDPRComplianceDashboard=re;exports.NDPRConsent=O;exports.NDPRCrossBorder=V;exports.NDPRDPIA=z;exports.NDPRLawfulBasis=H;exports.NDPRPrivacyPolicy=E;exports.NDPRROPA=ee;exports.NDPRSubjectRights=k;//# sourceMappingURL=presets.js.map
|
|
3
|
-
//# sourceMappingURL=presets.js.map
|
|
2
|
+
'use strict';var chunkI2LMQWK3_js=require('./chunk-I2LMQWK3.js'),chunkNUWVPRNI_js=require('./chunk-NUWVPRNI.js'),chunkPZRQWPWD_js=require('./chunk-PZRQWPWD.js'),chunkI3Y4LOSL_js=require('./chunk-I3Y4LOSL.js'),chunk5GVMKUMP_js=require('./chunk-5GVMKUMP.js');require('./chunk-UI536RU2.js'),require('./chunk-N3MQQUQP.js');var chunkQPRYXVH2_js=require('./chunk-QPRYXVH2.js');require('./chunk-Q64735OC.js'),require('./chunk-WZYCBW2R.js'),require('./chunk-YFBDJ4FH.js'),require('./chunk-4CVBQC66.js');var chunk732C2EVN_js=require('./chunk-732C2EVN.js');require('./chunk-L2VO3MEJ.js');var chunkW47OSMT6_js=require('./chunk-W47OSMT6.js'),chunkWDDCKYWA_js=require('./chunk-WDDCKYWA.js'),chunkS6COXIZA_js=require('./chunk-S6COXIZA.js');require('./chunk-UXUMYP4L.js'),require('./chunk-ZVOIR4QH.js'),require('./chunk-AME4HJR4.js'),require('./chunk-VWED6UTN.js');var chunkRFPLZDIO_js=require('./chunk-RFPLZDIO.js'),jsxRuntime=require('react/jsx-runtime'),react=require('react');var q=[{id:"essential",label:"Essential Cookies",description:"Required for basic site functionality. Cannot be disabled.",required:true,purpose:"Site operation"},{id:"analytics",label:"Analytics",description:"Help us understand how visitors use our site to improve the experience.",required:false,purpose:"Usage analytics"},{id:"marketing",label:"Marketing",description:"Used to deliver relevant advertisements and track campaign effectiveness.",required:false,purpose:"Targeted advertising"},{id:"preferences",label:"Preferences",description:"Remember your settings and preferences for a personalised experience.",required:false,purpose:"Personalisation"}],I=({extraOptions:d=[],options:t,adapter:p,position:l="bottom",classNames:s,unstyled:c,onSave:a})=>{let u=t!=null?t:[...q,...d];return jsxRuntime.jsx(chunk732C2EVN_js.a,{options:u,onSave:f=>{p&&p.save(f),a==null||a(f);},position:l,classNames:s,unstyled:c,manageStorage:!p})};var L=[{id:"access",name:"Access My Data",description:"Request a copy of your personal data held by us",ndpaSection:"Section 34(1)(a)\u2013(b)",estimatedCompletionTime:30,requiresAdditionalInfo:false},{id:"rectification",name:"Correct My Data",description:"Request corrections to inaccurate personal data",ndpaSection:"Section 34(1)(c)",estimatedCompletionTime:30,requiresAdditionalInfo:true,additionalFields:[{id:"correction_details",label:"What data needs to be corrected?",type:"textarea",required:true,placeholder:"Please describe the inaccurate data and what the correct information should be"}]},{id:"erasure",name:"Delete My Data",description:"Request deletion of your personal data",ndpaSection:"Section 34(1)(d), Section 34(2)",estimatedCompletionTime:30,requiresAdditionalInfo:false},{id:"portability",name:"Export My Data",description:"Receive your data in a portable format",ndpaSection:"Section 38",estimatedCompletionTime:30,requiresAdditionalInfo:false},{id:"restrict",name:"Restrict Processing",description:"Request restriction of data processing",ndpaSection:"Section 34(1)(e)",estimatedCompletionTime:30,requiresAdditionalInfo:false},{id:"object",name:"Object to Processing",description:"Object to processing of your personal data",ndpaSection:"Section 36",estimatedCompletionTime:30,requiresAdditionalInfo:false},{id:"withdraw_consent",name:"Withdraw My Consent",description:"Withdraw consent previously given for processing",ndpaSection:"Section 35",estimatedCompletionTime:30,requiresAdditionalInfo:false}],k=({requestTypes:d=L,adapter:t,classNames:p,unstyled:l,onSubmit:s=()=>{}})=>jsxRuntime.jsx(chunkW47OSMT6_js.a,{requestTypes:d,onSubmit:a=>{t&&t.save(a),s(a);},classNames:p,unstyled:l});var _=[{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"}],U=({categories:d=_,adapter:t,classNames:p,unstyled:l,onSubmit:s=()=>{}})=>jsxRuntime.jsx(chunkS6COXIZA_js.a,{categories:d,onSubmit:a=>{t&&t.save(a),s(a);},classNames:p,unstyled:l});var E=d=>jsxRuntime.jsx(chunkI2LMQWK3_js.a,chunkRFPLZDIO_js.a({},d));var Y=[{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"}]}]}],z=({sections:d=Y,adapter:t,classNames:p,unstyled:l,onComplete:s=()=>{}})=>{let[c,a]=react.useState({}),[u,P]=react.useState(0),f=(i,T)=>{a(B=>chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},B),{[i]:T}));},e=()=>{u<d.length-1?P(i=>i+1):(t&&t.save(c),s(c));},r=()=>{u>0&&P(i=>i-1);},o=Math.round((u+1)/d.length*100);return jsxRuntime.jsx(chunkWDDCKYWA_js.a,{sections:d,answers:c,onAnswerChange:f,currentSectionIndex:u,onNextSection:e,onPrevSection:r,progress:o,classNames:p,unstyled:l})};var V=({initialActivities:d=[],adapter:t,classNames:p,unstyled:l})=>{let[s,c]=react.useState(()=>{if(t){let e=t.load();if(e&&!(e instanceof Promise))return e}return d}),a=e=>{t&&t.save(e);};return jsxRuntime.jsx(chunkPZRQWPWD_js.a,{activities:s,onAddActivity:e=>{let r=Date.now(),o=chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},e),{id:`activity-${r}`,createdAt:r,updatedAt:r}),i=[...s,o];c(i),a(i);},onUpdateActivity:(e,r)=>{let o=s.map(i=>i.id===e?chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a(chunkRFPLZDIO_js.a({},i),r),{updatedAt:Date.now()}):i);c(o),a(o);},onArchiveActivity:e=>{let r=s.map(o=>o.id===e?chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},o),{status:"inactive",updatedAt:Date.now()}):o);c(r),a(r);},classNames:p,unstyled:l})};var G=({initialTransfers:d=[],adapter:t,classNames:p,unstyled:l})=>{let[s,c]=react.useState(()=>{if(t){let e=t.load();if(e&&!(e instanceof Promise))return e}return d}),a=e=>{t&&t.save(e);};return jsxRuntime.jsx(chunkI3Y4LOSL_js.a,{transfers:s,onAddTransfer:e=>{let r=Date.now(),o=chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},e),{id:`transfer-${r}`,createdAt:r,updatedAt:r}),i=[...s,o];c(i),a(i);},onUpdateTransfer:(e,r)=>{let o=s.map(i=>i.id===e?chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a(chunkRFPLZDIO_js.a({},i),r),{updatedAt:Date.now()}):i);c(o),a(o);},onRemoveTransfer:e=>{let r=s.filter(o=>o.id!==e);c(r),a(r);},classNames:p,unstyled:l})};var Z={id:"ndpr-ropa-default",organizationName:"Your Organisation",organizationContact:"",organizationAddress:"",records:[],lastUpdated:Date.now(),version:"1.0"},ee=({initialData:d,adapter:t,classNames:p,unstyled:l})=>{let[s,c]=react.useState(d!=null?d:Z);react.useEffect(()=>{if(!t)return;let e=false;return chunkRFPLZDIO_js.d(null,null,function*(){let o=yield t.load();!e&&o&&c(o);}),()=>{e=true;}},[t]);let a=e=>{t&&t.save(e);};return jsxRuntime.jsx(chunk5GVMKUMP_js.a,{ropa:s,onAddRecord:e=>{let r=chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},s),{records:[...s.records,e],lastUpdated:Date.now()});c(r),a(r);},onUpdateRecord:(e,r)=>{let o=chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},s),{records:s.records.map(i=>i.id===e?chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a(chunkRFPLZDIO_js.a({},i),r),{updatedAt:Date.now()}):i),lastUpdated:Date.now()});c(o),a(o);},onArchiveRecord:e=>{let r=chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},s),{records:s.records.map(o=>o.id===e?chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},o),{status:"archived",updatedAt:Date.now()}):o),lastUpdated:Date.now()});c(r),a(r);},classNames:p,unstyled:l})};var re=p=>{var l=p,{input:d}=l,t=chunkRFPLZDIO_js.c(l,["input"]);let s=chunkQPRYXVH2_js.a(d);return jsxRuntime.jsx(chunkNUWVPRNI_js.a,chunkRFPLZDIO_js.a({report:s},t))};exports.NDPRBreachReport=U;exports.NDPRComplianceDashboard=re;exports.NDPRConsent=I;exports.NDPRCrossBorder=G;exports.NDPRDPIA=z;exports.NDPRLawfulBasis=V;exports.NDPRPrivacyPolicy=E;exports.NDPRROPA=ee;exports.NDPRSubjectRights=k;
|
package/dist/presets.mjs
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {a as a$3}from'./chunk-ID2NYIVE.mjs';import {a as a$a}from'./chunk-RRVKUCFR.mjs';import {a as a$6}from'./chunk-CISJAQ6W.mjs';import {a as a$7}from'./chunk-SYMQJO2W.mjs';import {a as a$8}from'./chunk-QSVVAZVT.mjs';import'./chunk-F5TXUA4O.mjs';import'./chunk-JFFOPHU3.mjs';import'./chunk-I557S566.mjs';import {a as a$9}from'./chunk-ABDB7LEV.mjs';import'./chunk-GRLIPT5V.mjs';import'./chunk-TXBZPCGF.mjs';import'./chunk-75TJPK2N.mjs';import'./chunk-SHMJNRHO.mjs';import {a}from'./chunk-GN5C32JB.mjs';import {a as a$1}from'./chunk-6HZL2WDU.mjs';import {a as a$5}from'./chunk-LJNNPAFU.mjs';import {a as a$2}from'./chunk-KF3EFJEF.mjs';import'./chunk-GKKAK6ES.mjs';import'./chunk-AYKLAEOU.mjs';import'./chunk-6WIP33TW.mjs';import {a as a$4,b,d,c}from'./chunk-WWT2ZSNU.mjs';import {jsx}from'react/jsx-runtime';import {useState,useEffect}from'react';var q=[{id:"essential",label:"Essential Cookies",description:"Required for basic site functionality. Cannot be disabled.",required:true,purpose:"Site operation"},{id:"analytics",label:"Analytics",description:"Help us understand how visitors use our site to improve the experience.",required:false,purpose:"Usage analytics"},{id:"marketing",label:"Marketing",description:"Used to deliver relevant advertisements and track campaign effectiveness.",required:false,purpose:"Targeted advertising"},{id:"preferences",label:"Preferences",description:"Remember your settings and preferences for a personalised experience.",required:false,purpose:"Personalisation"}],O=({extraOptions:d=[],options:t,adapter:p,position:l="bottom",classNames:s,unstyled:c,onSave:a$1})=>{let u=t!=null?t:[...q,...d];return jsx(a,{options:u,onSave:f=>{p&&p.save(f),a$1==null||a$1(f);},position:l,classNames:s,unstyled:c,manageStorage:!p})};var I=[{id:"access",name:"Access My Data",description:"Request a copy of your personal data held by us",ndpaSection:"Section 30",estimatedCompletionTime:30,requiresAdditionalInfo:false},{id:"rectification",name:"Correct My Data",description:"Request corrections to inaccurate personal data",ndpaSection:"Section 31",estimatedCompletionTime:30,requiresAdditionalInfo:true,additionalFields:[{id:"correction_details",label:"What data needs to be corrected?",type:"textarea",required:true,placeholder:"Please describe the inaccurate data and what the correct information should be"}]},{id:"erasure",name:"Delete My Data",description:"Request deletion of your personal data",ndpaSection:"Section 32",estimatedCompletionTime:30,requiresAdditionalInfo:false},{id:"portability",name:"Export My Data",description:"Receive your data in a portable format",ndpaSection:"Section 34",estimatedCompletionTime:30,requiresAdditionalInfo:false},{id:"restrict",name:"Restrict Processing",description:"Request restriction of data processing",ndpaSection:"Section 33",estimatedCompletionTime:30,requiresAdditionalInfo:false},{id:"object",name:"Object to Processing",description:"Object to processing of your personal data",ndpaSection:"Section 35",estimatedCompletionTime:30,requiresAdditionalInfo:false}],k=({requestTypes:d=I,adapter:t,classNames:p,unstyled:l,onSubmit:s=()=>{}})=>jsx(a$1,{requestTypes:d,onSubmit:a=>{t&&t.save(a),s(a);},classNames:p,unstyled:l});var _=[{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"}],U=({categories:d=_,adapter:t,classNames:p,unstyled:l,onSubmit:s=()=>{}})=>jsx(a$2,{categories:d,onSubmit:a=>{t&&t.save(a),s(a);},classNames:p,unstyled:l});var E=d=>jsx(a$3,a$4({},d));var Y=[{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"}]}]}],z=({sections:d=Y,adapter:t,classNames:p,unstyled:l,onComplete:s=()=>{}})=>{let[c,a]=useState({}),[u,y]=useState(0),f=(i,T)=>{a(B=>b(a$4({},B),{[i]:T}));},e=()=>{u<d.length-1?y(i=>i+1):(t&&t.save(c),s(c));},r=()=>{u>0&&y(i=>i-1);},o=Math.round((u+1)/d.length*100);return jsx(a$5,{sections:d,answers:c,onAnswerChange:f,currentSectionIndex:u,onNextSection:e,onPrevSection:r,progress:o,classNames:p,unstyled:l})};var H=({initialActivities:d=[],adapter:t,classNames:p,unstyled:l})=>{let[s,c]=useState(()=>{if(t){let e=t.load();if(e&&!(e instanceof Promise))return e}return d}),a=e=>{t&&t.save(e);};return jsx(a$6,{activities:s,onAddActivity:e=>{let r=Date.now(),o=b(a$4({},e),{id:`activity-${r}`,createdAt:r,updatedAt:r}),i=[...s,o];c(i),a(i);},onUpdateActivity:(e,r)=>{let o=s.map(i=>i.id===e?b(a$4(a$4({},i),r),{updatedAt:Date.now()}):i);c(o),a(o);},onArchiveActivity:e=>{let r=s.map(o=>o.id===e?b(a$4({},o),{status:"inactive",updatedAt:Date.now()}):o);c(r),a(r);},classNames:p,unstyled:l})};var V=({initialTransfers:d=[],adapter:t,classNames:p,unstyled:l})=>{let[s,c]=useState(()=>{if(t){let e=t.load();if(e&&!(e instanceof Promise))return e}return d}),a=e=>{t&&t.save(e);};return jsx(a$7,{transfers:s,onAddTransfer:e=>{let r=Date.now(),o=b(a$4({},e),{id:`transfer-${r}`,createdAt:r,updatedAt:r}),i=[...s,o];c(i),a(i);},onUpdateTransfer:(e,r)=>{let o=s.map(i=>i.id===e?b(a$4(a$4({},i),r),{updatedAt:Date.now()}):i);c(o),a(o);},onRemoveTransfer:e=>{let r=s.filter(o=>o.id!==e);c(r),a(r);},classNames:p,unstyled:l})};var Z={id:"ndpr-ropa-default",organizationName:"Your Organisation",organizationContact:"",organizationAddress:"",records:[],lastUpdated:Date.now(),version:"1.0"},ee=({initialData:d$1,adapter:t,classNames:p,unstyled:l})=>{let[s,c]=useState(d$1!=null?d$1:Z);useEffect(()=>{if(!t)return;let e=false;return d(null,null,function*(){let o=yield t.load();!e&&o&&c(o);}),()=>{e=true;}},[t]);let a=e=>{t&&t.save(e);};return jsx(a$8,{ropa:s,onAddRecord:e=>{let r=b(a$4({},s),{records:[...s.records,e],lastUpdated:Date.now()});c(r),a(r);},onUpdateRecord:(e,r)=>{let o=b(a$4({},s),{records:s.records.map(i=>i.id===e?b(a$4(a$4({},i),r),{updatedAt:Date.now()}):i),lastUpdated:Date.now()});c(o),a(o);},onArchiveRecord:e=>{let r=b(a$4({},s),{records:s.records.map(o=>o.id===e?b(a$4({},o),{status:"archived",updatedAt:Date.now()}):o),lastUpdated:Date.now()});c(r),a(r);},classNames:p,unstyled:l})};var re=p=>{var l=p,{input:d}=l,t=c(l,["input"]);let s=a$9(d);return jsx(a$a,a$4({report:s},t))};export{U as NDPRBreachReport,re as NDPRComplianceDashboard,O as NDPRConsent,V as NDPRCrossBorder,z as NDPRDPIA,H as NDPRLawfulBasis,E as NDPRPrivacyPolicy,ee as NDPRROPA,k as NDPRSubjectRights};//# sourceMappingURL=presets.mjs.map
|
|
3
|
-
//# sourceMappingURL=presets.mjs.map
|
|
2
|
+
import {a as a$3}from'./chunk-BNHQFZHL.mjs';import {a as a$a}from'./chunk-ZIZL37BG.mjs';import {a as a$6}from'./chunk-COD3RMTL.mjs';import {a as a$7}from'./chunk-GTYXVAJX.mjs';import {a as a$8}from'./chunk-EXEXUAF6.mjs';import'./chunk-O6CUBNXK.mjs';import'./chunk-AOHKVFAS.mjs';import {a as a$9}from'./chunk-EFIBHKQE.mjs';import'./chunk-RMQ7OLNY.mjs';import'./chunk-LWIKDDSU.mjs';import'./chunk-7BJXI2HI.mjs';import'./chunk-XP5PL6K7.mjs';import {a}from'./chunk-BFAX7JQA.mjs';import'./chunk-YTU4FNM2.mjs';import {a as a$1}from'./chunk-XJO4DH3L.mjs';import {a as a$5}from'./chunk-ZQZJNKVB.mjs';import {a as a$2}from'./chunk-ZHFLBL63.mjs';import'./chunk-EWVK45Z3.mjs';import'./chunk-ITCY2Z66.mjs';import'./chunk-SFGW37LE.mjs';import'./chunk-DBZSN4WP.mjs';import {a as a$4,b,d,c}from'./chunk-ZJYULEER.mjs';import {jsx}from'react/jsx-runtime';import {useState,useEffect}from'react';var q=[{id:"essential",label:"Essential Cookies",description:"Required for basic site functionality. Cannot be disabled.",required:true,purpose:"Site operation"},{id:"analytics",label:"Analytics",description:"Help us understand how visitors use our site to improve the experience.",required:false,purpose:"Usage analytics"},{id:"marketing",label:"Marketing",description:"Used to deliver relevant advertisements and track campaign effectiveness.",required:false,purpose:"Targeted advertising"},{id:"preferences",label:"Preferences",description:"Remember your settings and preferences for a personalised experience.",required:false,purpose:"Personalisation"}],I=({extraOptions:d=[],options:t,adapter:p,position:l="bottom",classNames:s,unstyled:c,onSave:a$1})=>{let u=t!=null?t:[...q,...d];return jsx(a,{options:u,onSave:f=>{p&&p.save(f),a$1==null||a$1(f);},position:l,classNames:s,unstyled:c,manageStorage:!p})};var L=[{id:"access",name:"Access My Data",description:"Request a copy of your personal data held by us",ndpaSection:"Section 34(1)(a)\u2013(b)",estimatedCompletionTime:30,requiresAdditionalInfo:false},{id:"rectification",name:"Correct My Data",description:"Request corrections to inaccurate personal data",ndpaSection:"Section 34(1)(c)",estimatedCompletionTime:30,requiresAdditionalInfo:true,additionalFields:[{id:"correction_details",label:"What data needs to be corrected?",type:"textarea",required:true,placeholder:"Please describe the inaccurate data and what the correct information should be"}]},{id:"erasure",name:"Delete My Data",description:"Request deletion of your personal data",ndpaSection:"Section 34(1)(d), Section 34(2)",estimatedCompletionTime:30,requiresAdditionalInfo:false},{id:"portability",name:"Export My Data",description:"Receive your data in a portable format",ndpaSection:"Section 38",estimatedCompletionTime:30,requiresAdditionalInfo:false},{id:"restrict",name:"Restrict Processing",description:"Request restriction of data processing",ndpaSection:"Section 34(1)(e)",estimatedCompletionTime:30,requiresAdditionalInfo:false},{id:"object",name:"Object to Processing",description:"Object to processing of your personal data",ndpaSection:"Section 36",estimatedCompletionTime:30,requiresAdditionalInfo:false},{id:"withdraw_consent",name:"Withdraw My Consent",description:"Withdraw consent previously given for processing",ndpaSection:"Section 35",estimatedCompletionTime:30,requiresAdditionalInfo:false}],k=({requestTypes:d=L,adapter:t,classNames:p,unstyled:l,onSubmit:s=()=>{}})=>jsx(a$1,{requestTypes:d,onSubmit:a=>{t&&t.save(a),s(a);},classNames:p,unstyled:l});var _=[{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"}],U=({categories:d=_,adapter:t,classNames:p,unstyled:l,onSubmit:s=()=>{}})=>jsx(a$2,{categories:d,onSubmit:a=>{t&&t.save(a),s(a);},classNames:p,unstyled:l});var E=d=>jsx(a$3,a$4({},d));var Y=[{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"}]}]}],z=({sections:d=Y,adapter:t,classNames:p,unstyled:l,onComplete:s=()=>{}})=>{let[c,a]=useState({}),[u,P]=useState(0),f=(i,T)=>{a(B=>b(a$4({},B),{[i]:T}));},e=()=>{u<d.length-1?P(i=>i+1):(t&&t.save(c),s(c));},r=()=>{u>0&&P(i=>i-1);},o=Math.round((u+1)/d.length*100);return jsx(a$5,{sections:d,answers:c,onAnswerChange:f,currentSectionIndex:u,onNextSection:e,onPrevSection:r,progress:o,classNames:p,unstyled:l})};var V=({initialActivities:d=[],adapter:t,classNames:p,unstyled:l})=>{let[s,c]=useState(()=>{if(t){let e=t.load();if(e&&!(e instanceof Promise))return e}return d}),a=e=>{t&&t.save(e);};return jsx(a$6,{activities:s,onAddActivity:e=>{let r=Date.now(),o=b(a$4({},e),{id:`activity-${r}`,createdAt:r,updatedAt:r}),i=[...s,o];c(i),a(i);},onUpdateActivity:(e,r)=>{let o=s.map(i=>i.id===e?b(a$4(a$4({},i),r),{updatedAt:Date.now()}):i);c(o),a(o);},onArchiveActivity:e=>{let r=s.map(o=>o.id===e?b(a$4({},o),{status:"inactive",updatedAt:Date.now()}):o);c(r),a(r);},classNames:p,unstyled:l})};var G=({initialTransfers:d=[],adapter:t,classNames:p,unstyled:l})=>{let[s,c]=useState(()=>{if(t){let e=t.load();if(e&&!(e instanceof Promise))return e}return d}),a=e=>{t&&t.save(e);};return jsx(a$7,{transfers:s,onAddTransfer:e=>{let r=Date.now(),o=b(a$4({},e),{id:`transfer-${r}`,createdAt:r,updatedAt:r}),i=[...s,o];c(i),a(i);},onUpdateTransfer:(e,r)=>{let o=s.map(i=>i.id===e?b(a$4(a$4({},i),r),{updatedAt:Date.now()}):i);c(o),a(o);},onRemoveTransfer:e=>{let r=s.filter(o=>o.id!==e);c(r),a(r);},classNames:p,unstyled:l})};var Z={id:"ndpr-ropa-default",organizationName:"Your Organisation",organizationContact:"",organizationAddress:"",records:[],lastUpdated:Date.now(),version:"1.0"},ee=({initialData:d$1,adapter:t,classNames:p,unstyled:l})=>{let[s,c]=useState(d$1!=null?d$1:Z);useEffect(()=>{if(!t)return;let e=false;return d(null,null,function*(){let o=yield t.load();!e&&o&&c(o);}),()=>{e=true;}},[t]);let a=e=>{t&&t.save(e);};return jsx(a$8,{ropa:s,onAddRecord:e=>{let r=b(a$4({},s),{records:[...s.records,e],lastUpdated:Date.now()});c(r),a(r);},onUpdateRecord:(e,r)=>{let o=b(a$4({},s),{records:s.records.map(i=>i.id===e?b(a$4(a$4({},i),r),{updatedAt:Date.now()}):i),lastUpdated:Date.now()});c(o),a(o);},onArchiveRecord:e=>{let r=b(a$4({},s),{records:s.records.map(o=>o.id===e?b(a$4({},o),{status:"archived",updatedAt:Date.now()}):o),lastUpdated:Date.now()});c(r),a(r);},classNames:p,unstyled:l})};var re=p=>{var l=p,{input:d}=l,t=c(l,["input"]);let s=a$9(d);return jsx(a$a,a$4({report:s},t))};export{U as NDPRBreachReport,re as NDPRComplianceDashboard,I as NDPRConsent,G as NDPRCrossBorder,z as NDPRDPIA,V as NDPRLawfulBasis,E as NDPRPrivacyPolicy,ee as NDPRROPA,k as NDPRSubjectRights};
|
package/dist/ropa.js
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
'use strict';var
|
|
3
|
-
//# sourceMappingURL=ropa.js.map
|
|
2
|
+
'use strict';var chunk5GVMKUMP_js=require('./chunk-5GVMKUMP.js'),chunk3JPDTXGC_js=require('./chunk-3JPDTXGC.js'),chunk4CVBQC66_js=require('./chunk-4CVBQC66.js');require('./chunk-AME4HJR4.js'),require('./chunk-RFPLZDIO.js');var react=require('react'),jsxRuntime=require('react/jsx-runtime');var t=react.createContext(null);function u(){let r=react.useContext(t);if(!r)throw new Error("ROPA compound components must be wrapped in <ROPA.Provider>. Example: <ROPA.Provider initialData={...}><ROPA.Manager /></ROPA.Provider>");return r}var p=({initialData:r,adapter:i,onRecordAdd:P,onRecordUpdate:n,onRecordArchive:a,children:s})=>{let R=chunk3JPDTXGC_js.a({initialData:r,adapter:i,onRecordAdd:P,onRecordUpdate:n,onRecordArchive:a});return jsxRuntime.jsx(t.Provider,{value:R,children:s})};var v={Provider:p,Manager:chunk5GVMKUMP_js.a};Object.defineProperty(exports,"ROPAManager",{enumerable:true,get:function(){return chunk5GVMKUMP_js.a}});Object.defineProperty(exports,"useROPA",{enumerable:true,get:function(){return chunk3JPDTXGC_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}});exports.ROPA=v;exports.ROPAProvider=p;exports.useROPACompound=u;
|
package/dist/ropa.mjs
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {a}from'./chunk-
|
|
3
|
-
//# sourceMappingURL=ropa.mjs.map
|
|
2
|
+
import {a}from'./chunk-EXEXUAF6.mjs';export{a as ROPAManager}from'./chunk-EXEXUAF6.mjs';import {a as a$1}from'./chunk-RPXRPGHL.mjs';export{a as useROPA}from'./chunk-RPXRPGHL.mjs';export{c as exportROPAToCSV,b as generateROPASummary,d as identifyComplianceGaps,a as validateProcessingRecord}from'./chunk-XP5PL6K7.mjs';import'./chunk-SFGW37LE.mjs';import'./chunk-ZJYULEER.mjs';import {createContext,useContext}from'react';import {jsx}from'react/jsx-runtime';var t=createContext(null);function u(){let r=useContext(t);if(!r)throw new Error("ROPA compound components must be wrapped in <ROPA.Provider>. Example: <ROPA.Provider initialData={...}><ROPA.Manager /></ROPA.Provider>");return r}var p=({initialData:r,adapter:i,onRecordAdd:P,onRecordUpdate:n,onRecordArchive:a,children:s})=>{let R=a$1({initialData:r,adapter:i,onRecordAdd:P,onRecordUpdate:n,onRecordArchive:a});return jsx(t.Provider,{value:R,children:s})};var v={Provider:p,Manager:a};export{v as ROPA,p as ROPAProvider,u as useROPACompound};
|
package/dist/server.d.mts
CHANGED
|
@@ -139,10 +139,51 @@ export declare interface BreachReport {
|
|
|
139
139
|
affectedSystems: string[];
|
|
140
140
|
/** Types of data involved in the breach */
|
|
141
141
|
dataTypes: string[];
|
|
142
|
-
/** Whether sensitive personal data is involved (NDPA Section
|
|
142
|
+
/** Whether sensitive personal data is involved (NDPA Section 30) */
|
|
143
143
|
involvesSensitiveData?: boolean;
|
|
144
144
|
/** Estimated number of data subjects affected */
|
|
145
145
|
estimatedAffectedSubjects?: number;
|
|
146
|
+
/**
|
|
147
|
+
* Approximate number of personal data RECORDS concerned (distinct from subject count).
|
|
148
|
+
* Required content under NDPA Section 40(1)(a) and Section 40(2).
|
|
149
|
+
*/
|
|
150
|
+
approximateRecordCount?: number;
|
|
151
|
+
/**
|
|
152
|
+
* Categories of data subjects affected (e.g. customers, employees, minors, patients).
|
|
153
|
+
* Required content under NDPA Section 40(1)(a) and Section 40(2).
|
|
154
|
+
*/
|
|
155
|
+
dataSubjectCategories?: string[];
|
|
156
|
+
/**
|
|
157
|
+
* Likely consequences of the breach for affected data subjects (e.g. identity theft,
|
|
158
|
+
* financial loss, reputational damage). Reported to the NDPC and, where applicable,
|
|
159
|
+
* communicated to data subjects under Section 40(3).
|
|
160
|
+
*/
|
|
161
|
+
likelyConsequences?: string;
|
|
162
|
+
/**
|
|
163
|
+
* Measures taken or proposed to mitigate adverse effects of the breach.
|
|
164
|
+
* Required content for Section 40(3) communications to data subjects.
|
|
165
|
+
*/
|
|
166
|
+
mitigationMeasures?: string;
|
|
167
|
+
/**
|
|
168
|
+
* Whether this is a phased / interim report submitted before full investigation
|
|
169
|
+
* is complete. The NDPC permits phased reporting where complete information is
|
|
170
|
+
* not available within 72 hours.
|
|
171
|
+
*/
|
|
172
|
+
isPhasedReport?: boolean;
|
|
173
|
+
/**
|
|
174
|
+
* ID of the prior phased report this report supplements, if any.
|
|
175
|
+
*/
|
|
176
|
+
supplementsReportId?: string;
|
|
177
|
+
/**
|
|
178
|
+
* Data Protection Officer contact details. The DPO is the named contact point
|
|
179
|
+
* for the NDPC per NDPA Section 32(3)(c). Required content in the regulatory
|
|
180
|
+
* report (Section 40(2)).
|
|
181
|
+
*/
|
|
182
|
+
dpoContact?: {
|
|
183
|
+
name: string;
|
|
184
|
+
email: string;
|
|
185
|
+
phone?: string;
|
|
186
|
+
};
|
|
146
187
|
/** Whether the breach is ongoing or contained */
|
|
147
188
|
status: 'ongoing' | 'contained' | 'resolved';
|
|
148
189
|
/** Initial actions taken to address the breach */
|
|
@@ -823,20 +864,25 @@ export declare interface DsrSubmissionValidationResult {
|
|
|
823
864
|
}
|
|
824
865
|
|
|
825
866
|
/**
|
|
826
|
-
* Data Subject Rights types aligned with NDPA 2023 Part
|
|
867
|
+
* Data Subject Rights types aligned with NDPA 2023 Part VI (Sections 34-38)
|
|
868
|
+
* and the related provisions in Part V (Section 27 — information to the data subject)
|
|
869
|
+
* and Part X (Section 46 — complaint to the Commission).
|
|
870
|
+
*
|
|
871
|
+
* Note: These are guidance labels — not legal advice. Verify with your DPO or counsel.
|
|
827
872
|
*/
|
|
828
873
|
/**
|
|
829
|
-
* Types of data subject requests per NDPA Part
|
|
830
|
-
* - 'information': Right to be informed (Section
|
|
831
|
-
* - 'access': Right of access (Section
|
|
832
|
-
* - 'rectification': Right to rectification (Section
|
|
833
|
-
* - 'erasure': Right to erasure (Section
|
|
834
|
-
* - 'restriction': Right to restrict processing (Section
|
|
835
|
-
* - 'portability': Right to data portability (Section
|
|
836
|
-
* - 'objection': Right to object (Section
|
|
837
|
-
* - 'automated_decision_making': Rights
|
|
874
|
+
* Types of data subject requests per NDPA Part VI
|
|
875
|
+
* - 'information': Right to be informed (Section 27 — provision of information; Section 34(1)(a))
|
|
876
|
+
* - 'access': Right of access / confirmation + data copy (Section 34(1)(a)–(b))
|
|
877
|
+
* - 'rectification': Right to rectification (Section 34(1)(c))
|
|
878
|
+
* - 'erasure': Right to erasure (Section 34(1)(d), Section 34(2))
|
|
879
|
+
* - 'restriction': Right to restrict processing (Section 34(1)(e))
|
|
880
|
+
* - 'portability': Right to data portability (Section 38)
|
|
881
|
+
* - 'objection': Right to object (Section 36)
|
|
882
|
+
* - 'automated_decision_making': Rights re. automated decisions / profiling (Section 37)
|
|
883
|
+
* - 'withdraw_consent': Right to withdraw consent (Section 35)
|
|
838
884
|
*/
|
|
839
|
-
export declare type DSRType = 'information' | 'access' | 'rectification' | 'erasure' | 'restriction' | 'portability' | 'objection' | 'automated_decision_making';
|
|
885
|
+
export declare type DSRType = 'information' | 'access' | 'rectification' | 'erasure' | 'restriction' | 'portability' | 'objection' | 'automated_decision_making' | 'withdraw_consent';
|
|
840
886
|
|
|
841
887
|
export declare type EffortLevel = 'low' | 'medium' | 'high';
|
|
842
888
|
|
|
@@ -1100,11 +1146,13 @@ export declare type Industry = 'fintech' | 'healthcare' | 'ecommerce' | 'saas' |
|
|
|
1100
1146
|
|
|
1101
1147
|
/**
|
|
1102
1148
|
* Returns whether NDPC approval is required for a given transfer mechanism.
|
|
1103
|
-
*
|
|
1104
|
-
*
|
|
1149
|
+
* Under NDPA Section 42(5), the Commission may approve binding corporate rules,
|
|
1150
|
+
* codes of conduct, certification mechanisms, or similar instruments. Standard
|
|
1151
|
+
* contractual clauses are one of the appropriate safeguards under Section 41(1)(a)
|
|
1152
|
+
* and the Commission may approve them per Section 42(4).
|
|
1105
1153
|
*
|
|
1106
1154
|
* @param mechanism The transfer mechanism
|
|
1107
|
-
* @returns Whether NDPC approval is required
|
|
1155
|
+
* @returns Whether NDPC approval is typically required
|
|
1108
1156
|
*/
|
|
1109
1157
|
export declare function isNDPCApprovalRequired(mechanism: TransferMechanism): boolean;
|
|
1110
1158
|
|
|
@@ -1162,6 +1210,23 @@ export declare interface LawfulBasisValidationResult {
|
|
|
1162
1210
|
warnings: string[];
|
|
1163
1211
|
}
|
|
1164
1212
|
|
|
1213
|
+
/**
|
|
1214
|
+
* Full disclaimer suitable for PDF/DOCX footers and exported artifacts.
|
|
1215
|
+
*/
|
|
1216
|
+
export declare const LEGAL_DISCLAIMER_LONG: string;
|
|
1217
|
+
|
|
1218
|
+
/**
|
|
1219
|
+
* Short disclaimer suitable for component captions and dashboard footers.
|
|
1220
|
+
* One line, no markdown.
|
|
1221
|
+
*/
|
|
1222
|
+
export declare const LEGAL_DISCLAIMER_SHORT = "Generated for guidance only. Not legal advice \u2014 verify with your DPO or counsel.";
|
|
1223
|
+
|
|
1224
|
+
/**
|
|
1225
|
+
* Returns the long disclaimer wrapped with a leading heading suitable for
|
|
1226
|
+
* embedding at the foot of an exported document.
|
|
1227
|
+
*/
|
|
1228
|
+
export declare function legalDisclaimerBlock(heading?: string): string;
|
|
1229
|
+
|
|
1165
1230
|
/**
|
|
1166
1231
|
* Represents a Legitimate Interest Assessment (LIA)
|
|
1167
1232
|
* Required when the lawful basis is 'legitimate_interests'
|
|
@@ -1770,7 +1835,9 @@ export declare interface RequestType {
|
|
|
1770
1835
|
/** Description of what this request type entails */
|
|
1771
1836
|
description: string;
|
|
1772
1837
|
/**
|
|
1773
|
-
* NDPA section reference
|
|
1838
|
+
* NDPA 2023 section reference for this right
|
|
1839
|
+
* (e.g., "Section 34(1)(a)" for access, "Section 38" for portability).
|
|
1840
|
+
* Used for display purposes only — verify the exact subsection with counsel.
|
|
1774
1841
|
*/
|
|
1775
1842
|
ndpaSection?: string;
|
|
1776
1843
|
/**
|
|
@@ -1978,8 +2045,11 @@ export declare interface TransferImpactAssessment {
|
|
|
1978
2045
|
}
|
|
1979
2046
|
|
|
1980
2047
|
/**
|
|
1981
|
-
* Cross-Border Data Transfer types aligned with NDPA 2023 Part
|
|
1982
|
-
* Personal data may only be transferred outside Nigeria under
|
|
2048
|
+
* Cross-Border Data Transfer types aligned with NDPA 2023 Part VIII (Sections 41-43).
|
|
2049
|
+
* Personal data may only be transferred outside Nigeria under the bases listed in
|
|
2050
|
+
* Section 41(1), where Section 42 defines adequacy and Section 43 lists derogations.
|
|
2051
|
+
*
|
|
2052
|
+
* Note: These are guidance labels — not legal advice. Verify with your DPO or counsel.
|
|
1983
2053
|
*/
|
|
1984
2054
|
/**
|
|
1985
2055
|
* Transfer mechanisms recognized under the NDPA
|
|
@@ -2090,7 +2160,7 @@ export declare interface ValidateDsrSubmissionOptions {
|
|
|
2090
2160
|
/**
|
|
2091
2161
|
* Allowed request types. When provided, the payload's `requestType`
|
|
2092
2162
|
* must be one of these — useful for locking the server to a specific
|
|
2093
|
-
* set of supported NDPA Part
|
|
2163
|
+
* set of supported NDPA Part VI §34-38 (plus §35, §36, §37) data-subject rights.
|
|
2094
2164
|
*/
|
|
2095
2165
|
allowedRequestTypes?: string[];
|
|
2096
2166
|
}
|