@tantainnovative/ndpr-toolkit 3.13.0 → 4.0.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/dist/index.d.ts CHANGED
@@ -476,16 +476,11 @@ export declare interface BreachReportFormProps {
476
476
  */
477
477
  title?: string;
478
478
  /**
479
- * Description text displayed on the form. Canonical name in 3.13+.
480
- * Takes precedence over `formDescription` if both are set.
479
+ * Description text displayed on the form.
480
+ *
481
481
  * @default "Use this form to report a suspected or confirmed data breach in accordance with NDPA Section 40. All fields marked with * are required."
482
482
  */
483
483
  description?: string;
484
- /**
485
- * @deprecated Renamed to `description`. Will be removed in 4.0.
486
- * If both are set, `description` wins.
487
- */
488
- formDescription?: string;
489
484
  /**
490
485
  * Text for the submit button
491
486
  * @default "Submit Report"
@@ -4882,9 +4877,18 @@ declare interface UseDSROptions {
4882
4877
  */
4883
4878
  storageKey?: string;
4884
4879
  /**
4885
- * Whether to use local storage to persist requests
4886
- * @default true
4887
- * @deprecated Use adapter instead
4880
+ * Whether to use local storage to persist requests.
4881
+ *
4882
+ * **Changed in 4.0:** the default is now `false`. `useDSR` is the admin
4883
+ * tracker hook and its state contains data subjects' PII; the previous
4884
+ * default (true) stored that PII in the admin's browser localStorage,
4885
+ * which is rarely appropriate. Opt in by passing `useLocalStorage: true`
4886
+ * if you specifically want the old behaviour.
4887
+ *
4888
+ * For production deployments, pass an explicit `adapter` instead.
4889
+ *
4890
+ * @default false (as of 4.0; was `true` in 3.x)
4891
+ * @deprecated Pass an explicit `adapter` instead of toggling this flag.
4888
4892
  */
4889
4893
  useLocalStorage?: boolean;
4890
4894
  /**
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- 'use strict';var chunkNUWVPRNI_js=require('./chunk-NUWVPRNI.js'),chunk3I6FYA5C_js=require('./chunk-3I6FYA5C.js'),chunkQGUOFGVJ_js=require('./chunk-QGUOFGVJ.js'),chunk3SIYRGJF_js=require('./chunk-3SIYRGJF.js'),chunk7FXNGGMO_js=require('./chunk-7FXNGGMO.js'),chunkXYGGUGTO_js=require('./chunk-XYGGUGTO.js'),chunkBL5W472Q_js=require('./chunk-BL5W472Q.js'),chunkFC3PTJFL_js=require('./chunk-FC3PTJFL.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'),chunkO2WEABB3_js=require('./chunk-O2WEABB3.js');require('./chunk-JS7SYL5P.js');var chunkRDALAH3Y_js=require('./chunk-RDALAH3Y.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'),chunk42UJFTII_js=require('./chunk-42UJFTII.js'),chunkZD2W3YU2_js=require('./chunk-ZD2W3YU2.js'),chunk3IA3KDII_js=require('./chunk-3IA3KDII.js'),chunkHOAC5VUF_js=require('./chunk-HOAC5VUF.js'),chunkL2VO3MEJ_js=require('./chunk-L2VO3MEJ.js');require('./chunk-C2KEXHRX.js');var chunkB46SJB5V_js=require('./chunk-B46SJB5V.js'),chunkWMISQDSV_js=require('./chunk-WMISQDSV.js'),chunkUZNWXJ2W_js=require('./chunk-UZNWXJ2W.js'),chunkUXUMYP4L_js=require('./chunk-UXUMYP4L.js'),chunkPXDSPF5B_js=require('./chunk-PXDSPF5B.js'),chunkOZHUINWS_js=require('./chunk-OZHUINWS.js'),chunk37VFK5SR_js=require('./chunk-37VFK5SR.js'),chunkWCTFED27_js=require('./chunk-WCTFED27.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'),chunkYDKWD6MQ_js=require('./chunk-YDKWD6MQ.js');require('./chunk-TTMGFC6C.js'),require('./chunk-VWED6UTN.js'),require('./chunk-RFPLZDIO.js');var react=require('react'),jsxRuntime=require('react/jsx-runtime');var xe=({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 De=({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 chunk3I6FYA5C_js.b}});Object.defineProperty(exports,"BreachRiskAssessment",{enumerable:true,get:function(){return chunk3I6FYA5C_js.a}});Object.defineProperty(exports,"RegulatoryReportGenerator",{enumerable:true,get:function(){return chunk3I6FYA5C_js.c}});Object.defineProperty(exports,"BreachReportForm",{enumerable:true,get:function(){return chunkQGUOFGVJ_js.a}});Object.defineProperty(exports,"PolicyExporter",{enumerable:true,get:function(){return chunk3SIYRGJF_js.c}});Object.defineProperty(exports,"PolicyGenerator",{enumerable:true,get:function(){return chunk3SIYRGJF_js.a}});Object.defineProperty(exports,"PolicyPreview",{enumerable:true,get:function(){return chunk3SIYRGJF_js.b}});Object.defineProperty(exports,"LawfulBasisTracker",{enumerable:true,get:function(){return chunk7FXNGGMO_js.a}});Object.defineProperty(exports,"CrossBorderTransferManager",{enumerable:true,get:function(){return chunkXYGGUGTO_js.a}});Object.defineProperty(exports,"ROPAManager",{enumerable:true,get:function(){return chunkBL5W472Q_js.a}});Object.defineProperty(exports,"useComplianceScore",{enumerable:true,get:function(){return chunkFC3PTJFL_js.a}});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 chunkO2WEABB3_js.a}});Object.defineProperty(exports,"getComplianceScore",{enumerable:true,get:function(){return chunkRDALAH3Y_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 chunk42UJFTII_js.a}});Object.defineProperty(exports,"ConsentBanner",{enumerable:true,get:function(){return chunkZD2W3YU2_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 chunkHOAC5VUF_js.a}});Object.defineProperty(exports,"useFocusTrap",{enumerable:true,get:function(){return chunkL2VO3MEJ_js.a}});Object.defineProperty(exports,"validateConsent",{enumerable:true,get:function(){return chunkB46SJB5V_js.a}});Object.defineProperty(exports,"validateConsentOptions",{enumerable:true,get:function(){return chunkB46SJB5V_js.b}});Object.defineProperty(exports,"DSRDashboard",{enumerable:true,get:function(){return chunkWMISQDSV_js.a}});Object.defineProperty(exports,"DSRTracker",{enumerable:true,get:function(){return chunkWMISQDSV_js.b}});Object.defineProperty(exports,"DSRRequestForm",{enumerable:true,get:function(){return chunkUZNWXJ2W_js.a}});Object.defineProperty(exports,"sanitizeInput",{enumerable:true,get:function(){return chunkUXUMYP4L_js.a}});Object.defineProperty(exports,"useDSR",{enumerable:true,get:function(){return chunkPXDSPF5B_js.a}});Object.defineProperty(exports,"formatDSRRequest",{enumerable:true,get:function(){return chunkOZHUINWS_js.b}});Object.defineProperty(exports,"validateDsrSubmission",{enumerable:true,get:function(){return chunkOZHUINWS_js.a}});Object.defineProperty(exports,"DPIAReport",{enumerable:true,get:function(){return chunk37VFK5SR_js.a}});Object.defineProperty(exports,"StepIndicator",{enumerable:true,get:function(){return chunk37VFK5SR_js.b}});Object.defineProperty(exports,"DPIAQuestionnaire",{enumerable:true,get:function(){return chunkWCTFED27_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 chunkYDKWD6MQ_js.a}});Object.defineProperty(exports,"useNDPRConfig",{enumerable:true,get:function(){return chunkYDKWD6MQ_js.b}});exports.LegalNotice=De;exports.NDPRThemeProvider=xe;
2
+ 'use strict';var chunkNUWVPRNI_js=require('./chunk-NUWVPRNI.js'),chunk3I6FYA5C_js=require('./chunk-3I6FYA5C.js'),chunkD2UWB5OI_js=require('./chunk-D2UWB5OI.js'),chunk3SIYRGJF_js=require('./chunk-3SIYRGJF.js'),chunk7FXNGGMO_js=require('./chunk-7FXNGGMO.js'),chunkXYGGUGTO_js=require('./chunk-XYGGUGTO.js'),chunkBL5W472Q_js=require('./chunk-BL5W472Q.js'),chunkFC3PTJFL_js=require('./chunk-FC3PTJFL.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'),chunkO2WEABB3_js=require('./chunk-O2WEABB3.js');require('./chunk-JS7SYL5P.js');var chunkRDALAH3Y_js=require('./chunk-RDALAH3Y.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'),chunk42UJFTII_js=require('./chunk-42UJFTII.js'),chunkZD2W3YU2_js=require('./chunk-ZD2W3YU2.js'),chunk3IA3KDII_js=require('./chunk-3IA3KDII.js'),chunkHOAC5VUF_js=require('./chunk-HOAC5VUF.js'),chunkL2VO3MEJ_js=require('./chunk-L2VO3MEJ.js');require('./chunk-C2KEXHRX.js');var chunkB46SJB5V_js=require('./chunk-B46SJB5V.js'),chunkWMISQDSV_js=require('./chunk-WMISQDSV.js'),chunkUZNWXJ2W_js=require('./chunk-UZNWXJ2W.js'),chunkUXUMYP4L_js=require('./chunk-UXUMYP4L.js'),chunk5F2IAUWJ_js=require('./chunk-5F2IAUWJ.js'),chunkOZHUINWS_js=require('./chunk-OZHUINWS.js'),chunk37VFK5SR_js=require('./chunk-37VFK5SR.js'),chunkWCTFED27_js=require('./chunk-WCTFED27.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'),chunkYDKWD6MQ_js=require('./chunk-YDKWD6MQ.js');require('./chunk-TTMGFC6C.js'),require('./chunk-VWED6UTN.js'),require('./chunk-RFPLZDIO.js');var react=require('react'),jsxRuntime=require('react/jsx-runtime');var xe=({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 De=({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 chunk3I6FYA5C_js.b}});Object.defineProperty(exports,"BreachRiskAssessment",{enumerable:true,get:function(){return chunk3I6FYA5C_js.a}});Object.defineProperty(exports,"RegulatoryReportGenerator",{enumerable:true,get:function(){return chunk3I6FYA5C_js.c}});Object.defineProperty(exports,"BreachReportForm",{enumerable:true,get:function(){return chunkD2UWB5OI_js.a}});Object.defineProperty(exports,"PolicyExporter",{enumerable:true,get:function(){return chunk3SIYRGJF_js.c}});Object.defineProperty(exports,"PolicyGenerator",{enumerable:true,get:function(){return chunk3SIYRGJF_js.a}});Object.defineProperty(exports,"PolicyPreview",{enumerable:true,get:function(){return chunk3SIYRGJF_js.b}});Object.defineProperty(exports,"LawfulBasisTracker",{enumerable:true,get:function(){return chunk7FXNGGMO_js.a}});Object.defineProperty(exports,"CrossBorderTransferManager",{enumerable:true,get:function(){return chunkXYGGUGTO_js.a}});Object.defineProperty(exports,"ROPAManager",{enumerable:true,get:function(){return chunkBL5W472Q_js.a}});Object.defineProperty(exports,"useComplianceScore",{enumerable:true,get:function(){return chunkFC3PTJFL_js.a}});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 chunkO2WEABB3_js.a}});Object.defineProperty(exports,"getComplianceScore",{enumerable:true,get:function(){return chunkRDALAH3Y_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 chunk42UJFTII_js.a}});Object.defineProperty(exports,"ConsentBanner",{enumerable:true,get:function(){return chunkZD2W3YU2_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 chunkHOAC5VUF_js.a}});Object.defineProperty(exports,"useFocusTrap",{enumerable:true,get:function(){return chunkL2VO3MEJ_js.a}});Object.defineProperty(exports,"validateConsent",{enumerable:true,get:function(){return chunkB46SJB5V_js.a}});Object.defineProperty(exports,"validateConsentOptions",{enumerable:true,get:function(){return chunkB46SJB5V_js.b}});Object.defineProperty(exports,"DSRDashboard",{enumerable:true,get:function(){return chunkWMISQDSV_js.a}});Object.defineProperty(exports,"DSRTracker",{enumerable:true,get:function(){return chunkWMISQDSV_js.b}});Object.defineProperty(exports,"DSRRequestForm",{enumerable:true,get:function(){return chunkUZNWXJ2W_js.a}});Object.defineProperty(exports,"sanitizeInput",{enumerable:true,get:function(){return chunkUXUMYP4L_js.a}});Object.defineProperty(exports,"useDSR",{enumerable:true,get:function(){return chunk5F2IAUWJ_js.a}});Object.defineProperty(exports,"formatDSRRequest",{enumerable:true,get:function(){return chunkOZHUINWS_js.b}});Object.defineProperty(exports,"validateDsrSubmission",{enumerable:true,get:function(){return chunkOZHUINWS_js.a}});Object.defineProperty(exports,"DPIAReport",{enumerable:true,get:function(){return chunk37VFK5SR_js.a}});Object.defineProperty(exports,"StepIndicator",{enumerable:true,get:function(){return chunk37VFK5SR_js.b}});Object.defineProperty(exports,"DPIAQuestionnaire",{enumerable:true,get:function(){return chunkWCTFED27_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 chunkYDKWD6MQ_js.a}});Object.defineProperty(exports,"useNDPRConfig",{enumerable:true,get:function(){return chunkYDKWD6MQ_js.b}});exports.LegalNotice=De;exports.NDPRThemeProvider=xe;
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-J7BIJ45O.mjs';export{a as BreachReportForm}from'./chunk-NUIRMJKQ.mjs';export{c as PolicyExporter,a as PolicyGenerator,b as PolicyPreview}from'./chunk-3H6FYU3Z.mjs';export{a as LawfulBasisTracker}from'./chunk-RBKFNCGO.mjs';export{a as CrossBorderTransferManager}from'./chunk-42JPSNVV.mjs';export{a as ROPAManager}from'./chunk-Z2M5VJX2.mjs';export{a as useComplianceScore}from'./chunk-IQO3SIAG.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-WKUC65HL.mjs';import'./chunk-IVSNHT24.mjs';export{a as getComplianceScore}from'./chunk-7RBO42IW.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-BPMVJOHH.mjs';export{a as ConsentBanner}from'./chunk-I2ZBMR7F.mjs';export{c as appendAuditEntry,a as createAuditEntry,b as getAuditLog}from'./chunk-V7UFP6QU.mjs';export{a as useConsent}from'./chunk-IHNAFXDM.mjs';export{a as useFocusTrap}from'./chunk-YTU4FNM2.mjs';import'./chunk-XC3DLYEG.mjs';export{a as validateConsent,b as validateConsentOptions}from'./chunk-PJNKQPQP.mjs';export{a as DSRDashboard,b as DSRTracker}from'./chunk-NB6SKG76.mjs';export{a as DSRRequestForm}from'./chunk-L3FR4PQE.mjs';export{a as sanitizeInput}from'./chunk-EWVK45Z3.mjs';export{a as useDSR}from'./chunk-WHQ4PEYS.mjs';export{b as formatDSRRequest,a as validateDsrSubmission}from'./chunk-VPNK7OID.mjs';export{a as DPIAReport,b as StepIndicator}from'./chunk-N72RNTGP.mjs';export{a as DPIAQuestionnaire}from'./chunk-ZQHGIOYP.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-FRQFU44F.mjs';import'./chunk-V5TZJJWU.mjs';import'./chunk-DBZSN4WP.mjs';import'./chunk-ZJYULEER.mjs';import {useMemo}from'react';import {jsx}from'react/jsx-runtime';var xe=({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 De=({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{De as LegalNotice,xe as NDPRThemeProvider};
2
+ export{a as NDPRDashboard}from'./chunk-ZIZL37BG.mjs';export{b as BreachNotificationManager,a as BreachRiskAssessment,c as RegulatoryReportGenerator}from'./chunk-J7BIJ45O.mjs';export{a as BreachReportForm}from'./chunk-DK7P5JEG.mjs';export{c as PolicyExporter,a as PolicyGenerator,b as PolicyPreview}from'./chunk-3H6FYU3Z.mjs';export{a as LawfulBasisTracker}from'./chunk-RBKFNCGO.mjs';export{a as CrossBorderTransferManager}from'./chunk-42JPSNVV.mjs';export{a as ROPAManager}from'./chunk-Z2M5VJX2.mjs';export{a as useComplianceScore}from'./chunk-IQO3SIAG.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-WKUC65HL.mjs';import'./chunk-IVSNHT24.mjs';export{a as getComplianceScore}from'./chunk-7RBO42IW.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-BPMVJOHH.mjs';export{a as ConsentBanner}from'./chunk-I2ZBMR7F.mjs';export{c as appendAuditEntry,a as createAuditEntry,b as getAuditLog}from'./chunk-V7UFP6QU.mjs';export{a as useConsent}from'./chunk-IHNAFXDM.mjs';export{a as useFocusTrap}from'./chunk-YTU4FNM2.mjs';import'./chunk-XC3DLYEG.mjs';export{a as validateConsent,b as validateConsentOptions}from'./chunk-PJNKQPQP.mjs';export{a as DSRDashboard,b as DSRTracker}from'./chunk-NB6SKG76.mjs';export{a as DSRRequestForm}from'./chunk-L3FR4PQE.mjs';export{a as sanitizeInput}from'./chunk-EWVK45Z3.mjs';export{a as useDSR}from'./chunk-GUERZD4O.mjs';export{b as formatDSRRequest,a as validateDsrSubmission}from'./chunk-VPNK7OID.mjs';export{a as DPIAReport,b as StepIndicator}from'./chunk-N72RNTGP.mjs';export{a as DPIAQuestionnaire}from'./chunk-ZQHGIOYP.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-FRQFU44F.mjs';import'./chunk-V5TZJJWU.mjs';import'./chunk-DBZSN4WP.mjs';import'./chunk-ZJYULEER.mjs';import {useMemo}from'react';import {jsx}from'react/jsx-runtime';var xe=({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 De=({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{De as LegalNotice,xe as NDPRThemeProvider};
@@ -113,7 +113,11 @@ export declare interface NDPRConsentCopy {
113
113
  }
114
114
 
115
115
  export declare interface NDPRConsentProps {
116
- extraOptions?: ConsentOption[];
116
+ /**
117
+ * Consent categories to present. When omitted, the toolkit's
118
+ * default options are used. (4.0: legacy `extraOptions` was removed —
119
+ * pass the full options array here instead.)
120
+ */
117
121
  options?: ConsentOption[];
118
122
  adapter?: StorageAdapter<ConsentSettings>;
119
123
  position?: 'top' | 'bottom' | 'center' | 'inline';
@@ -113,7 +113,11 @@ export declare interface NDPRConsentCopy {
113
113
  }
114
114
 
115
115
  export declare interface NDPRConsentProps {
116
- extraOptions?: ConsentOption[];
116
+ /**
117
+ * Consent categories to present. When omitted, the toolkit's
118
+ * default options are used. (4.0: legacy `extraOptions` was removed —
119
+ * pass the full options array here instead.)
120
+ */
117
121
  options?: ConsentOption[];
118
122
  adapter?: StorageAdapter<ConsentSettings>;
119
123
  position?: 'top' | 'bottom' | 'center' | 'inline';
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- 'use strict';var chunkZM5DLFCZ_js=require('./chunk-ZM5DLFCZ.js');require('./chunk-ZD2W3YU2.js'),require('./chunk-L2VO3MEJ.js'),require('./chunk-AME4HJR4.js'),require('./chunk-YDKWD6MQ.js'),require('./chunk-TTMGFC6C.js'),require('./chunk-RFPLZDIO.js');Object.defineProperty(exports,"NDPRConsent",{enumerable:true,get:function(){return chunkZM5DLFCZ_js.a}});
2
+ 'use strict';var chunk63WM5PHZ_js=require('./chunk-63WM5PHZ.js');require('./chunk-ZD2W3YU2.js'),require('./chunk-L2VO3MEJ.js'),require('./chunk-AME4HJR4.js'),require('./chunk-YDKWD6MQ.js'),require('./chunk-TTMGFC6C.js'),require('./chunk-RFPLZDIO.js');Object.defineProperty(exports,"NDPRConsent",{enumerable:true,get:function(){return chunk63WM5PHZ_js.a}});
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- export{a as NDPRConsent}from'./chunk-737EMUUC.mjs';import'./chunk-I2ZBMR7F.mjs';import'./chunk-YTU4FNM2.mjs';import'./chunk-SFGW37LE.mjs';import'./chunk-FRQFU44F.mjs';import'./chunk-V5TZJJWU.mjs';import'./chunk-ZJYULEER.mjs';
2
+ export{a as NDPRConsent}from'./chunk-6A6VI7ZP.mjs';import'./chunk-I2ZBMR7F.mjs';import'./chunk-YTU4FNM2.mjs';import'./chunk-SFGW37LE.mjs';import'./chunk-FRQFU44F.mjs';import'./chunk-V5TZJJWU.mjs';import'./chunk-ZJYULEER.mjs';
@@ -568,13 +568,7 @@ export declare interface NDPRBreachReportProps {
568
568
  */
569
569
  copy?: NDPRBreachReportCopy;
570
570
  /**
571
- * @deprecated Renamed to `copy.description`. Will be removed in 4.0.
572
- * If both are set, `copy.description` wins.
573
- */
574
- formDescription?: string;
575
- /**
576
- * Body paragraph under the heading. Canonical name in 3.13+. Takes
577
- * precedence over `formDescription`.
571
+ * Body paragraph under the heading.
578
572
  */
579
573
  description?: string;
580
574
  /**
@@ -663,7 +657,11 @@ export declare interface NDPRConsentCopy {
663
657
  }
664
658
 
665
659
  export declare interface NDPRConsentProps {
666
- extraOptions?: ConsentOption[];
660
+ /**
661
+ * Consent categories to present. When omitted, the toolkit's
662
+ * default options are used. (4.0: legacy `extraOptions` was removed —
663
+ * pass the full options array here instead.)
664
+ */
667
665
  options?: ConsentOption[];
668
666
  adapter?: StorageAdapter<ConsentSettings>;
669
667
  position?: 'top' | 'bottom' | 'center' | 'inline';
@@ -693,15 +691,10 @@ export declare interface NDPRCrossBorderCopy {
693
691
 
694
692
  export declare interface NDPRCrossBorderProps {
695
693
  /**
696
- * Initial transfers to seed the manager. Canonical name in 3.13+.
697
- * Takes precedence over `initialTransfers` if both are set.
694
+ * Initial transfers to seed the manager. (4.0: the legacy
695
+ * `initialTransfers` alias was removed.)
698
696
  */
699
697
  initialData?: CrossBorderTransfer[];
700
- /**
701
- * @deprecated Renamed to `initialData`. Will be removed in 4.0.
702
- * If both are set, `initialData` wins.
703
- */
704
- initialTransfers?: CrossBorderTransfer[];
705
698
  adapter?: StorageAdapter<CrossBorderTransfer[]>;
706
699
  classNames?: CrossBorderTransferManagerClassNames;
707
700
  unstyled?: boolean;
@@ -839,15 +832,10 @@ export declare interface NDPRLawfulBasisCopy {
839
832
 
840
833
  export declare interface NDPRLawfulBasisProps {
841
834
  /**
842
- * Initial activities to seed the tracker. Canonical name in 3.13+.
843
- * Takes precedence over `initialActivities` if both are set.
835
+ * Initial activities to seed the tracker. (4.0: the legacy
836
+ * `initialActivities` alias was removed.)
844
837
  */
845
838
  initialData?: ProcessingActivity[];
846
- /**
847
- * @deprecated Renamed to `initialData`. Will be removed in 4.0.
848
- * If both are set, `initialData` wins.
849
- */
850
- initialActivities?: ProcessingActivity[];
851
839
  adapter?: StorageAdapter<ProcessingActivity[]>;
852
840
  classNames?: LawfulBasisTrackerClassNames;
853
841
  unstyled?: boolean;
package/dist/presets.d.ts CHANGED
@@ -568,13 +568,7 @@ export declare interface NDPRBreachReportProps {
568
568
  */
569
569
  copy?: NDPRBreachReportCopy;
570
570
  /**
571
- * @deprecated Renamed to `copy.description`. Will be removed in 4.0.
572
- * If both are set, `copy.description` wins.
573
- */
574
- formDescription?: string;
575
- /**
576
- * Body paragraph under the heading. Canonical name in 3.13+. Takes
577
- * precedence over `formDescription`.
571
+ * Body paragraph under the heading.
578
572
  */
579
573
  description?: string;
580
574
  /**
@@ -663,7 +657,11 @@ export declare interface NDPRConsentCopy {
663
657
  }
664
658
 
665
659
  export declare interface NDPRConsentProps {
666
- extraOptions?: ConsentOption[];
660
+ /**
661
+ * Consent categories to present. When omitted, the toolkit's
662
+ * default options are used. (4.0: legacy `extraOptions` was removed —
663
+ * pass the full options array here instead.)
664
+ */
667
665
  options?: ConsentOption[];
668
666
  adapter?: StorageAdapter<ConsentSettings>;
669
667
  position?: 'top' | 'bottom' | 'center' | 'inline';
@@ -693,15 +691,10 @@ export declare interface NDPRCrossBorderCopy {
693
691
 
694
692
  export declare interface NDPRCrossBorderProps {
695
693
  /**
696
- * Initial transfers to seed the manager. Canonical name in 3.13+.
697
- * Takes precedence over `initialTransfers` if both are set.
694
+ * Initial transfers to seed the manager. (4.0: the legacy
695
+ * `initialTransfers` alias was removed.)
698
696
  */
699
697
  initialData?: CrossBorderTransfer[];
700
- /**
701
- * @deprecated Renamed to `initialData`. Will be removed in 4.0.
702
- * If both are set, `initialData` wins.
703
- */
704
- initialTransfers?: CrossBorderTransfer[];
705
698
  adapter?: StorageAdapter<CrossBorderTransfer[]>;
706
699
  classNames?: CrossBorderTransferManagerClassNames;
707
700
  unstyled?: boolean;
@@ -839,15 +832,10 @@ export declare interface NDPRLawfulBasisCopy {
839
832
 
840
833
  export declare interface NDPRLawfulBasisProps {
841
834
  /**
842
- * Initial activities to seed the tracker. Canonical name in 3.13+.
843
- * Takes precedence over `initialActivities` if both are set.
835
+ * Initial activities to seed the tracker. (4.0: the legacy
836
+ * `initialActivities` alias was removed.)
844
837
  */
845
838
  initialData?: ProcessingActivity[];
846
- /**
847
- * @deprecated Renamed to `initialData`. Will be removed in 4.0.
848
- * If both are set, `initialData` wins.
849
- */
850
- initialActivities?: ProcessingActivity[];
851
839
  adapter?: StorageAdapter<ProcessingActivity[]>;
852
840
  classNames?: LawfulBasisTrackerClassNames;
853
841
  unstyled?: boolean;
package/dist/presets.js CHANGED
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- 'use strict';var chunkZM5DLFCZ_js=require('./chunk-ZM5DLFCZ.js'),chunkKH3EQJQE_js=require('./chunk-KH3EQJQE.js'),chunk3E4IH7CE_js=require('./chunk-3E4IH7CE.js');require('./chunk-F5MGMNQF.js');var chunkNUWVPRNI_js=require('./chunk-NUWVPRNI.js'),chunkQGUOFGVJ_js=require('./chunk-QGUOFGVJ.js'),chunk7FXNGGMO_js=require('./chunk-7FXNGGMO.js'),chunkXYGGUGTO_js=require('./chunk-XYGGUGTO.js'),chunkBL5W472Q_js=require('./chunk-BL5W472Q.js');require('./chunk-NUOHT3LO.js'),require('./chunk-QHW4UKGJ.js'),require('./chunk-JS7SYL5P.js');var chunkRDALAH3Y_js=require('./chunk-RDALAH3Y.js');require('./chunk-6LJHLE6G.js'),require('./chunk-YFBDJ4FH.js'),require('./chunk-WZYCBW2R.js'),require('./chunk-4CVBQC66.js'),require('./chunk-ZD2W3YU2.js'),require('./chunk-L2VO3MEJ.js'),require('./chunk-UZNWXJ2W.js'),require('./chunk-UXUMYP4L.js');var chunkWCTFED27_js=require('./chunk-WCTFED27.js');require('./chunk-ZVOIR4QH.js'),require('./chunk-AME4HJR4.js'),require('./chunk-YDKWD6MQ.js'),require('./chunk-TTMGFC6C.js'),require('./chunk-VWED6UTN.js');var chunkRFPLZDIO_js=require('./chunk-RFPLZDIO.js'),react=require('react'),jsxRuntime=require('react/jsx-runtime');var J=[{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"}],Q=({categories:o=J,adapter:c,classNames:i,unstyled:A,onSubmit:h=()=>{},copy:e,formDescription:P,description:n,submitTo:l,submitOptions:s,onSubmitError:p,onSubmitSuccess:m})=>{var t,r;let f=react.useRef(false);react.useEffect(()=>{process.env.NODE_ENV!=="production"&&P!==void 0&&n===void 0&&!f.current&&(f.current=true,console.warn("[ndpr-toolkit/breach] NDPRBreachReportProps.formDescription is deprecated; rename to 'description'. Will be removed in 4.0."));},[P,n]);let R=d=>chunkRFPLZDIO_js.d(null,null,function*(){var u,D;if(l){let C=typeof(s==null?void 0:s.headers)=="function"?s.headers():(u=s==null?void 0:s.headers)!=null?u:{};try{let N=yield fetch(l,{method:"POST",headers:chunkRFPLZDIO_js.a({"Content-Type":"application/json"},C),credentials:(D=s==null?void 0:s.credentials)!=null?D:"same-origin",body:JSON.stringify(d)});if(!N.ok)p==null||p({response:N});else if(m){let B;try{let y=yield N.clone().text();y&&(B=JSON.parse(y));}catch(y){}m({response:N,data:d,body:B});}}catch(N){p==null||p({error:N});}}else c&&c.save(d);h(d);}),g=(r=(t=e==null?void 0:e.description)!=null?t:n)!=null?r:P;return jsxRuntime.jsx(chunkQGUOFGVJ_js.a,{categories:o,onSubmit:R,classNames:i,unstyled:A,title:e==null?void 0:e.title,formDescription:g,submitButtonText:e==null?void 0:e.submitButton})};var G=[{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"}]}]}],H=({sections:o=G,adapter:c,classNames:i,unstyled:A,onComplete:h=()=>{},copy:e,submitTo:P,submitOptions:n,onSubmitError:l,onSubmitSuccess:s})=>{let[p,m]=react.useState({}),[f,R]=react.useState(0),g=(D,C)=>{m(N=>chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},N),{[D]:C}));},t=D=>chunkRFPLZDIO_js.d(null,null,function*(){var C,N;if(P){let B=typeof(n==null?void 0:n.headers)=="function"?n.headers():(C=n==null?void 0:n.headers)!=null?C:{};try{let y=yield fetch(P,{method:"POST",headers:chunkRFPLZDIO_js.a({"Content-Type":"application/json"},B),credentials:(N=n==null?void 0:n.credentials)!=null?N:"same-origin",body:JSON.stringify(D)});if(!y.ok)l==null||l({response:y});else if(s){let b;try{let x=yield y.clone().text();x&&(b=JSON.parse(x));}catch(x){}s({response:y,data:D,body:b});}}catch(y){l==null||l({error:y});}}else c&&c.save(D);h(D);}),r=()=>{f<o.length-1?R(D=>D+1):t(p);},d=()=>{f>0&&R(D=>D-1);},u=Math.round((f+1)/o.length*100);return jsxRuntime.jsx(chunkWCTFED27_js.a,{sections:o,answers:p,onAnswerChange:g,currentSectionIndex:f,onNextSection:r,onPrevSection:d,progress:u,classNames:i,unstyled:A,submitButtonText:e==null?void 0:e.submitButton,nextButtonText:e==null?void 0:e.nextButton,prevButtonText:e==null?void 0:e.prevButton})};var Z=({initialData:o,initialActivities:c,adapter:i,classNames:A,unstyled:h,copy:e})=>{var g;let P=react.useRef(false);react.useEffect(()=>{process.env.NODE_ENV!=="production"&&c!==void 0&&o===void 0&&!P.current&&(P.current=true,console.warn("[ndpr-toolkit/lawful-basis] NDPRLawfulBasisProps.initialActivities is deprecated; rename to 'initialData'. Will be removed in 4.0."));},[c,o]);let n=(g=o!=null?o:c)!=null?g:[],[l,s]=react.useState(()=>{if(i){let t=i.load();if(t&&!(t instanceof Promise))return t}return n});react.useEffect(()=>{if(!i)return;let t=false;return chunkRFPLZDIO_js.d(null,null,function*(){try{let r=yield i.load();!t&&r&&s(r);}catch(r){}}),()=>{t=true;}},[i]);let p=t=>{i&&i.save(t);};return jsxRuntime.jsx(chunk7FXNGGMO_js.a,{activities:l,onAddActivity:t=>{let r=Date.now(),d=chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},t),{id:`activity-${r}`,createdAt:r,updatedAt:r}),u=[...l,d];s(u),p(u);},onUpdateActivity:(t,r)=>{let d=l.map(u=>u.id===t?chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a(chunkRFPLZDIO_js.a({},u),r),{updatedAt:Date.now()}):u);s(d),p(d);},onArchiveActivity:t=>{let r=l.map(d=>d.id===t?chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},d),{status:"inactive",updatedAt:Date.now()}):d);s(r),p(r);},classNames:A,unstyled:h,title:e==null?void 0:e.title,description:e==null?void 0:e.description})};var se=({initialData:o,initialTransfers:c,adapter:i,classNames:A,unstyled:h,copy:e})=>{var g;let P=react.useRef(false);react.useEffect(()=>{process.env.NODE_ENV!=="production"&&c!==void 0&&o===void 0&&!P.current&&(P.current=true,console.warn("[ndpr-toolkit/cross-border] NDPRCrossBorderProps.initialTransfers is deprecated; rename to 'initialData'. Will be removed in 4.0."));},[c,o]);let n=(g=o!=null?o:c)!=null?g:[],[l,s]=react.useState(()=>{if(i){let t=i.load();if(t&&!(t instanceof Promise))return t}return n});react.useEffect(()=>{if(!i)return;let t=false;return chunkRFPLZDIO_js.d(null,null,function*(){try{let r=yield i.load();!t&&r&&s(r);}catch(r){}}),()=>{t=true;}},[i]);let p=t=>{i&&i.save(t);};return jsxRuntime.jsx(chunkXYGGUGTO_js.a,{transfers:l,onAddTransfer:t=>{let r=Date.now(),d=chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},t),{id:`transfer-${r}`,createdAt:r,updatedAt:r}),u=[...l,d];s(u),p(u);},onUpdateTransfer:(t,r)=>{let d=l.map(u=>u.id===t?chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a(chunkRFPLZDIO_js.a({},u),r),{updatedAt:Date.now()}):u);s(d),p(d);},onRemoveTransfer:t=>{let r=l.filter(d=>d.id!==t);s(r),p(r);},classNames:A,unstyled:h,title:e==null?void 0:e.title,description:e==null?void 0:e.description})};var ne={id:"ndpr-ropa-default",organizationName:"Your Organisation",organizationContact:"",organizationAddress:"",records:[],lastUpdated:Date.now(),version:"1.0"},de=({initialData:o,adapter:c,classNames:i,unstyled:A,copy:h})=>{let[e,P]=react.useState(o!=null?o:ne);react.useEffect(()=>{if(!c)return;let m=false;return chunkRFPLZDIO_js.d(null,null,function*(){let R=yield c.load();!m&&R&&P(R);}),()=>{m=true;}},[c]);let n=m=>{c&&c.save(m);};return jsxRuntime.jsx(chunkBL5W472Q_js.a,{ropa:e,onAddRecord:m=>{let f=chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},e),{records:[...e.records,m],lastUpdated:Date.now()});P(f),n(f);},onUpdateRecord:(m,f)=>{let R=chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},e),{records:e.records.map(g=>g.id===m?chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a(chunkRFPLZDIO_js.a({},g),f),{updatedAt:Date.now()}):g),lastUpdated:Date.now()});P(R),n(R);},onArchiveRecord:m=>{let f=chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},e),{records:e.records.map(R=>R.id===m?chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},R),{status:"archived",updatedAt:Date.now()}):R),lastUpdated:Date.now()});P(f),n(f);},classNames:i,unstyled:A,title:h==null?void 0:h.title,description:h==null?void 0:h.description})};var le=i=>{var A=i,{input:o}=A,c=chunkRFPLZDIO_js.c(A,["input"]);let h=chunkRDALAH3Y_js.a(o);return jsxRuntime.jsx(chunkNUWVPRNI_js.a,chunkRFPLZDIO_js.a({report:h},c))};Object.defineProperty(exports,"NDPRConsent",{enumerable:true,get:function(){return chunkZM5DLFCZ_js.a}});Object.defineProperty(exports,"NDPRSubjectRights",{enumerable:true,get:function(){return chunkKH3EQJQE_js.a}});Object.defineProperty(exports,"NDPRPrivacyPolicy",{enumerable:true,get:function(){return chunk3E4IH7CE_js.a}});exports.NDPRBreachReport=Q;exports.NDPRComplianceDashboard=le;exports.NDPRCrossBorder=se;exports.NDPRDPIA=H;exports.NDPRLawfulBasis=Z;exports.NDPRROPA=de;
2
+ 'use strict';var chunk63WM5PHZ_js=require('./chunk-63WM5PHZ.js'),chunkKH3EQJQE_js=require('./chunk-KH3EQJQE.js'),chunk3E4IH7CE_js=require('./chunk-3E4IH7CE.js');require('./chunk-F5MGMNQF.js');var chunkNUWVPRNI_js=require('./chunk-NUWVPRNI.js'),chunkD2UWB5OI_js=require('./chunk-D2UWB5OI.js'),chunk7FXNGGMO_js=require('./chunk-7FXNGGMO.js'),chunkXYGGUGTO_js=require('./chunk-XYGGUGTO.js'),chunkBL5W472Q_js=require('./chunk-BL5W472Q.js');require('./chunk-NUOHT3LO.js'),require('./chunk-QHW4UKGJ.js'),require('./chunk-JS7SYL5P.js');var chunkRDALAH3Y_js=require('./chunk-RDALAH3Y.js');require('./chunk-6LJHLE6G.js'),require('./chunk-YFBDJ4FH.js'),require('./chunk-WZYCBW2R.js'),require('./chunk-4CVBQC66.js'),require('./chunk-ZD2W3YU2.js'),require('./chunk-L2VO3MEJ.js'),require('./chunk-UZNWXJ2W.js'),require('./chunk-UXUMYP4L.js');var chunkWCTFED27_js=require('./chunk-WCTFED27.js');require('./chunk-ZVOIR4QH.js'),require('./chunk-AME4HJR4.js'),require('./chunk-YDKWD6MQ.js'),require('./chunk-TTMGFC6C.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:c=W,adapter:s,classNames:R,unstyled:h,onSubmit:a=()=>{},copy:r,description:l,submitTo:o,submitOptions:i,onSubmitError:m,onSubmitSuccess:v})=>{var t;let f=n=>chunkRFPLZDIO_js.d(null,null,function*(){var p,N;if(o){let w=typeof(i==null?void 0:i.headers)=="function"?i.headers():(p=i==null?void 0:i.headers)!=null?p:{};try{let A=yield fetch(o,{method:"POST",headers:chunkRFPLZDIO_js.a({"Content-Type":"application/json"},w),credentials:(N=i==null?void 0:i.credentials)!=null?N:"same-origin",body:JSON.stringify(n)});if(!A.ok)m==null||m({response:A});else if(v){let P;try{let D=yield A.clone().text();D&&(P=JSON.parse(D));}catch(D){}v({response:A,data:n,body:P});}}catch(A){m==null||m({error:A});}}else s&&s.save(n);a(n);}),e=(t=r==null?void 0:r.description)!=null?t:l;return jsxRuntime.jsx(chunkD2UWB5OI_js.a,{categories:c,onSubmit:f,classNames:R,unstyled:h,title:r==null?void 0:r.title,description:e,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"}]}]}],Q=({sections:c=J,adapter:s,classNames:R,unstyled:h,onComplete:a=()=>{},copy:r,submitTo:l,submitOptions:o,onSubmitError:i,onSubmitSuccess:m})=>{let[v,f]=react.useState({}),[e,t]=react.useState(0),n=(P,D)=>{f(C=>chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},C),{[P]:D}));},p=P=>chunkRFPLZDIO_js.d(null,null,function*(){var D,C;if(l){let F=typeof(o==null?void 0:o.headers)=="function"?o.headers():(D=o==null?void 0:o.headers)!=null?D:{};try{let y=yield fetch(l,{method:"POST",headers:chunkRFPLZDIO_js.a({"Content-Type":"application/json"},F),credentials:(C=o==null?void 0:o.credentials)!=null?C:"same-origin",body:JSON.stringify(P)});if(!y.ok)i==null||i({response:y});else if(m){let x;try{let B=yield y.clone().text();B&&(x=JSON.parse(B));}catch(B){}m({response:y,data:P,body:x});}}catch(y){i==null||i({error:y});}}else s&&s.save(P);a(P);}),N=()=>{e<c.length-1?t(P=>P+1):p(v);},w=()=>{e>0&&t(P=>P-1);},A=Math.round((e+1)/c.length*100);return jsxRuntime.jsx(chunkWCTFED27_js.a,{sections:c,answers:v,onAnswerChange:n,currentSectionIndex:e,onNextSection:N,onPrevSection:w,progress:A,classNames:R,unstyled:h,submitButtonText:r==null?void 0:r.submitButton,nextButtonText:r==null?void 0:r.nextButton,prevButtonText:r==null?void 0:r.prevButton})};var H=({initialData:c,adapter:s,classNames:R,unstyled:h,copy:a})=>{let r=c!=null?c:[],[l,o]=react.useState(()=>{if(s){let e=s.load();if(e&&!(e instanceof Promise))return e}return r});react.useEffect(()=>{if(!s)return;let e=false;return chunkRFPLZDIO_js.d(null,null,function*(){try{let t=yield s.load();!e&&t&&o(t);}catch(t){}}),()=>{e=true;}},[s]);let i=e=>{s&&s.save(e);};return jsxRuntime.jsx(chunk7FXNGGMO_js.a,{activities:l,onAddActivity:e=>{let t=Date.now(),n=chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},e),{id:`activity-${t}`,createdAt:t,updatedAt:t}),p=[...l,n];o(p),i(p);},onUpdateActivity:(e,t)=>{let n=l.map(p=>p.id===e?chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a(chunkRFPLZDIO_js.a({},p),t),{updatedAt:Date.now()}):p);o(n),i(n);},onArchiveActivity:e=>{let t=l.map(n=>n.id===e?chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},n),{status:"inactive",updatedAt:Date.now()}):n);o(t),i(t);},classNames:R,unstyled:h,title:a==null?void 0:a.title,description:a==null?void 0:a.description})};var E=({initialData:c,adapter:s,classNames:R,unstyled:h,copy:a})=>{let r=c!=null?c:[],[l,o]=react.useState(()=>{if(s){let e=s.load();if(e&&!(e instanceof Promise))return e}return r});react.useEffect(()=>{if(!s)return;let e=false;return chunkRFPLZDIO_js.d(null,null,function*(){try{let t=yield s.load();!e&&t&&o(t);}catch(t){}}),()=>{e=true;}},[s]);let i=e=>{s&&s.save(e);};return jsxRuntime.jsx(chunkXYGGUGTO_js.a,{transfers:l,onAddTransfer:e=>{let t=Date.now(),n=chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},e),{id:`transfer-${t}`,createdAt:t,updatedAt:t}),p=[...l,n];o(p),i(p);},onUpdateTransfer:(e,t)=>{let n=l.map(p=>p.id===e?chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a(chunkRFPLZDIO_js.a({},p),t),{updatedAt:Date.now()}):p);o(n),i(n);},onRemoveTransfer:e=>{let t=l.filter(n=>n.id!==e);o(t),i(t);},classNames:R,unstyled:h,title:a==null?void 0:a.title,description:a==null?void 0:a.description})};var se={id:"ndpr-ropa-default",organizationName:"Your Organisation",organizationContact:"",organizationAddress:"",records:[],lastUpdated:Date.now(),version:"1.0"},oe=({initialData:c,adapter:s,classNames:R,unstyled:h,copy:a})=>{let[r,l]=react.useState(c!=null?c:se);react.useEffect(()=>{if(!s)return;let f=false;return chunkRFPLZDIO_js.d(null,null,function*(){let t=yield s.load();!f&&t&&l(t);}),()=>{f=true;}},[s]);let o=f=>{s&&s.save(f);};return jsxRuntime.jsx(chunkBL5W472Q_js.a,{ropa:r,onAddRecord:f=>{let e=chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},r),{records:[...r.records,f],lastUpdated:Date.now()});l(e),o(e);},onUpdateRecord:(f,e)=>{let t=chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},r),{records:r.records.map(n=>n.id===f?chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a(chunkRFPLZDIO_js.a({},n),e),{updatedAt:Date.now()}):n),lastUpdated:Date.now()});l(t),o(t);},onArchiveRecord:f=>{let e=chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},r),{records:r.records.map(t=>t.id===f?chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a({},t),{status:"archived",updatedAt:Date.now()}):t),lastUpdated:Date.now()});l(e),o(e);},classNames:R,unstyled:h,title:a==null?void 0:a.title,description:a==null?void 0:a.description})};var ie=R=>{var h=R,{input:c}=h,s=chunkRFPLZDIO_js.c(h,["input"]);let a=chunkRDALAH3Y_js.a(c);return jsxRuntime.jsx(chunkNUWVPRNI_js.a,chunkRFPLZDIO_js.a({report:a},s))};Object.defineProperty(exports,"NDPRConsent",{enumerable:true,get:function(){return chunk63WM5PHZ_js.a}});Object.defineProperty(exports,"NDPRSubjectRights",{enumerable:true,get:function(){return chunkKH3EQJQE_js.a}});Object.defineProperty(exports,"NDPRPrivacyPolicy",{enumerable:true,get:function(){return chunk3E4IH7CE_js.a}});exports.NDPRBreachReport=Y;exports.NDPRComplianceDashboard=ie;exports.NDPRCrossBorder=E;exports.NDPRDPIA=Q;exports.NDPRLawfulBasis=H;exports.NDPRROPA=oe;
package/dist/presets.mjs CHANGED
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- export{a as NDPRConsent}from'./chunk-737EMUUC.mjs';export{a as NDPRSubjectRights}from'./chunk-WVHMY2BV.mjs';export{a as NDPRPrivacyPolicy}from'./chunk-B2EXRSYG.mjs';import'./chunk-ELK6VFKC.mjs';import {a as a$7}from'./chunk-ZIZL37BG.mjs';import {a}from'./chunk-NUIRMJKQ.mjs';import {a as a$2}from'./chunk-RBKFNCGO.mjs';import {a as a$4}from'./chunk-42JPSNVV.mjs';import {a as a$5}from'./chunk-Z2M5VJX2.mjs';import'./chunk-CWY2FMIC.mjs';import'./chunk-KE2FZH2V.mjs';import'./chunk-IVSNHT24.mjs';import {a as a$6}from'./chunk-7RBO42IW.mjs';import'./chunk-BIJSMSUU.mjs';import'./chunk-7BJXI2HI.mjs';import'./chunk-LWIKDDSU.mjs';import'./chunk-XP5PL6K7.mjs';import'./chunk-I2ZBMR7F.mjs';import'./chunk-YTU4FNM2.mjs';import'./chunk-L3FR4PQE.mjs';import'./chunk-EWVK45Z3.mjs';import {a as a$1}from'./chunk-ZQHGIOYP.mjs';import'./chunk-ITCY2Z66.mjs';import'./chunk-SFGW37LE.mjs';import'./chunk-FRQFU44F.mjs';import'./chunk-V5TZJJWU.mjs';import'./chunk-DBZSN4WP.mjs';import {d,b,a as a$3,c}from'./chunk-ZJYULEER.mjs';import {useRef,useEffect,useState}from'react';import {jsx}from'react/jsx-runtime';var J=[{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"}],Q=({categories:o=J,adapter:c,classNames:i,unstyled:A,onSubmit:h=()=>{},copy:e,formDescription:P,description:n,submitTo:l,submitOptions:s,onSubmitError:p,onSubmitSuccess:m})=>{var t,r;let f=useRef(false);useEffect(()=>{process.env.NODE_ENV!=="production"&&P!==void 0&&n===void 0&&!f.current&&(f.current=true,console.warn("[ndpr-toolkit/breach] NDPRBreachReportProps.formDescription is deprecated; rename to 'description'. Will be removed in 4.0."));},[P,n]);let R=d$1=>d(null,null,function*(){var u,D;if(l){let C=typeof(s==null?void 0:s.headers)=="function"?s.headers():(u=s==null?void 0:s.headers)!=null?u:{};try{let N=yield fetch(l,{method:"POST",headers:a$3({"Content-Type":"application/json"},C),credentials:(D=s==null?void 0:s.credentials)!=null?D:"same-origin",body:JSON.stringify(d$1)});if(!N.ok)p==null||p({response:N});else if(m){let B;try{let y=yield N.clone().text();y&&(B=JSON.parse(y));}catch(y){}m({response:N,data:d$1,body:B});}}catch(N){p==null||p({error:N});}}else c&&c.save(d$1);h(d$1);}),g=(r=(t=e==null?void 0:e.description)!=null?t:n)!=null?r:P;return jsx(a,{categories:o,onSubmit:R,classNames:i,unstyled:A,title:e==null?void 0:e.title,formDescription:g,submitButtonText:e==null?void 0:e.submitButton})};var G=[{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"}]}]}],H=({sections:o=G,adapter:c,classNames:i,unstyled:A,onComplete:h=()=>{},copy:e,submitTo:P,submitOptions:n,onSubmitError:l,onSubmitSuccess:s})=>{let[p,m]=useState({}),[f,R]=useState(0),g=(D,C)=>{m(N=>b(a$3({},N),{[D]:C}));},t=D=>d(null,null,function*(){var C,N;if(P){let B=typeof(n==null?void 0:n.headers)=="function"?n.headers():(C=n==null?void 0:n.headers)!=null?C:{};try{let y=yield fetch(P,{method:"POST",headers:a$3({"Content-Type":"application/json"},B),credentials:(N=n==null?void 0:n.credentials)!=null?N:"same-origin",body:JSON.stringify(D)});if(!y.ok)l==null||l({response:y});else if(s){let b;try{let x=yield y.clone().text();x&&(b=JSON.parse(x));}catch(x){}s({response:y,data:D,body:b});}}catch(y){l==null||l({error:y});}}else c&&c.save(D);h(D);}),r=()=>{f<o.length-1?R(D=>D+1):t(p);},d$1=()=>{f>0&&R(D=>D-1);},u=Math.round((f+1)/o.length*100);return jsx(a$1,{sections:o,answers:p,onAnswerChange:g,currentSectionIndex:f,onNextSection:r,onPrevSection:d$1,progress:u,classNames:i,unstyled:A,submitButtonText:e==null?void 0:e.submitButton,nextButtonText:e==null?void 0:e.nextButton,prevButtonText:e==null?void 0:e.prevButton})};var Z=({initialData:o,initialActivities:c,adapter:i,classNames:A,unstyled:h,copy:e})=>{var g;let P=useRef(false);useEffect(()=>{process.env.NODE_ENV!=="production"&&c!==void 0&&o===void 0&&!P.current&&(P.current=true,console.warn("[ndpr-toolkit/lawful-basis] NDPRLawfulBasisProps.initialActivities is deprecated; rename to 'initialData'. Will be removed in 4.0."));},[c,o]);let n=(g=o!=null?o:c)!=null?g:[],[l,s]=useState(()=>{if(i){let t=i.load();if(t&&!(t instanceof Promise))return t}return n});useEffect(()=>{if(!i)return;let t=false;return d(null,null,function*(){try{let r=yield i.load();!t&&r&&s(r);}catch(r){}}),()=>{t=true;}},[i]);let p=t=>{i&&i.save(t);};return jsx(a$2,{activities:l,onAddActivity:t=>{let r=Date.now(),d=b(a$3({},t),{id:`activity-${r}`,createdAt:r,updatedAt:r}),u=[...l,d];s(u),p(u);},onUpdateActivity:(t,r)=>{let d=l.map(u=>u.id===t?b(a$3(a$3({},u),r),{updatedAt:Date.now()}):u);s(d),p(d);},onArchiveActivity:t=>{let r=l.map(d=>d.id===t?b(a$3({},d),{status:"inactive",updatedAt:Date.now()}):d);s(r),p(r);},classNames:A,unstyled:h,title:e==null?void 0:e.title,description:e==null?void 0:e.description})};var se=({initialData:o,initialTransfers:c,adapter:i,classNames:A,unstyled:h,copy:e})=>{var g;let P=useRef(false);useEffect(()=>{process.env.NODE_ENV!=="production"&&c!==void 0&&o===void 0&&!P.current&&(P.current=true,console.warn("[ndpr-toolkit/cross-border] NDPRCrossBorderProps.initialTransfers is deprecated; rename to 'initialData'. Will be removed in 4.0."));},[c,o]);let n=(g=o!=null?o:c)!=null?g:[],[l,s]=useState(()=>{if(i){let t=i.load();if(t&&!(t instanceof Promise))return t}return n});useEffect(()=>{if(!i)return;let t=false;return d(null,null,function*(){try{let r=yield i.load();!t&&r&&s(r);}catch(r){}}),()=>{t=true;}},[i]);let p=t=>{i&&i.save(t);};return jsx(a$4,{transfers:l,onAddTransfer:t=>{let r=Date.now(),d=b(a$3({},t),{id:`transfer-${r}`,createdAt:r,updatedAt:r}),u=[...l,d];s(u),p(u);},onUpdateTransfer:(t,r)=>{let d=l.map(u=>u.id===t?b(a$3(a$3({},u),r),{updatedAt:Date.now()}):u);s(d),p(d);},onRemoveTransfer:t=>{let r=l.filter(d=>d.id!==t);s(r),p(r);},classNames:A,unstyled:h,title:e==null?void 0:e.title,description:e==null?void 0:e.description})};var ne={id:"ndpr-ropa-default",organizationName:"Your Organisation",organizationContact:"",organizationAddress:"",records:[],lastUpdated:Date.now(),version:"1.0"},de=({initialData:o,adapter:c,classNames:i,unstyled:A,copy:h})=>{let[e,P]=useState(o!=null?o:ne);useEffect(()=>{if(!c)return;let m=false;return d(null,null,function*(){let R=yield c.load();!m&&R&&P(R);}),()=>{m=true;}},[c]);let n=m=>{c&&c.save(m);};return jsx(a$5,{ropa:e,onAddRecord:m=>{let f=b(a$3({},e),{records:[...e.records,m],lastUpdated:Date.now()});P(f),n(f);},onUpdateRecord:(m,f)=>{let R=b(a$3({},e),{records:e.records.map(g=>g.id===m?b(a$3(a$3({},g),f),{updatedAt:Date.now()}):g),lastUpdated:Date.now()});P(R),n(R);},onArchiveRecord:m=>{let f=b(a$3({},e),{records:e.records.map(R=>R.id===m?b(a$3({},R),{status:"archived",updatedAt:Date.now()}):R),lastUpdated:Date.now()});P(f),n(f);},classNames:i,unstyled:A,title:h==null?void 0:h.title,description:h==null?void 0:h.description})};var le=i=>{var A=i,{input:o}=A,c$1=c(A,["input"]);let h=a$6(o);return jsx(a$7,a$3({report:h},c$1))};export{Q as NDPRBreachReport,le as NDPRComplianceDashboard,se as NDPRCrossBorder,H as NDPRDPIA,Z as NDPRLawfulBasis,de as NDPRROPA};
2
+ export{a as NDPRConsent}from'./chunk-6A6VI7ZP.mjs';export{a as NDPRSubjectRights}from'./chunk-WVHMY2BV.mjs';export{a as NDPRPrivacyPolicy}from'./chunk-B2EXRSYG.mjs';import'./chunk-ELK6VFKC.mjs';import {a as a$7}from'./chunk-ZIZL37BG.mjs';import {a}from'./chunk-DK7P5JEG.mjs';import {a as a$2}from'./chunk-RBKFNCGO.mjs';import {a as a$4}from'./chunk-42JPSNVV.mjs';import {a as a$5}from'./chunk-Z2M5VJX2.mjs';import'./chunk-CWY2FMIC.mjs';import'./chunk-KE2FZH2V.mjs';import'./chunk-IVSNHT24.mjs';import {a as a$6}from'./chunk-7RBO42IW.mjs';import'./chunk-BIJSMSUU.mjs';import'./chunk-7BJXI2HI.mjs';import'./chunk-LWIKDDSU.mjs';import'./chunk-XP5PL6K7.mjs';import'./chunk-I2ZBMR7F.mjs';import'./chunk-YTU4FNM2.mjs';import'./chunk-L3FR4PQE.mjs';import'./chunk-EWVK45Z3.mjs';import {a as a$1}from'./chunk-ZQHGIOYP.mjs';import'./chunk-ITCY2Z66.mjs';import'./chunk-SFGW37LE.mjs';import'./chunk-FRQFU44F.mjs';import'./chunk-V5TZJJWU.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:c=W,adapter:s,classNames:R,unstyled:h,onSubmit:a$1=()=>{},copy:r,description:l,submitTo:o,submitOptions:i,onSubmitError:m,onSubmitSuccess:v})=>{var t;let f=n=>d(null,null,function*(){var p,N;if(o){let w=typeof(i==null?void 0:i.headers)=="function"?i.headers():(p=i==null?void 0:i.headers)!=null?p:{};try{let A=yield fetch(o,{method:"POST",headers:a$3({"Content-Type":"application/json"},w),credentials:(N=i==null?void 0:i.credentials)!=null?N:"same-origin",body:JSON.stringify(n)});if(!A.ok)m==null||m({response:A});else if(v){let P;try{let D=yield A.clone().text();D&&(P=JSON.parse(D));}catch(D){}v({response:A,data:n,body:P});}}catch(A){m==null||m({error:A});}}else s&&s.save(n);a$1(n);}),e=(t=r==null?void 0:r.description)!=null?t:l;return jsx(a,{categories:c,onSubmit:f,classNames:R,unstyled:h,title:r==null?void 0:r.title,description:e,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"}]}]}],Q=({sections:c=J,adapter:s,classNames:R,unstyled:h,onComplete:a=()=>{},copy:r,submitTo:l,submitOptions:o,onSubmitError:i,onSubmitSuccess:m})=>{let[v,f]=useState({}),[e,t]=useState(0),n=(P,D)=>{f(C=>b(a$3({},C),{[P]:D}));},p=P=>d(null,null,function*(){var D,C;if(l){let F=typeof(o==null?void 0:o.headers)=="function"?o.headers():(D=o==null?void 0:o.headers)!=null?D:{};try{let y=yield fetch(l,{method:"POST",headers:a$3({"Content-Type":"application/json"},F),credentials:(C=o==null?void 0:o.credentials)!=null?C:"same-origin",body:JSON.stringify(P)});if(!y.ok)i==null||i({response:y});else if(m){let x;try{let B=yield y.clone().text();B&&(x=JSON.parse(B));}catch(B){}m({response:y,data:P,body:x});}}catch(y){i==null||i({error:y});}}else s&&s.save(P);a(P);}),N=()=>{e<c.length-1?t(P=>P+1):p(v);},w=()=>{e>0&&t(P=>P-1);},A=Math.round((e+1)/c.length*100);return jsx(a$1,{sections:c,answers:v,onAnswerChange:n,currentSectionIndex:e,onNextSection:N,onPrevSection:w,progress:A,classNames:R,unstyled:h,submitButtonText:r==null?void 0:r.submitButton,nextButtonText:r==null?void 0:r.nextButton,prevButtonText:r==null?void 0:r.prevButton})};var H=({initialData:c,adapter:s,classNames:R,unstyled:h,copy:a})=>{let r=c!=null?c:[],[l,o]=useState(()=>{if(s){let e=s.load();if(e&&!(e instanceof Promise))return e}return r});useEffect(()=>{if(!s)return;let e=false;return d(null,null,function*(){try{let t=yield s.load();!e&&t&&o(t);}catch(t){}}),()=>{e=true;}},[s]);let i=e=>{s&&s.save(e);};return jsx(a$2,{activities:l,onAddActivity:e=>{let t=Date.now(),n=b(a$3({},e),{id:`activity-${t}`,createdAt:t,updatedAt:t}),p=[...l,n];o(p),i(p);},onUpdateActivity:(e,t)=>{let n=l.map(p=>p.id===e?b(a$3(a$3({},p),t),{updatedAt:Date.now()}):p);o(n),i(n);},onArchiveActivity:e=>{let t=l.map(n=>n.id===e?b(a$3({},n),{status:"inactive",updatedAt:Date.now()}):n);o(t),i(t);},classNames:R,unstyled:h,title:a==null?void 0:a.title,description:a==null?void 0:a.description})};var E=({initialData:c,adapter:s,classNames:R,unstyled:h,copy:a})=>{let r=c!=null?c:[],[l,o]=useState(()=>{if(s){let e=s.load();if(e&&!(e instanceof Promise))return e}return r});useEffect(()=>{if(!s)return;let e=false;return d(null,null,function*(){try{let t=yield s.load();!e&&t&&o(t);}catch(t){}}),()=>{e=true;}},[s]);let i=e=>{s&&s.save(e);};return jsx(a$4,{transfers:l,onAddTransfer:e=>{let t=Date.now(),n=b(a$3({},e),{id:`transfer-${t}`,createdAt:t,updatedAt:t}),p=[...l,n];o(p),i(p);},onUpdateTransfer:(e,t)=>{let n=l.map(p=>p.id===e?b(a$3(a$3({},p),t),{updatedAt:Date.now()}):p);o(n),i(n);},onRemoveTransfer:e=>{let t=l.filter(n=>n.id!==e);o(t),i(t);},classNames:R,unstyled:h,title:a==null?void 0:a.title,description:a==null?void 0:a.description})};var se={id:"ndpr-ropa-default",organizationName:"Your Organisation",organizationContact:"",organizationAddress:"",records:[],lastUpdated:Date.now(),version:"1.0"},oe=({initialData:c,adapter:s,classNames:R,unstyled:h,copy:a})=>{let[r,l]=useState(c!=null?c:se);useEffect(()=>{if(!s)return;let f=false;return d(null,null,function*(){let t=yield s.load();!f&&t&&l(t);}),()=>{f=true;}},[s]);let o=f=>{s&&s.save(f);};return jsx(a$5,{ropa:r,onAddRecord:f=>{let e=b(a$3({},r),{records:[...r.records,f],lastUpdated:Date.now()});l(e),o(e);},onUpdateRecord:(f,e)=>{let t=b(a$3({},r),{records:r.records.map(n=>n.id===f?b(a$3(a$3({},n),e),{updatedAt:Date.now()}):n),lastUpdated:Date.now()});l(t),o(t);},onArchiveRecord:f=>{let e=b(a$3({},r),{records:r.records.map(t=>t.id===f?b(a$3({},t),{status:"archived",updatedAt:Date.now()}):t),lastUpdated:Date.now()});l(e),o(e);},classNames:R,unstyled:h,title:a==null?void 0:a.title,description:a==null?void 0:a.description})};var ie=R=>{var h=R,{input:c$1}=h,s=c(h,["input"]);let a=a$6(c$1);return jsx(a$7,a$3({report:a},s))};export{Y as NDPRBreachReport,ie as NDPRComplianceDashboard,E as NDPRCrossBorder,Q as NDPRDPIA,H as NDPRLawfulBasis,oe as NDPRROPA};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tantainnovative/ndpr-toolkit",
3
- "version": "3.13.0",
3
+ "version": "4.0.0",
4
4
  "private": false,
5
5
  "description": "Nigeria Data Protection Toolkit — enterprise-grade compliance components for the Nigeria Data Protection Act (NDPA) 2023",
6
6
  "pnpm": {
@@ -304,8 +304,8 @@
304
304
  "clsx": "^2.1.1",
305
305
  "docx": ">=8.0.0",
306
306
  "jspdf": "^3.0.3",
307
- "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
308
- "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
307
+ "react": "^18.0.0 || ^19.0.0",
308
+ "react-dom": "^18.0.0 || ^19.0.0",
309
309
  "tailwind-merge": "^2.6.0"
310
310
  },
311
311
  "peerDependenciesMeta": {
@@ -1 +0,0 @@
1
- import {a}from'./chunk-I2ZBMR7F.mjs';import {useRef,useEffect}from'react';import {jsx}from'react/jsx-runtime';var c=[{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"}],P=({extraOptions:t,options:n,adapter:s,position:l="bottom",classNames:d,unstyled:u,onSave:r,copy:e})=>{let i=useRef(false);useEffect(()=>{process.env.NODE_ENV!=="production"&&t!==void 0&&!i.current&&(i.current=true,console.warn("[ndpr-toolkit/consent] NDPRConsentProps.extraOptions is deprecated; pass the full options array via 'options' instead. Will be removed in 4.0."));},[t]);let p=n!=null?n:[...c,...t!=null?t:[]];return jsx(a,{options:p,onSave:o=>{s&&s.save(o),r==null||r(o);},position:l,classNames:d,unstyled:u,manageStorage:!s,title:e==null?void 0:e.title,description:e==null?void 0:e.description,acceptAllButtonText:e==null?void 0:e.acceptAll,rejectAllButtonText:e==null?void 0:e.rejectAll,customizeButtonText:e==null?void 0:e.customize,saveButtonText:e==null?void 0:e.save})};export{P as a};
@@ -1,2 +0,0 @@
1
- import {a as a$2}from'./chunk-EWVK45Z3.mjs';import {a}from'./chunk-SFGW37LE.mjs';import {c}from'./chunk-FRQFU44F.mjs';import {a as a$1,b}from'./chunk-ZJYULEER.mjs';import {useRef,useEffect,useState}from'react';import {jsxs,jsx}from'react/jsx-runtime';var ur=({categories:Ke,onSubmit:Je,onValidationError:x,title:C,description:f,formDescription:S,submitButtonText:D,className:X="",buttonClassName:V="",classNames:d={},unstyled:c$1=false,isSubmitting:h=false,showConfirmation:Qe=true,confirmationMessage:Xe="Your breach report has been submitted successfully. The data protection team has been notified.",allowAttachments:Ve=true,maxAttachments:A=5,maxFileSize:R=5*1024*1024,allowedFileTypes:w=[".pdf",".jpg",".jpeg",".png",".doc",".docx",".xls",".xlsx",".txt"],defaultValues:t,onReset:F})=>{var qe,Pe,ke,je,Te,Ie,Ee,Be,Me,$e,Oe,Le,ze,Ye,Ue;let ee=useRef(false);useEffect(()=>{process.env.NODE_ENV!=="production"&&S!==void 0&&f===void 0&&!ee.current&&(ee.current=true,console.warn("[ndpr-toolkit/breach] BreachReportFormProps.formDescription is deprecated; rename to 'description'. Will be removed in 4.0."));},[S,f]);let q=c(),er=(qe=C!=null?C:q.breach.title)!=null?qe:"Report a Data Breach",rr=(ke=(Pe=f!=null?f:S)!=null?Pe:q.breach.description)!=null?ke:"Use this form to report a suspected or confirmed data breach in accordance with NDPA Section 40. All fields marked with * are required.",tr=(je=D!=null?D:q.breach.submitReport)!=null?je:"Submit Report",re=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())}`},[P,te]=useState((t==null?void 0:t.title)||""),[k,ie]=useState((t==null?void 0:t.description)||""),[j,ae]=useState((t==null?void 0:t.category)||""),[T,ne]=useState(re(t==null?void 0:t.discoveredAt)),[I,oe]=useState(re(t==null?void 0:t.occurredAt)),[E,se]=useState(((Te=t==null?void 0:t.reporter)==null?void 0:Te.name)||""),[_,de]=useState(((Ie=t==null?void 0:t.reporter)==null?void 0:Ie.email)||""),[B,me]=useState(((Ee=t==null?void 0:t.reporter)==null?void 0:Ee.department)||""),[M,ce]=useState(((Be=t==null?void 0:t.reporter)==null?void 0:Be.phone)||""),[pe,le]=useState((t==null?void 0:t.affectedSystems)||[]),[ir,ge]=useState(((Me=t==null?void 0:t.affectedSystems)==null?void 0:Me.join(", "))||""),[$,be]=useState((t==null?void 0:t.dataTypes)||[]),[v,fe]=useState((t==null?void 0:t.estimatedAffectedSubjects)!=null?String(t.estimatedAffectedSubjects):""),[O,he]=useState((t==null?void 0:t.approximateRecordCount)!=null?String(t.approximateRecordCount):""),[L,ve]=useState((($e=t==null?void 0:t.dataSubjectCategories)==null?void 0:$e.join(", "))||""),[Ne,_e]=useState((Oe=t==null?void 0:t.involvesSensitiveData)!=null?Oe:false),[z,ue]=useState((t==null?void 0:t.likelyConsequences)||""),[Y,ye]=useState((t==null?void 0:t.mitigationMeasures)||""),[U,xe]=useState(((Le=t==null?void 0:t.dpoContact)==null?void 0:Le.name)||""),[H,Ce]=useState(((ze=t==null?void 0:t.dpoContact)==null?void 0:ze.email)||""),[Z,Se]=useState(((Ye=t==null?void 0:t.dpoContact)==null?void 0:Ye.phone)||""),[G,De]=useState((Ue=t==null?void 0:t.isPhasedReport)!=null?Ue:false),[W,Ae]=useState((t==null?void 0:t.supplementsReportId)||""),[Re,we]=useState((t==null?void 0:t.status)||"ongoing"),[K,Fe]=useState((t==null?void 0:t.initialActions)||""),[u,J]=useState([]),[ar,Q]=useState(false),[a$3,N]=useState({}),nr=()=>{te(""),ie(""),ae(""),ne(""),oe(""),se(""),de(""),me(""),ce(""),le([]),ge(""),be([]),fe(""),he(""),ve(""),_e(false),ue(""),ye(""),xe(""),Ce(""),Se(""),De(false),Ae(""),we("ongoing"),Fe(""),J([]),Q(false),N({}),F==null||F();},or=r=>{let o=r.target.value;ge(o);let l=o.split(",").map(s=>s.trim()).filter(Boolean);le(l);},sr=r=>{be(o=>o.includes(r)?o.filter(l=>l!==r):[...o,r]);},dr=r=>{var He;let o=r.target.files;if(!o)return;let l=[],s={};if(u.length+o.length>A){s.attachments=`Maximum of ${A} files allowed`,N(g=>a$1(a$1({},g),s));return}for(let g=0;g<o.length;g++){let y=o[g];if(y.size>R){s.attachments=`File ${y.name} exceeds the maximum size of ${R/(1024*1024)}MB`;continue}let Ze="."+((He=y.name.split(".").pop())==null?void 0:He.toLowerCase());if(!w.includes(Ze)){s.attachments=`File type ${Ze} is not allowed`;continue}l.push(y);}l.length>0&&J(g=>[...g,...l]),Object.keys(s).length>0?N(g=>a$1(a$1({},g),s)):N(g=>b(a$1({},g),{attachments:""}));},mr=r=>{J(o=>o.filter((l,s)=>s!==r));},cr=()=>{let r={};return P.trim()||(r.breachTitle="Breach title is required"),k.trim()||(r.description="Description is required"),j||(r.category="Category is required"),T||(r.discoveredAt="Discovery date is required"),E.trim()||(r.reporterName="Reporter name is required"),_.trim()?/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/.test(_)||(r.reporterEmail="Reporter email is invalid"):r.reporterEmail="Reporter email is required",B.trim()||(r.reporterDepartment="Reporter department is required"),pe.length===0&&(r.affectedSystems="At least one affected system is required"),$.length===0&&(r.dataTypes="At least one data type is required"),v&&isNaN(Number(v))&&(r.estimatedAffectedSubjects="Estimated affected subjects must be a number"),N(r),r},pr=r=>{r.preventDefault();let o=cr();if(Object.keys(o).length>0){x==null||x(o);return}let l={title:a$2(P),description:a$2(k),category:j,discoveredAt:new Date(T).getTime(),occurredAt:I?new Date(I).getTime():void 0,reportedAt:Date.now(),reporter:{name:a$2(E),email:a$2(_),department:a$2(B),phone:M?a$2(M):void 0},affectedSystems:pe.map(s=>a$2(s)),dataTypes:$,estimatedAffectedSubjects:v?Number(v):void 0,approximateRecordCount:O?Number(O):void 0,dataSubjectCategories:L?L.split(",").map(s=>a$2(s.trim())).filter(Boolean):void 0,involvesSensitiveData:Ne,likelyConsequences:z?a$2(z):void 0,mitigationMeasures:Y?a$2(Y):void 0,dpoContact:U||H?{name:a$2(U),email:a$2(H),phone:Z?a$2(Z):void 0}:void 0,isPhasedReport:G||void 0,supplementsReportId:W?a$2(W):void 0,status:Re,initialActions:K?a$2(K):void 0,attachments:u.map(s=>({name:s.name,type:s.type,size:s.size,file:s}))};Je(l),Qe&&Q(true);};if(ar)return jsxs("div",{"data-ndpr-component":"breach-report-form",className:`p-4 bg-green-50 dark:bg-green-900/20 rounded-md ${X}`,children:[jsx("h2",{className:"text-lg font-bold ndpr-text-success mb-2",children:"Report Submitted"}),jsx("p",{className:"ndpr-text-success",children:Xe}),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:()=>Q(false),className:`mt-4 px-4 py-2 bg-green-600 text-white rounded hover:bg-green-700 ${V}`,children:"Report Another Breach"})]});let lr=[{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 ${X}`,d.root,c$1),children:[jsx("h2",{className:a("ndpr-section-heading",d.title,c$1),children:er}),jsx("p",{className:"ndpr-card__subtitle",children:rr}),jsx("form",{onSubmit:pr,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:P,onChange:r=>te(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:j,onChange:r=>ae(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"}),Ke.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:k,onChange:r=>ie(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:T,onChange:r=>ne(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:I,onChange:r=>oe(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:E,onChange:r=>se(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:_,onChange:r=>de(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=>me(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:M,onChange:r=>ce(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:ir,onChange:or,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:v,onChange:r=>fe(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:lr.map(r=>jsxs("div",{className:"flex items-center",children:[jsx("input",{type:"checkbox",id:`dataType_${r.id}`,checked:$.includes(r.id),onChange:()=>sr(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:Re,onChange:r=>we(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:O,onChange:r=>he(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:L,onChange:r=>ve(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:Ne,onChange:r=>_e(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:z,onChange:r=>ue(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:Y,onChange:r=>ye(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:U,onChange:r=>xe(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:H,onChange:r=>Ce(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:Z,onChange:r=>Se(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:G,onChange:r=>De(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)"})]}),G&&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:W,onChange:r=>Ae(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=>Fe(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)})]})]})]}),Ve&&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 ",A," files, ",R/(1024*1024),"MB each. Allowed types: ",w.join(", ")]}),jsx("input",{id:"breach-attachments",type:"file",onChange:dr,multiple:true,className:"ndpr-form-field__input",accept:w.join(",")}),a$3.attachments&&jsx("p",{id:"attachments-error",role:"alert",className:"ndpr-form-field__error",children:a$3.attachments})]}),u.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:u.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:()=>mr(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:[h&&d.loadingOverlay&&jsx("div",{className:d.loadingOverlay}),jsx("button",{type:"submit",disabled:h,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 ${V} ${h?"opacity-50 cursor-not-allowed":""}`,d.primaryButton||d.submitButton,c$1),children:h?"Submitting...":tr}),jsx("button",{type:"button",onClick:nr,disabled:h,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{ur as a};
@@ -1,2 +0,0 @@
1
- 'use strict';var chunkOZHUINWS_js=require('./chunk-OZHUINWS.js'),chunkVWED6UTN_js=require('./chunk-VWED6UTN.js'),chunkRFPLZDIO_js=require('./chunk-RFPLZDIO.js'),react=require('react');function K(D,i){return i?chunkVWED6UTN_js.a(D):{load:()=>null,save:()=>{},remove:()=>{}}}function G({initialRequests:D=[],requestTypes:i,adapter:c,storageKey:P="ndpr_dsr_requests",useLocalStorage:y=true,onSubmit:g,onUpdate:m}){var h;let w=react.useRef(false);!w.current&&!c&&y&&typeof process!="undefined"&&((h=process.env)==null?void 0:h.NODE_ENV)!=="production"&&(w.current=true,console.warn("[ndpr-toolkit/dsr] useDSR() is using the default localStorageAdapter, which stores DSR requests (including data subjects' PII) in the admin's browser. For production deployments, pass an explicit adapter (apiAdapter for server-side persistence, memoryAdapter for in-process, or set useLocalStorage: false to disable). In 4.0, the default will switch to in-memory; localStorage will require explicit opt-in. See https://ndprtoolkit.com.ng/docs/guides/upgrading-3-7-to-3-10#dsr-storage"));let A=c!=null?c:K(P,y),a=react.useRef(A);a.current=A;let[n,R]=react.useState(D),[T,q]=react.useState(true);react.useEffect(()=>{let e=false;try{let t=a.current.load();t instanceof Promise?t.then(s=>{e||(s&&R(s),q(!1));},()=>{e||q(!1);}):(t&&R(t),q(!1));}catch(t){e||q(false);}return ()=>{e=true;}},[]);let p=react.useCallback(e=>{Promise.resolve(a.current.save(e)).catch(t=>{console.warn("[ndpr-toolkit] Failed to save DSR requests:",t);});},[]),O=()=>"dsr_"+Date.now()+"_"+Math.random().toString(36).substr(2,9),_=react.useCallback(e=>{let t=i.find(o=>o.id===e.type),s=(t==null?void 0:t.estimatedCompletionTime)||30,u=Date.now(),d=u+s*24*60*60*1e3,l=chunkRFPLZDIO_js.a({id:O(),status:"pending",createdAt:u,updatedAt:u,dueDate:d},e);return R(o=>{let S=[...o,l];return p(S),S}),g&&g(l),l},[i,p,g]),B=react.useCallback((e,t)=>{let s=null;return R(u=>{let d=u.findIndex(S=>S.id===e);if(d===-1)return u;let l=u[d];s=chunkRFPLZDIO_js.b(chunkRFPLZDIO_js.a(chunkRFPLZDIO_js.a({},l),t),{updatedAt:Date.now()});let o=[...u];return o[d]=s,p(o),o}),s&&m&&m(s),s},[p,m]),C=react.useCallback(e=>n.find(t=>t.id===e)||null,[n]),L=react.useCallback(e=>n.filter(t=>t.status===e),[n]),E=react.useCallback(e=>n.filter(t=>t.type===e),[n]),F=react.useCallback(e=>i.find(t=>t.id===e),[i]),U=react.useCallback(e=>{let{formattedRequest:t}=chunkOZHUINWS_js.b(e);return t},[]),N=react.useCallback(()=>{R([]),Promise.resolve(a.current.remove()).catch(e=>{console.warn("[ndpr-toolkit] Failed to remove DSR requests:",e);});},[a]);return {requests:n,submitRequest:_,updateRequest:B,getRequest:C,getRequestsByStatus:L,getRequestsByType:E,getRequestType:F,formatRequest:U,clearRequests:N,isLoading:T}}
2
- exports.a=G;