@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.
Files changed (218) hide show
  1. package/README.md +295 -124
  2. package/dist/breach-BpSBPrdk.d.mts +185 -0
  3. package/dist/breach-BpSBPrdk.d.ts +185 -0
  4. package/dist/breach-D5zJYNph.d.mts +17 -0
  5. package/dist/breach-D7NgrdMX.d.ts +17 -0
  6. package/dist/breach.d.mts +275 -0
  7. package/dist/breach.d.ts +275 -0
  8. package/dist/breach.js +2 -0
  9. package/dist/breach.js.map +1 -0
  10. package/dist/breach.mjs +2 -0
  11. package/dist/breach.mjs.map +1 -0
  12. package/dist/chunk-2SYNHRP6.mjs +2 -0
  13. package/dist/chunk-2SYNHRP6.mjs.map +1 -0
  14. package/dist/chunk-2XHD22J7.mjs +7 -0
  15. package/dist/chunk-2XHD22J7.mjs.map +1 -0
  16. package/dist/chunk-4A354HL3.js +2 -0
  17. package/dist/chunk-4A354HL3.js.map +1 -0
  18. package/dist/chunk-4DKT6IB6.js +94 -0
  19. package/dist/chunk-4DKT6IB6.js.map +1 -0
  20. package/dist/chunk-5ZBO2UPH.js +2 -0
  21. package/dist/chunk-5ZBO2UPH.js.map +1 -0
  22. package/dist/chunk-6JFTAYXV.mjs +2 -0
  23. package/dist/chunk-6JFTAYXV.mjs.map +1 -0
  24. package/dist/chunk-6JVYYLS7.js +2 -0
  25. package/dist/chunk-6JVYYLS7.js.map +1 -0
  26. package/dist/chunk-6SGG6WPA.mjs +2 -0
  27. package/dist/chunk-6SGG6WPA.mjs.map +1 -0
  28. package/dist/chunk-AQEGDEQM.js +7 -0
  29. package/dist/chunk-AQEGDEQM.js.map +1 -0
  30. package/dist/chunk-C2IJWCZQ.mjs +2 -0
  31. package/dist/chunk-C2IJWCZQ.mjs.map +1 -0
  32. package/dist/chunk-CMZTI7SG.js +2 -0
  33. package/dist/chunk-CMZTI7SG.js.map +1 -0
  34. package/dist/chunk-DB3JH4DS.mjs +2 -0
  35. package/dist/chunk-DB3JH4DS.mjs.map +1 -0
  36. package/dist/chunk-EWOZKYLY.mjs +2 -0
  37. package/dist/chunk-EWOZKYLY.mjs.map +1 -0
  38. package/dist/chunk-FFW7RUAG.mjs +94 -0
  39. package/dist/chunk-FFW7RUAG.mjs.map +1 -0
  40. package/dist/chunk-FK3CSFLJ.js +2 -0
  41. package/dist/chunk-FK3CSFLJ.js.map +1 -0
  42. package/dist/chunk-GIV2OHE6.mjs +2 -0
  43. package/dist/chunk-GIV2OHE6.mjs.map +1 -0
  44. package/dist/chunk-GMLNWS2N.mjs +2 -0
  45. package/dist/chunk-GMLNWS2N.mjs.map +1 -0
  46. package/dist/chunk-IQF726GS.js +2 -0
  47. package/dist/chunk-IQF726GS.js.map +1 -0
  48. package/dist/chunk-IWUUVRLJ.js +2 -0
  49. package/dist/chunk-IWUUVRLJ.js.map +1 -0
  50. package/dist/chunk-JUN6YPLL.mjs +72 -0
  51. package/dist/chunk-JUN6YPLL.mjs.map +1 -0
  52. package/dist/chunk-L3FKTBGV.js +72 -0
  53. package/dist/chunk-L3FKTBGV.js.map +1 -0
  54. package/dist/chunk-L52PDW6O.mjs +2 -0
  55. package/dist/chunk-L52PDW6O.mjs.map +1 -0
  56. package/dist/chunk-LI6WJ3LZ.js +2 -0
  57. package/dist/chunk-LI6WJ3LZ.js.map +1 -0
  58. package/dist/chunk-LXRXDTPI.js +2 -0
  59. package/dist/chunk-LXRXDTPI.js.map +1 -0
  60. package/dist/chunk-MQFZHA2D.js +2 -0
  61. package/dist/chunk-MQFZHA2D.js.map +1 -0
  62. package/dist/chunk-OITITR6K.mjs +2 -0
  63. package/dist/chunk-OITITR6K.mjs.map +1 -0
  64. package/dist/chunk-PDJGTQMY.mjs +2 -0
  65. package/dist/chunk-PDJGTQMY.mjs.map +1 -0
  66. package/dist/chunk-PGSA2O5P.mjs +2 -0
  67. package/dist/chunk-PGSA2O5P.mjs.map +1 -0
  68. package/dist/chunk-PM7CMTMB.js +4 -0
  69. package/dist/chunk-PM7CMTMB.js.map +1 -0
  70. package/dist/chunk-PYEX7DFR.mjs +4 -0
  71. package/dist/chunk-PYEX7DFR.mjs.map +1 -0
  72. package/dist/chunk-QKK5S54L.mjs +2 -0
  73. package/dist/chunk-QKK5S54L.mjs.map +1 -0
  74. package/dist/chunk-RB26MIRI.js +2 -0
  75. package/dist/chunk-RB26MIRI.js.map +1 -0
  76. package/dist/chunk-RGYK4VAY.mjs +2 -0
  77. package/dist/chunk-RGYK4VAY.mjs.map +1 -0
  78. package/dist/chunk-RHWW5FDP.js +16 -0
  79. package/dist/chunk-RHWW5FDP.js.map +1 -0
  80. package/dist/chunk-RYZEIDNR.js +2 -0
  81. package/dist/chunk-RYZEIDNR.js.map +1 -0
  82. package/dist/chunk-SLNMKGQ2.mjs +2 -0
  83. package/dist/chunk-SLNMKGQ2.mjs.map +1 -0
  84. package/dist/chunk-SSGJREE3.js +2 -0
  85. package/dist/chunk-SSGJREE3.js.map +1 -0
  86. package/dist/chunk-SWF3YVE5.js +4 -0
  87. package/dist/chunk-SWF3YVE5.js.map +1 -0
  88. package/dist/chunk-T44JQT2O.mjs +2 -0
  89. package/dist/chunk-T44JQT2O.mjs.map +1 -0
  90. package/dist/chunk-TDDAYVKK.js +2 -0
  91. package/dist/chunk-TDDAYVKK.js.map +1 -0
  92. package/dist/chunk-TXBZPCGF.mjs +2 -0
  93. package/dist/chunk-TXBZPCGF.mjs.map +1 -0
  94. package/dist/chunk-U2CGMEWB.js +2 -0
  95. package/dist/chunk-U2CGMEWB.js.map +1 -0
  96. package/dist/chunk-UUWVBENC.js +2 -0
  97. package/dist/chunk-UUWVBENC.js.map +1 -0
  98. package/dist/chunk-UYP64PV7.mjs +4 -0
  99. package/dist/chunk-UYP64PV7.mjs.map +1 -0
  100. package/dist/chunk-VMJBW3EF.mjs +2 -0
  101. package/dist/chunk-VMJBW3EF.mjs.map +1 -0
  102. package/dist/chunk-WW3X3ELF.js +2 -0
  103. package/dist/chunk-WW3X3ELF.js.map +1 -0
  104. package/dist/chunk-WWT2ZSNU.mjs +2 -0
  105. package/dist/chunk-WWT2ZSNU.mjs.map +1 -0
  106. package/dist/chunk-XMKA6GVK.mjs +16 -0
  107. package/dist/chunk-XMKA6GVK.mjs.map +1 -0
  108. package/dist/chunk-Y34DQYS7.js +2 -0
  109. package/dist/chunk-Y34DQYS7.js.map +1 -0
  110. package/dist/chunk-ZU73VG3X.js +2 -0
  111. package/dist/chunk-ZU73VG3X.js.map +1 -0
  112. package/dist/consent-CmVzqZUk.d.mts +99 -0
  113. package/dist/consent-CmVzqZUk.d.ts +99 -0
  114. package/dist/consent-DCc5zjXI.d.mts +24 -0
  115. package/dist/consent-DLWb5ota.d.ts +24 -0
  116. package/dist/consent.d.mts +197 -0
  117. package/dist/consent.d.ts +197 -0
  118. package/dist/consent.js +2 -0
  119. package/dist/consent.js.map +1 -0
  120. package/dist/consent.mjs +2 -0
  121. package/dist/consent.mjs.map +1 -0
  122. package/dist/core.d.mts +14 -0
  123. package/dist/core.d.ts +14 -0
  124. package/dist/core.js +2 -0
  125. package/dist/core.js.map +1 -0
  126. package/dist/core.mjs +2 -0
  127. package/dist/core.mjs.map +1 -0
  128. package/dist/cross-border-BrIy1ieh.d.mts +192 -0
  129. package/dist/cross-border-BrIy1ieh.d.ts +192 -0
  130. package/dist/cross-border.d.mts +58 -0
  131. package/dist/cross-border.d.ts +58 -0
  132. package/dist/cross-border.js +2 -0
  133. package/dist/cross-border.js.map +1 -0
  134. package/dist/cross-border.mjs +2 -0
  135. package/dist/cross-border.mjs.map +1 -0
  136. package/dist/dpia-B9ZZJG5a.d.mts +15 -0
  137. package/dist/dpia-fdtTd2DI.d.ts +15 -0
  138. package/dist/dpia-vWfE_9bO.d.mts +137 -0
  139. package/dist/dpia-vWfE_9bO.d.ts +137 -0
  140. package/dist/dpia.d.mts +179 -0
  141. package/dist/dpia.d.ts +179 -0
  142. package/dist/dpia.js +2 -0
  143. package/dist/dpia.js.map +1 -0
  144. package/dist/dpia.mjs +2 -0
  145. package/dist/dpia.mjs.map +1 -0
  146. package/dist/dsr-jq5NUEdz.d.ts +14 -0
  147. package/dist/dsr-pQzQ3H1O.d.mts +128 -0
  148. package/dist/dsr-pQzQ3H1O.d.ts +128 -0
  149. package/dist/dsr-whPkiI0_.d.mts +14 -0
  150. package/dist/dsr.d.mts +192 -0
  151. package/dist/dsr.d.ts +192 -0
  152. package/dist/dsr.js +2 -0
  153. package/dist/dsr.js.map +1 -0
  154. package/dist/dsr.mjs +2 -0
  155. package/dist/dsr.mjs.map +1 -0
  156. package/dist/hooks.d.mts +17 -0
  157. package/dist/hooks.d.ts +17 -0
  158. package/dist/hooks.js +2 -0
  159. package/dist/hooks.js.map +1 -0
  160. package/dist/hooks.mjs +2 -0
  161. package/dist/hooks.mjs.map +1 -0
  162. package/dist/index.d.mts +31 -448
  163. package/dist/index.d.ts +31 -448
  164. package/dist/index.js +1 -190
  165. package/dist/index.js.map +1 -1
  166. package/dist/index.mjs +1 -190
  167. package/dist/index.mjs.map +1 -1
  168. package/dist/lawful-basis-CWtvDG1x.d.mts +112 -0
  169. package/dist/lawful-basis-CWtvDG1x.d.ts +112 -0
  170. package/dist/lawful-basis-D-oXFizg.d.mts +57 -0
  171. package/dist/lawful-basis-v04AhbK2.d.ts +57 -0
  172. package/dist/lawful-basis.d.mts +55 -0
  173. package/dist/lawful-basis.d.ts +55 -0
  174. package/dist/lawful-basis.js +2 -0
  175. package/dist/lawful-basis.js.map +1 -0
  176. package/dist/lawful-basis.mjs +2 -0
  177. package/dist/lawful-basis.mjs.map +1 -0
  178. package/dist/policy.d.mts +195 -0
  179. package/dist/policy.d.ts +195 -0
  180. package/dist/policy.js +2 -0
  181. package/dist/policy.js.map +1 -0
  182. package/dist/policy.mjs +2 -0
  183. package/dist/policy.mjs.map +1 -0
  184. package/dist/privacy-9FcJceMr.d.mts +15 -0
  185. package/dist/privacy-BXz7O2ej.d.ts +15 -0
  186. package/dist/privacy-Ca6te9Ir.d.mts +138 -0
  187. package/dist/privacy-Ca6te9Ir.d.ts +138 -0
  188. package/dist/ropa-BebGfqKQ.d.ts +200 -0
  189. package/dist/ropa-Rb4dsFSz.d.mts +200 -0
  190. package/dist/ropa.d.mts +45 -0
  191. package/dist/ropa.d.ts +45 -0
  192. package/dist/ropa.js +2 -0
  193. package/dist/ropa.js.map +1 -0
  194. package/dist/ropa.mjs +2 -0
  195. package/dist/ropa.mjs.map +1 -0
  196. package/dist/unstyled.d.mts +4 -4
  197. package/dist/unstyled.d.ts +4 -4
  198. package/dist/unstyled.js +1 -1
  199. package/dist/unstyled.js.map +1 -1
  200. package/dist/unstyled.mjs +1 -1
  201. package/dist/unstyled.mjs.map +1 -1
  202. package/dist/useBreach-DRKnexsk.d.mts +99 -0
  203. package/dist/useBreach-DuT0N0K1.d.ts +99 -0
  204. package/dist/useConsent-D0pAfTlb.d.ts +65 -0
  205. package/dist/useConsent-DOt2Njst.d.mts +65 -0
  206. package/dist/useCrossBorderTransfer-D4FQYfFt.d.ts +66 -0
  207. package/dist/useCrossBorderTransfer-TVnY8_UX.d.mts +66 -0
  208. package/dist/useDPIA-DFDHBLSa.d.ts +94 -0
  209. package/dist/useDPIA-FqPofFaV.d.mts +94 -0
  210. package/dist/useDSR-DAqqOBXb.d.ts +74 -0
  211. package/dist/useDSR-OXM5Q9rf.d.mts +74 -0
  212. package/dist/useLawfulBasis-DNQ8YszQ.d.mts +68 -0
  213. package/dist/useLawfulBasis-RILM_xsx.d.ts +68 -0
  214. package/dist/usePrivacyPolicy-CfySfBLS.d.ts +89 -0
  215. package/dist/usePrivacyPolicy-Dit2sFuV.d.mts +89 -0
  216. package/dist/useROPA-Bcs6cRdi.d.ts +64 -0
  217. package/dist/useROPA-nmcSiUYv.d.mts +64 -0
  218. 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 };