@tantainnovative/ndpr-toolkit 1.0.9 → 2.1.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/README.md +295 -124
- package/dist/breach-BpSBPrdk.d.mts +185 -0
- package/dist/breach-BpSBPrdk.d.ts +185 -0
- package/dist/breach-D5zJYNph.d.mts +17 -0
- package/dist/breach-D7NgrdMX.d.ts +17 -0
- package/dist/breach.d.mts +275 -0
- package/dist/breach.d.ts +275 -0
- package/dist/breach.js +2 -0
- package/dist/breach.js.map +1 -0
- package/dist/breach.mjs +2 -0
- package/dist/breach.mjs.map +1 -0
- package/dist/chunk-2SYNHRP6.mjs +2 -0
- package/dist/chunk-2SYNHRP6.mjs.map +1 -0
- package/dist/chunk-2XHD22J7.mjs +7 -0
- package/dist/chunk-2XHD22J7.mjs.map +1 -0
- package/dist/chunk-4A354HL3.js +2 -0
- package/dist/chunk-4A354HL3.js.map +1 -0
- package/dist/chunk-4DKT6IB6.js +94 -0
- package/dist/chunk-4DKT6IB6.js.map +1 -0
- package/dist/chunk-5ZBO2UPH.js +2 -0
- package/dist/chunk-5ZBO2UPH.js.map +1 -0
- package/dist/chunk-6JFTAYXV.mjs +2 -0
- package/dist/chunk-6JFTAYXV.mjs.map +1 -0
- package/dist/chunk-6JVYYLS7.js +2 -0
- package/dist/chunk-6JVYYLS7.js.map +1 -0
- package/dist/chunk-6SGG6WPA.mjs +2 -0
- package/dist/chunk-6SGG6WPA.mjs.map +1 -0
- package/dist/chunk-AQEGDEQM.js +7 -0
- package/dist/chunk-AQEGDEQM.js.map +1 -0
- package/dist/chunk-C2IJWCZQ.mjs +2 -0
- package/dist/chunk-C2IJWCZQ.mjs.map +1 -0
- package/dist/chunk-CMZTI7SG.js +2 -0
- package/dist/chunk-CMZTI7SG.js.map +1 -0
- package/dist/chunk-DB3JH4DS.mjs +2 -0
- package/dist/chunk-DB3JH4DS.mjs.map +1 -0
- package/dist/chunk-EWOZKYLY.mjs +2 -0
- package/dist/chunk-EWOZKYLY.mjs.map +1 -0
- package/dist/chunk-FFW7RUAG.mjs +94 -0
- package/dist/chunk-FFW7RUAG.mjs.map +1 -0
- package/dist/chunk-FK3CSFLJ.js +2 -0
- package/dist/chunk-FK3CSFLJ.js.map +1 -0
- package/dist/chunk-GIV2OHE6.mjs +2 -0
- package/dist/chunk-GIV2OHE6.mjs.map +1 -0
- package/dist/chunk-GMLNWS2N.mjs +2 -0
- package/dist/chunk-GMLNWS2N.mjs.map +1 -0
- package/dist/chunk-IQF726GS.js +2 -0
- package/dist/chunk-IQF726GS.js.map +1 -0
- package/dist/chunk-IWUUVRLJ.js +2 -0
- package/dist/chunk-IWUUVRLJ.js.map +1 -0
- package/dist/chunk-JUN6YPLL.mjs +72 -0
- package/dist/chunk-JUN6YPLL.mjs.map +1 -0
- package/dist/chunk-L3FKTBGV.js +72 -0
- package/dist/chunk-L3FKTBGV.js.map +1 -0
- package/dist/chunk-L52PDW6O.mjs +2 -0
- package/dist/chunk-L52PDW6O.mjs.map +1 -0
- package/dist/chunk-LI6WJ3LZ.js +2 -0
- package/dist/chunk-LI6WJ3LZ.js.map +1 -0
- package/dist/chunk-LXRXDTPI.js +2 -0
- package/dist/chunk-LXRXDTPI.js.map +1 -0
- package/dist/chunk-MQFZHA2D.js +2 -0
- package/dist/chunk-MQFZHA2D.js.map +1 -0
- package/dist/chunk-OITITR6K.mjs +2 -0
- package/dist/chunk-OITITR6K.mjs.map +1 -0
- package/dist/chunk-PDJGTQMY.mjs +2 -0
- package/dist/chunk-PDJGTQMY.mjs.map +1 -0
- package/dist/chunk-PGSA2O5P.mjs +2 -0
- package/dist/chunk-PGSA2O5P.mjs.map +1 -0
- package/dist/chunk-PM7CMTMB.js +4 -0
- package/dist/chunk-PM7CMTMB.js.map +1 -0
- package/dist/chunk-PYEX7DFR.mjs +4 -0
- package/dist/chunk-PYEX7DFR.mjs.map +1 -0
- package/dist/chunk-QKK5S54L.mjs +2 -0
- package/dist/chunk-QKK5S54L.mjs.map +1 -0
- package/dist/chunk-RB26MIRI.js +2 -0
- package/dist/chunk-RB26MIRI.js.map +1 -0
- package/dist/chunk-RGYK4VAY.mjs +2 -0
- package/dist/chunk-RGYK4VAY.mjs.map +1 -0
- package/dist/chunk-RHWW5FDP.js +16 -0
- package/dist/chunk-RHWW5FDP.js.map +1 -0
- package/dist/chunk-RYZEIDNR.js +2 -0
- package/dist/chunk-RYZEIDNR.js.map +1 -0
- package/dist/chunk-SLNMKGQ2.mjs +2 -0
- package/dist/chunk-SLNMKGQ2.mjs.map +1 -0
- package/dist/chunk-SSGJREE3.js +2 -0
- package/dist/chunk-SSGJREE3.js.map +1 -0
- package/dist/chunk-SWF3YVE5.js +4 -0
- package/dist/chunk-SWF3YVE5.js.map +1 -0
- package/dist/chunk-T44JQT2O.mjs +2 -0
- package/dist/chunk-T44JQT2O.mjs.map +1 -0
- package/dist/chunk-TDDAYVKK.js +2 -0
- package/dist/chunk-TDDAYVKK.js.map +1 -0
- package/dist/chunk-TXBZPCGF.mjs +2 -0
- package/dist/chunk-TXBZPCGF.mjs.map +1 -0
- package/dist/chunk-U2CGMEWB.js +2 -0
- package/dist/chunk-U2CGMEWB.js.map +1 -0
- package/dist/chunk-UUWVBENC.js +2 -0
- package/dist/chunk-UUWVBENC.js.map +1 -0
- package/dist/chunk-UYP64PV7.mjs +4 -0
- package/dist/chunk-UYP64PV7.mjs.map +1 -0
- package/dist/chunk-VMJBW3EF.mjs +2 -0
- package/dist/chunk-VMJBW3EF.mjs.map +1 -0
- package/dist/chunk-WW3X3ELF.js +2 -0
- package/dist/chunk-WW3X3ELF.js.map +1 -0
- package/dist/chunk-WWT2ZSNU.mjs +2 -0
- package/dist/chunk-WWT2ZSNU.mjs.map +1 -0
- package/dist/chunk-XMKA6GVK.mjs +16 -0
- package/dist/chunk-XMKA6GVK.mjs.map +1 -0
- package/dist/chunk-Y34DQYS7.js +2 -0
- package/dist/chunk-Y34DQYS7.js.map +1 -0
- package/dist/chunk-ZU73VG3X.js +2 -0
- package/dist/chunk-ZU73VG3X.js.map +1 -0
- package/dist/consent-CmVzqZUk.d.mts +99 -0
- package/dist/consent-CmVzqZUk.d.ts +99 -0
- package/dist/consent-DCc5zjXI.d.mts +24 -0
- package/dist/consent-DLWb5ota.d.ts +24 -0
- package/dist/consent.d.mts +197 -0
- package/dist/consent.d.ts +197 -0
- package/dist/consent.js +2 -0
- package/dist/consent.js.map +1 -0
- package/dist/consent.mjs +2 -0
- package/dist/consent.mjs.map +1 -0
- package/dist/core.d.mts +14 -0
- package/dist/core.d.ts +14 -0
- package/dist/core.js +2 -0
- package/dist/core.js.map +1 -0
- package/dist/core.mjs +2 -0
- package/dist/core.mjs.map +1 -0
- package/dist/cross-border-BrIy1ieh.d.mts +192 -0
- package/dist/cross-border-BrIy1ieh.d.ts +192 -0
- package/dist/cross-border.d.mts +58 -0
- package/dist/cross-border.d.ts +58 -0
- package/dist/cross-border.js +2 -0
- package/dist/cross-border.js.map +1 -0
- package/dist/cross-border.mjs +2 -0
- package/dist/cross-border.mjs.map +1 -0
- package/dist/dpia-B9ZZJG5a.d.mts +15 -0
- package/dist/dpia-fdtTd2DI.d.ts +15 -0
- package/dist/dpia-vWfE_9bO.d.mts +137 -0
- package/dist/dpia-vWfE_9bO.d.ts +137 -0
- package/dist/dpia.d.mts +179 -0
- package/dist/dpia.d.ts +179 -0
- package/dist/dpia.js +2 -0
- package/dist/dpia.js.map +1 -0
- package/dist/dpia.mjs +2 -0
- package/dist/dpia.mjs.map +1 -0
- package/dist/dsr-jq5NUEdz.d.ts +14 -0
- package/dist/dsr-pQzQ3H1O.d.mts +128 -0
- package/dist/dsr-pQzQ3H1O.d.ts +128 -0
- package/dist/dsr-whPkiI0_.d.mts +14 -0
- package/dist/dsr.d.mts +192 -0
- package/dist/dsr.d.ts +192 -0
- package/dist/dsr.js +2 -0
- package/dist/dsr.js.map +1 -0
- package/dist/dsr.mjs +2 -0
- package/dist/dsr.mjs.map +1 -0
- package/dist/hooks.d.mts +17 -0
- package/dist/hooks.d.ts +17 -0
- package/dist/hooks.js +2 -0
- package/dist/hooks.js.map +1 -0
- package/dist/hooks.mjs +2 -0
- package/dist/hooks.mjs.map +1 -0
- package/dist/index.d.mts +31 -448
- package/dist/index.d.ts +31 -448
- package/dist/index.js +1 -190
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -190
- package/dist/index.mjs.map +1 -1
- package/dist/lawful-basis-CWtvDG1x.d.mts +112 -0
- package/dist/lawful-basis-CWtvDG1x.d.ts +112 -0
- package/dist/lawful-basis-D-oXFizg.d.mts +57 -0
- package/dist/lawful-basis-v04AhbK2.d.ts +57 -0
- package/dist/lawful-basis.d.mts +55 -0
- package/dist/lawful-basis.d.ts +55 -0
- package/dist/lawful-basis.js +2 -0
- package/dist/lawful-basis.js.map +1 -0
- package/dist/lawful-basis.mjs +2 -0
- package/dist/lawful-basis.mjs.map +1 -0
- package/dist/policy.d.mts +195 -0
- package/dist/policy.d.ts +195 -0
- package/dist/policy.js +2 -0
- package/dist/policy.js.map +1 -0
- package/dist/policy.mjs +2 -0
- package/dist/policy.mjs.map +1 -0
- package/dist/privacy-9FcJceMr.d.mts +15 -0
- package/dist/privacy-BXz7O2ej.d.ts +15 -0
- package/dist/privacy-Ca6te9Ir.d.mts +138 -0
- package/dist/privacy-Ca6te9Ir.d.ts +138 -0
- package/dist/ropa-BebGfqKQ.d.ts +200 -0
- package/dist/ropa-Rb4dsFSz.d.mts +200 -0
- package/dist/ropa.d.mts +45 -0
- package/dist/ropa.d.ts +45 -0
- package/dist/ropa.js +2 -0
- package/dist/ropa.js.map +1 -0
- package/dist/ropa.mjs +2 -0
- package/dist/ropa.mjs.map +1 -0
- package/dist/unstyled.d.mts +4 -4
- package/dist/unstyled.d.ts +4 -4
- package/dist/unstyled.js +1 -1
- package/dist/unstyled.js.map +1 -1
- package/dist/unstyled.mjs +1 -1
- package/dist/unstyled.mjs.map +1 -1
- package/dist/useBreach-DRKnexsk.d.mts +99 -0
- package/dist/useBreach-DuT0N0K1.d.ts +99 -0
- package/dist/useConsent-D0pAfTlb.d.ts +65 -0
- package/dist/useConsent-DOt2Njst.d.mts +65 -0
- package/dist/useCrossBorderTransfer-D4FQYfFt.d.ts +66 -0
- package/dist/useCrossBorderTransfer-TVnY8_UX.d.mts +66 -0
- package/dist/useDPIA-DFDHBLSa.d.ts +94 -0
- package/dist/useDPIA-FqPofFaV.d.mts +94 -0
- package/dist/useDSR-DAqqOBXb.d.ts +74 -0
- package/dist/useDSR-OXM5Q9rf.d.mts +74 -0
- package/dist/useLawfulBasis-DNQ8YszQ.d.mts +68 -0
- package/dist/useLawfulBasis-RILM_xsx.d.ts +68 -0
- package/dist/usePrivacyPolicy-CfySfBLS.d.ts +89 -0
- package/dist/usePrivacyPolicy-Dit2sFuV.d.mts +89 -0
- package/dist/useROPA-Bcs6cRdi.d.ts +64 -0
- package/dist/useROPA-nmcSiUYv.d.mts +64 -0
- package/package.json +162 -35
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Breach notification types aligned with NDPA 2023 Section 40
|
|
3
|
+
* Data controllers must notify the NDPC within 72 hours of becoming aware of a breach
|
|
4
|
+
* Data subjects must be notified without undue delay when breach is likely to result in high risk
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Represents a data breach category
|
|
8
|
+
*/
|
|
9
|
+
interface BreachCategory {
|
|
10
|
+
/** Unique identifier for the category */
|
|
11
|
+
id: string;
|
|
12
|
+
/** Display name for the category */
|
|
13
|
+
name: string;
|
|
14
|
+
/** Description of this breach category */
|
|
15
|
+
description: string;
|
|
16
|
+
/** Default severity level for this category */
|
|
17
|
+
defaultSeverity: 'low' | 'medium' | 'high' | 'critical';
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Represents a data breach report
|
|
21
|
+
*/
|
|
22
|
+
interface BreachReport {
|
|
23
|
+
/** Unique identifier for the breach report */
|
|
24
|
+
id: string;
|
|
25
|
+
/** Title/summary of the breach */
|
|
26
|
+
title: string;
|
|
27
|
+
/** Detailed description of the breach */
|
|
28
|
+
description: string;
|
|
29
|
+
/** Category of the breach */
|
|
30
|
+
category: string;
|
|
31
|
+
/** Timestamp when the breach was discovered */
|
|
32
|
+
discoveredAt: number;
|
|
33
|
+
/** Timestamp when the breach occurred (if known) */
|
|
34
|
+
occurredAt?: number;
|
|
35
|
+
/** Timestamp when the breach was reported internally */
|
|
36
|
+
reportedAt: number;
|
|
37
|
+
/** Person who reported the breach */
|
|
38
|
+
reporter: {
|
|
39
|
+
name: string;
|
|
40
|
+
email: string;
|
|
41
|
+
department: string;
|
|
42
|
+
phone?: string;
|
|
43
|
+
};
|
|
44
|
+
/** Systems or data affected by the breach */
|
|
45
|
+
affectedSystems: string[];
|
|
46
|
+
/** Types of data involved in the breach */
|
|
47
|
+
dataTypes: string[];
|
|
48
|
+
/** Whether sensitive personal data is involved (NDPA Section 30) */
|
|
49
|
+
involvesSensitiveData?: boolean;
|
|
50
|
+
/** Estimated number of data subjects affected */
|
|
51
|
+
estimatedAffectedSubjects?: number;
|
|
52
|
+
/** Whether the breach is ongoing or contained */
|
|
53
|
+
status: 'ongoing' | 'contained' | 'resolved';
|
|
54
|
+
/** Initial actions taken to address the breach */
|
|
55
|
+
initialActions?: string;
|
|
56
|
+
/** Attachments related to the breach */
|
|
57
|
+
attachments?: Array<{
|
|
58
|
+
id: string;
|
|
59
|
+
name: string;
|
|
60
|
+
type: string;
|
|
61
|
+
url: string;
|
|
62
|
+
addedAt: number;
|
|
63
|
+
}>;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Represents a risk assessment for a data breach
|
|
67
|
+
*/
|
|
68
|
+
interface RiskAssessment {
|
|
69
|
+
/** Unique identifier for the risk assessment */
|
|
70
|
+
id: string;
|
|
71
|
+
/** ID of the breach this assessment is for */
|
|
72
|
+
breachId: string;
|
|
73
|
+
/** Timestamp when the assessment was conducted */
|
|
74
|
+
assessedAt: number;
|
|
75
|
+
/** Person who conducted the assessment */
|
|
76
|
+
assessor: {
|
|
77
|
+
name: string;
|
|
78
|
+
role: string;
|
|
79
|
+
email: string;
|
|
80
|
+
};
|
|
81
|
+
/** Confidentiality impact (1-5) */
|
|
82
|
+
confidentialityImpact: number;
|
|
83
|
+
/** Integrity impact (1-5) */
|
|
84
|
+
integrityImpact: number;
|
|
85
|
+
/** Availability impact (1-5) */
|
|
86
|
+
availabilityImpact: number;
|
|
87
|
+
/** Likelihood of harm to data subjects (1-5) */
|
|
88
|
+
harmLikelihood: number;
|
|
89
|
+
/** Severity of potential harm to data subjects (1-5) */
|
|
90
|
+
harmSeverity: number;
|
|
91
|
+
/** Overall risk score */
|
|
92
|
+
overallRiskScore: number;
|
|
93
|
+
/** Risk level based on the overall score */
|
|
94
|
+
riskLevel: 'low' | 'medium' | 'high' | 'critical';
|
|
95
|
+
/** Whether the breach is likely to result in a risk to rights and freedoms */
|
|
96
|
+
risksToRightsAndFreedoms: boolean;
|
|
97
|
+
/** Whether the breach is likely to result in a high risk to rights and freedoms */
|
|
98
|
+
highRisksToRightsAndFreedoms: boolean;
|
|
99
|
+
/** Justification for the risk assessment */
|
|
100
|
+
justification: string;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Represents notification requirements for a data breach per NDPA Section 40
|
|
104
|
+
*/
|
|
105
|
+
interface NotificationRequirement {
|
|
106
|
+
/**
|
|
107
|
+
* Whether NDPC notification is required
|
|
108
|
+
* Per NDPA Section 40, notification to NDPC is required for all breaches
|
|
109
|
+
* that pose a risk to data subjects' rights and freedoms
|
|
110
|
+
*/
|
|
111
|
+
ndpcNotificationRequired: boolean;
|
|
112
|
+
/**
|
|
113
|
+
* Deadline for NDPC notification (72 hours from discovery)
|
|
114
|
+
* NDPA Section 40(1)
|
|
115
|
+
*/
|
|
116
|
+
ndpcNotificationDeadline: number;
|
|
117
|
+
/**
|
|
118
|
+
* Whether data subject notification is required
|
|
119
|
+
* Per NDPA Section 40(4), required when breach is likely to result in
|
|
120
|
+
* high risk to rights and freedoms of data subjects
|
|
121
|
+
*/
|
|
122
|
+
dataSubjectNotificationRequired: boolean;
|
|
123
|
+
/** Justification for the notification decision */
|
|
124
|
+
justification: string;
|
|
125
|
+
/**
|
|
126
|
+
* @deprecated Use ndpcNotificationRequired instead. Kept for backward compatibility.
|
|
127
|
+
*/
|
|
128
|
+
nitdaNotificationRequired?: boolean;
|
|
129
|
+
/**
|
|
130
|
+
* @deprecated Use ndpcNotificationDeadline instead. Kept for backward compatibility.
|
|
131
|
+
*/
|
|
132
|
+
nitdaNotificationDeadline?: number;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Represents a notification sent to the NDPC (Nigeria Data Protection Commission)
|
|
136
|
+
*/
|
|
137
|
+
interface RegulatoryNotification {
|
|
138
|
+
/** Unique identifier for the notification */
|
|
139
|
+
id: string;
|
|
140
|
+
/** ID of the breach this notification is for */
|
|
141
|
+
breachId: string;
|
|
142
|
+
/** Timestamp when the notification was sent */
|
|
143
|
+
sentAt: number;
|
|
144
|
+
/** Method used to send the notification */
|
|
145
|
+
method: 'email' | 'portal' | 'letter' | 'other';
|
|
146
|
+
/** Reference number assigned by the NDPC (if available) */
|
|
147
|
+
referenceNumber?: string;
|
|
148
|
+
/** Contact person at the NDPC */
|
|
149
|
+
ndpcContact?: {
|
|
150
|
+
name: string;
|
|
151
|
+
email: string;
|
|
152
|
+
phone?: string;
|
|
153
|
+
};
|
|
154
|
+
/** Content of the notification */
|
|
155
|
+
content: string;
|
|
156
|
+
/** Attachments included with the notification */
|
|
157
|
+
attachments?: Array<{
|
|
158
|
+
id: string;
|
|
159
|
+
name: string;
|
|
160
|
+
type: string;
|
|
161
|
+
url: string;
|
|
162
|
+
}>;
|
|
163
|
+
/** Follow-up communications with the NDPC */
|
|
164
|
+
followUps?: Array<{
|
|
165
|
+
timestamp: number;
|
|
166
|
+
direction: 'sent' | 'received';
|
|
167
|
+
content: string;
|
|
168
|
+
attachments?: Array<{
|
|
169
|
+
id: string;
|
|
170
|
+
name: string;
|
|
171
|
+
type: string;
|
|
172
|
+
url: string;
|
|
173
|
+
}>;
|
|
174
|
+
}>;
|
|
175
|
+
/**
|
|
176
|
+
* @deprecated Use ndpcContact instead. Kept for backward compatibility.
|
|
177
|
+
*/
|
|
178
|
+
nitdaContact?: {
|
|
179
|
+
name: string;
|
|
180
|
+
email: string;
|
|
181
|
+
phone?: string;
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
export type { BreachReport as B, NotificationRequirement as N, RiskAssessment as R, BreachCategory as a, RegulatoryNotification as b };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { B as BreachReport, R as RiskAssessment } from './breach-BpSBPrdk.mjs';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Calculates the severity of a data breach based on various factors
|
|
5
|
+
* @param report The breach report
|
|
6
|
+
* @param assessment The risk assessment (if available)
|
|
7
|
+
* @returns The calculated severity and notification requirements
|
|
8
|
+
*/
|
|
9
|
+
declare function calculateBreachSeverity(report: BreachReport, assessment?: RiskAssessment): {
|
|
10
|
+
severityLevel: 'low' | 'medium' | 'high' | 'critical';
|
|
11
|
+
notificationRequired: boolean;
|
|
12
|
+
urgentNotificationRequired: boolean;
|
|
13
|
+
timeframeHours: number;
|
|
14
|
+
justification: string;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export { calculateBreachSeverity as c };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { B as BreachReport, R as RiskAssessment } from './breach-BpSBPrdk.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Calculates the severity of a data breach based on various factors
|
|
5
|
+
* @param report The breach report
|
|
6
|
+
* @param assessment The risk assessment (if available)
|
|
7
|
+
* @returns The calculated severity and notification requirements
|
|
8
|
+
*/
|
|
9
|
+
declare function calculateBreachSeverity(report: BreachReport, assessment?: RiskAssessment): {
|
|
10
|
+
severityLevel: 'low' | 'medium' | 'high' | 'critical';
|
|
11
|
+
notificationRequired: boolean;
|
|
12
|
+
urgentNotificationRequired: boolean;
|
|
13
|
+
timeframeHours: number;
|
|
14
|
+
justification: string;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export { calculateBreachSeverity as c };
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { a as BreachCategory, B as BreachReport, R as RiskAssessment, b as RegulatoryNotification } from './breach-BpSBPrdk.mjs';
|
|
3
|
+
export { N as NotificationRequirement } from './breach-BpSBPrdk.mjs';
|
|
4
|
+
export { u as useBreach } from './useBreach-DRKnexsk.mjs';
|
|
5
|
+
export { c as calculateBreachSeverity } from './breach-D5zJYNph.mjs';
|
|
6
|
+
|
|
7
|
+
interface BreachReportFormProps {
|
|
8
|
+
/**
|
|
9
|
+
* Available breach categories
|
|
10
|
+
*/
|
|
11
|
+
categories: BreachCategory[];
|
|
12
|
+
/**
|
|
13
|
+
* Callback function called when form is submitted
|
|
14
|
+
*/
|
|
15
|
+
onSubmit: (formData: any) => void;
|
|
16
|
+
/**
|
|
17
|
+
* Title displayed on the form
|
|
18
|
+
* @default "Report a Data Breach"
|
|
19
|
+
*/
|
|
20
|
+
title?: string;
|
|
21
|
+
/**
|
|
22
|
+
* Description text displayed on the form
|
|
23
|
+
* @default "Use this form to report a suspected or confirmed data breach. All fields marked with * are required."
|
|
24
|
+
*/
|
|
25
|
+
formDescription?: string;
|
|
26
|
+
/**
|
|
27
|
+
* Text for the submit button
|
|
28
|
+
* @default "Submit Report"
|
|
29
|
+
*/
|
|
30
|
+
submitButtonText?: string;
|
|
31
|
+
/**
|
|
32
|
+
* Custom CSS class for the form
|
|
33
|
+
*/
|
|
34
|
+
className?: string;
|
|
35
|
+
/**
|
|
36
|
+
* Custom CSS class for the submit button
|
|
37
|
+
*/
|
|
38
|
+
buttonClassName?: string;
|
|
39
|
+
/**
|
|
40
|
+
* Whether to show a confirmation message after submission
|
|
41
|
+
* @default true
|
|
42
|
+
*/
|
|
43
|
+
showConfirmation?: boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Confirmation message to display after submission
|
|
46
|
+
* @default "Your breach report has been submitted successfully. The data protection team has been notified."
|
|
47
|
+
*/
|
|
48
|
+
confirmationMessage?: string;
|
|
49
|
+
/**
|
|
50
|
+
* Whether to allow file attachments
|
|
51
|
+
* @default true
|
|
52
|
+
*/
|
|
53
|
+
allowAttachments?: boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Maximum number of attachments allowed
|
|
56
|
+
* @default 5
|
|
57
|
+
*/
|
|
58
|
+
maxAttachments?: number;
|
|
59
|
+
/**
|
|
60
|
+
* Maximum file size for attachments (in bytes)
|
|
61
|
+
* @default 5242880 (5MB)
|
|
62
|
+
*/
|
|
63
|
+
maxFileSize?: number;
|
|
64
|
+
/**
|
|
65
|
+
* Allowed file types for attachments
|
|
66
|
+
* @default ['.pdf', '.jpg', '.jpeg', '.png', '.doc', '.docx', '.xls', '.xlsx', '.txt']
|
|
67
|
+
*/
|
|
68
|
+
allowedFileTypes?: string[];
|
|
69
|
+
}
|
|
70
|
+
declare const BreachReportForm: React.FC<BreachReportFormProps>;
|
|
71
|
+
|
|
72
|
+
interface BreachRiskAssessmentProps {
|
|
73
|
+
/**
|
|
74
|
+
* The breach data to assess
|
|
75
|
+
*/
|
|
76
|
+
breachData: BreachReport;
|
|
77
|
+
/**
|
|
78
|
+
* Initial assessment data (if editing an existing assessment)
|
|
79
|
+
*/
|
|
80
|
+
initialAssessment?: Partial<RiskAssessment>;
|
|
81
|
+
/**
|
|
82
|
+
* Callback function called when assessment is completed
|
|
83
|
+
*/
|
|
84
|
+
onComplete: (assessment: RiskAssessment) => void;
|
|
85
|
+
/**
|
|
86
|
+
* Title displayed on the assessment form
|
|
87
|
+
* @default "Breach Risk Assessment"
|
|
88
|
+
*/
|
|
89
|
+
title?: string;
|
|
90
|
+
/**
|
|
91
|
+
* Description text displayed on the assessment form
|
|
92
|
+
* @default "Assess the risk level of this data breach to determine notification requirements."
|
|
93
|
+
*/
|
|
94
|
+
description?: string;
|
|
95
|
+
/**
|
|
96
|
+
* Text for the submit button
|
|
97
|
+
* @default "Complete Assessment"
|
|
98
|
+
*/
|
|
99
|
+
submitButtonText?: string;
|
|
100
|
+
/**
|
|
101
|
+
* Custom CSS class for the form
|
|
102
|
+
*/
|
|
103
|
+
className?: string;
|
|
104
|
+
/**
|
|
105
|
+
* Custom CSS class for the submit button
|
|
106
|
+
*/
|
|
107
|
+
buttonClassName?: string;
|
|
108
|
+
/**
|
|
109
|
+
* Whether to show the breach summary
|
|
110
|
+
* @default true
|
|
111
|
+
*/
|
|
112
|
+
showBreachSummary?: boolean;
|
|
113
|
+
/**
|
|
114
|
+
* Whether to show notification requirements after assessment
|
|
115
|
+
* @default true
|
|
116
|
+
*/
|
|
117
|
+
showNotificationRequirements?: boolean;
|
|
118
|
+
}
|
|
119
|
+
declare const BreachRiskAssessment: React.FC<BreachRiskAssessmentProps>;
|
|
120
|
+
|
|
121
|
+
interface BreachNotificationManagerProps {
|
|
122
|
+
/**
|
|
123
|
+
* List of breach reports to manage
|
|
124
|
+
*/
|
|
125
|
+
breachReports: BreachReport[];
|
|
126
|
+
/**
|
|
127
|
+
* List of risk assessments
|
|
128
|
+
*/
|
|
129
|
+
riskAssessments: RiskAssessment[];
|
|
130
|
+
/**
|
|
131
|
+
* List of regulatory notifications
|
|
132
|
+
*/
|
|
133
|
+
regulatoryNotifications: RegulatoryNotification[];
|
|
134
|
+
/**
|
|
135
|
+
* Callback function called when a breach is selected
|
|
136
|
+
*/
|
|
137
|
+
onSelectBreach?: (breachId: string) => void;
|
|
138
|
+
/**
|
|
139
|
+
* Callback function called when a risk assessment is requested
|
|
140
|
+
*/
|
|
141
|
+
onRequestAssessment?: (breachId: string) => void;
|
|
142
|
+
/**
|
|
143
|
+
* Callback function called when a notification is requested
|
|
144
|
+
*/
|
|
145
|
+
onRequestNotification?: (breachId: string) => void;
|
|
146
|
+
/**
|
|
147
|
+
* Title displayed on the manager
|
|
148
|
+
* @default "Breach Notification Manager"
|
|
149
|
+
*/
|
|
150
|
+
title?: string;
|
|
151
|
+
/**
|
|
152
|
+
* Description text displayed on the manager
|
|
153
|
+
* @default "Manage data breach notifications and track compliance with NDPA requirements."
|
|
154
|
+
*/
|
|
155
|
+
description?: string;
|
|
156
|
+
/**
|
|
157
|
+
* Custom CSS class for the manager
|
|
158
|
+
*/
|
|
159
|
+
className?: string;
|
|
160
|
+
/**
|
|
161
|
+
* Custom CSS class for the buttons
|
|
162
|
+
*/
|
|
163
|
+
buttonClassName?: string;
|
|
164
|
+
/**
|
|
165
|
+
* Whether to show the breach details
|
|
166
|
+
* @default true
|
|
167
|
+
*/
|
|
168
|
+
showBreachDetails?: boolean;
|
|
169
|
+
/**
|
|
170
|
+
* Whether to show the notification timeline
|
|
171
|
+
* @default true
|
|
172
|
+
*/
|
|
173
|
+
showNotificationTimeline?: boolean;
|
|
174
|
+
/**
|
|
175
|
+
* Whether to show the deadline alerts
|
|
176
|
+
* @default true
|
|
177
|
+
*/
|
|
178
|
+
showDeadlineAlerts?: boolean;
|
|
179
|
+
}
|
|
180
|
+
declare const BreachNotificationManager: React.FC<BreachNotificationManagerProps>;
|
|
181
|
+
|
|
182
|
+
interface OrganizationInfo {
|
|
183
|
+
/**
|
|
184
|
+
* Name of the organization
|
|
185
|
+
*/
|
|
186
|
+
name: string;
|
|
187
|
+
/**
|
|
188
|
+
* Registration number or business ID
|
|
189
|
+
*/
|
|
190
|
+
registrationNumber?: string;
|
|
191
|
+
/**
|
|
192
|
+
* Physical address of the organization
|
|
193
|
+
*/
|
|
194
|
+
address: string;
|
|
195
|
+
/**
|
|
196
|
+
* Website URL
|
|
197
|
+
*/
|
|
198
|
+
website?: string;
|
|
199
|
+
/**
|
|
200
|
+
* Name of the Data Protection Officer
|
|
201
|
+
*/
|
|
202
|
+
dpoName: string;
|
|
203
|
+
/**
|
|
204
|
+
* Email of the Data Protection Officer
|
|
205
|
+
*/
|
|
206
|
+
dpoEmail: string;
|
|
207
|
+
/**
|
|
208
|
+
* Phone number of the Data Protection Officer
|
|
209
|
+
*/
|
|
210
|
+
dpoPhone?: string;
|
|
211
|
+
}
|
|
212
|
+
interface RegulatoryReportGeneratorProps {
|
|
213
|
+
/**
|
|
214
|
+
* The breach data to include in the report
|
|
215
|
+
*/
|
|
216
|
+
breachData: BreachReport;
|
|
217
|
+
/**
|
|
218
|
+
* The risk assessment data
|
|
219
|
+
*/
|
|
220
|
+
assessmentData?: RiskAssessment;
|
|
221
|
+
/**
|
|
222
|
+
* Organization information to include in the report
|
|
223
|
+
*/
|
|
224
|
+
organizationInfo: OrganizationInfo;
|
|
225
|
+
/**
|
|
226
|
+
* Callback function called when the report is generated
|
|
227
|
+
*/
|
|
228
|
+
onGenerate: (report: RegulatoryNotification) => void;
|
|
229
|
+
/**
|
|
230
|
+
* Title displayed on the generator form
|
|
231
|
+
* @default "Generate NDPC Notification Report"
|
|
232
|
+
*/
|
|
233
|
+
title?: string;
|
|
234
|
+
/**
|
|
235
|
+
* Description text displayed on the generator form
|
|
236
|
+
* @default "Generate a report for submission to the NDPC in compliance with the NDPA breach notification requirements."
|
|
237
|
+
*/
|
|
238
|
+
description?: string;
|
|
239
|
+
/**
|
|
240
|
+
* Text for the generate button
|
|
241
|
+
* @default "Generate Report"
|
|
242
|
+
*/
|
|
243
|
+
generateButtonText?: string;
|
|
244
|
+
/**
|
|
245
|
+
* Custom CSS class for the form
|
|
246
|
+
*/
|
|
247
|
+
className?: string;
|
|
248
|
+
/**
|
|
249
|
+
* Custom CSS class for the buttons
|
|
250
|
+
*/
|
|
251
|
+
buttonClassName?: string;
|
|
252
|
+
/**
|
|
253
|
+
* Whether to show a preview of the generated report
|
|
254
|
+
* @default true
|
|
255
|
+
*/
|
|
256
|
+
showPreview?: boolean;
|
|
257
|
+
/**
|
|
258
|
+
* Whether to allow editing the report content
|
|
259
|
+
* @default true
|
|
260
|
+
*/
|
|
261
|
+
allowEditing?: boolean;
|
|
262
|
+
/**
|
|
263
|
+
* Whether to allow downloading the report
|
|
264
|
+
* @default true
|
|
265
|
+
*/
|
|
266
|
+
allowDownload?: boolean;
|
|
267
|
+
/**
|
|
268
|
+
* Format for downloading the report
|
|
269
|
+
* @default "pdf"
|
|
270
|
+
*/
|
|
271
|
+
downloadFormat?: 'pdf' | 'docx' | 'html';
|
|
272
|
+
}
|
|
273
|
+
declare const RegulatoryReportGenerator: React.FC<RegulatoryReportGeneratorProps>;
|
|
274
|
+
|
|
275
|
+
export { BreachCategory, BreachNotificationManager, BreachReport, BreachReportForm, BreachRiskAssessment, RegulatoryNotification, RegulatoryReportGenerator, RiskAssessment };
|