@tantainnovative/ndpr-toolkit 1.0.3 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/next-env.d.ts +5 -0
  2. package/package.json +1 -1
  3. package/packages/ndpr-toolkit/dist/components/breach/BreachNotificationManager.d.ts +62 -0
  4. package/packages/ndpr-toolkit/dist/components/breach/BreachReportForm.d.ts +66 -0
  5. package/packages/ndpr-toolkit/dist/components/breach/BreachRiskAssessment.d.ts +50 -0
  6. package/packages/ndpr-toolkit/dist/components/breach/RegulatoryReportGenerator.d.ts +94 -0
  7. package/packages/ndpr-toolkit/dist/components/consent/ConsentBanner.d.ts +79 -0
  8. package/packages/ndpr-toolkit/dist/components/consent/ConsentManager.d.ts +73 -0
  9. package/packages/ndpr-toolkit/dist/components/consent/ConsentStorage.d.ts +41 -0
  10. package/packages/ndpr-toolkit/dist/components/dpia/DPIAQuestionnaire.d.ts +70 -0
  11. package/packages/ndpr-toolkit/dist/components/dpia/DPIAReport.d.ts +40 -0
  12. package/packages/ndpr-toolkit/dist/components/dpia/StepIndicator.d.ts +64 -0
  13. package/packages/ndpr-toolkit/dist/components/dsr/DSRDashboard.d.ts +58 -0
  14. package/packages/ndpr-toolkit/dist/components/dsr/DSRRequestForm.d.ts +74 -0
  15. package/packages/ndpr-toolkit/dist/components/dsr/DSRTracker.d.ts +56 -0
  16. package/packages/ndpr-toolkit/dist/components/policy/PolicyExporter.d.ts +65 -0
  17. package/packages/ndpr-toolkit/dist/components/policy/PolicyGenerator.d.ts +54 -0
  18. package/packages/ndpr-toolkit/dist/components/policy/PolicyPreview.d.ts +71 -0
  19. package/packages/ndpr-toolkit/dist/hooks/useBreach.d.ts +97 -0
  20. package/packages/ndpr-toolkit/dist/hooks/useConsent.d.ts +63 -0
  21. package/packages/ndpr-toolkit/dist/hooks/useDPIA.d.ts +92 -0
  22. package/packages/ndpr-toolkit/dist/hooks/useDSR.d.ts +72 -0
  23. package/packages/ndpr-toolkit/dist/hooks/usePrivacyPolicy.d.ts +87 -0
  24. package/packages/ndpr-toolkit/dist/index.d.ts +31 -0
  25. package/packages/ndpr-toolkit/dist/index.esm.js +2 -0
  26. package/packages/ndpr-toolkit/dist/index.esm.js.map +1 -0
  27. package/packages/ndpr-toolkit/dist/index.js +2 -0
  28. package/packages/ndpr-toolkit/dist/index.js.map +1 -0
  29. package/packages/ndpr-toolkit/dist/setupTests.d.ts +2 -0
  30. package/packages/ndpr-toolkit/dist/types/breach.d.ts +239 -0
  31. package/packages/ndpr-toolkit/dist/types/consent.d.ts +95 -0
  32. package/packages/ndpr-toolkit/dist/types/dpia.d.ts +196 -0
  33. package/packages/ndpr-toolkit/dist/types/dsr.d.ts +162 -0
  34. package/packages/ndpr-toolkit/dist/types/privacy.d.ts +204 -0
  35. package/packages/ndpr-toolkit/dist/utils/breach.d.ts +14 -0
  36. package/packages/ndpr-toolkit/dist/utils/consent.d.ts +10 -0
  37. package/packages/ndpr-toolkit/dist/utils/dpia.d.ts +12 -0
  38. package/packages/ndpr-toolkit/dist/utils/dsr.d.ts +11 -0
  39. package/packages/ndpr-toolkit/dist/utils/privacy.d.ts +12 -0
  40. package/src/components/consent/ConsentBanner.tsx +82 -48
  41. package/src/components/data-subject-rights/DataSubjectRequestForm.tsx +240 -129
  42. package/src/components/dpia/DPIAQuestionnaire.tsx +162 -122
  43. package/src/components/privacy-policy/PolicyGenerator.tsx +5 -5
  44. package/src/components/privacy-policy/steps/CustomSectionsStep.tsx +103 -77
  45. package/src/components/privacy-policy/steps/PolicyPreviewStep.tsx +117 -63
  46. package/src/hooks/useConsent.ts +16 -10
  47. package/src/lib/consentService.ts +44 -37
  48. package/src/lib/dpiaQuestions.ts +139 -99
  49. package/src/lib/requestService.ts +21 -17
  50. package/src/types/index.ts +13 -8
  51. package/.claude/settings.local.json +0 -20
  52. package/.eslintrc.json +0 -10
  53. package/.github/workflows/ci.yml +0 -36
  54. package/.github/workflows/nextjs.yml +0 -104
  55. package/.husky/commit-msg +0 -4
  56. package/.husky/pre-commit +0 -4
  57. package/.lintstagedrc.js +0 -4
  58. package/.nvmrc +0 -1
  59. package/.versionrc +0 -17
  60. package/CLAUDE.md +0 -90
  61. package/commitlint.config.js +0 -36
  62. package/jest.config.js +0 -31
  63. package/jest.setup.js +0 -15
  64. package/packages/ndpr-toolkit/jest.config.js +0 -23
  65. package/packages/ndpr-toolkit/src/__tests__/components/consent/ConsentBanner.test.tsx +0 -119
  66. package/packages/ndpr-toolkit/src/__tests__/components/consent/ConsentManager.test.tsx +0 -122
  67. package/packages/ndpr-toolkit/src/__tests__/components/consent/ConsentStorage.test.tsx +0 -270
  68. package/packages/ndpr-toolkit/src/__tests__/components/dsr/DSRDashboard.test.tsx +0 -199
  69. package/packages/ndpr-toolkit/src/__tests__/components/dsr/DSRRequestForm.test.tsx +0 -224
  70. package/packages/ndpr-toolkit/src/__tests__/components/dsr/DSRTracker.test.tsx +0 -104
  71. package/packages/ndpr-toolkit/src/__tests__/hooks/useConsent.test.tsx +0 -161
  72. package/packages/ndpr-toolkit/src/__tests__/hooks/useDSR.test.tsx +0 -330
  73. package/packages/ndpr-toolkit/src/__tests__/utils/breach.test.ts +0 -149
  74. package/packages/ndpr-toolkit/src/__tests__/utils/consent.test.ts +0 -88
  75. package/packages/ndpr-toolkit/src/__tests__/utils/dpia.test.ts +0 -160
  76. package/packages/ndpr-toolkit/src/__tests__/utils/dsr.test.ts +0 -110
  77. package/packages/ndpr-toolkit/src/__tests__/utils/privacy.test.ts +0 -97
  78. package/src/__tests__/example.test.ts +0 -13
  79. package/src/__tests__/requestService.test.ts +0 -57
  80. package/src/app/docs/components/DocLayout.tsx +0 -267
  81. package/src/app/docs/components/breach-notification/page.tsx +0 -797
  82. package/src/app/docs/components/consent-management/page.tsx +0 -576
  83. package/src/app/docs/components/data-subject-rights/page.tsx +0 -511
  84. package/src/app/docs/components/dpia-questionnaire/layout.tsx +0 -15
  85. package/src/app/docs/components/dpia-questionnaire/metadata.ts +0 -31
  86. package/src/app/docs/components/dpia-questionnaire/page.tsx +0 -666
  87. package/src/app/docs/components/hooks/page.tsx +0 -305
  88. package/src/app/docs/components/page.tsx +0 -84
  89. package/src/app/docs/components/privacy-policy-generator/page.tsx +0 -634
  90. package/src/app/docs/guides/breach-notification-process/components/BestPractices.tsx +0 -123
  91. package/src/app/docs/guides/breach-notification-process/components/ImplementationSteps.tsx +0 -328
  92. package/src/app/docs/guides/breach-notification-process/components/Introduction.tsx +0 -28
  93. package/src/app/docs/guides/breach-notification-process/components/NotificationTimeline.tsx +0 -91
  94. package/src/app/docs/guides/breach-notification-process/components/Resources.tsx +0 -118
  95. package/src/app/docs/guides/breach-notification-process/page.tsx +0 -39
  96. package/src/app/docs/guides/conducting-dpia/page.tsx +0 -593
  97. package/src/app/docs/guides/data-subject-requests/page.tsx +0 -666
  98. package/src/app/docs/guides/managing-consent/page.tsx +0 -738
  99. package/src/app/docs/guides/ndpr-compliance-checklist/components/ComplianceChecklist.tsx +0 -296
  100. package/src/app/docs/guides/ndpr-compliance-checklist/components/ImplementationTools.tsx +0 -145
  101. package/src/app/docs/guides/ndpr-compliance-checklist/components/Introduction.tsx +0 -33
  102. package/src/app/docs/guides/ndpr-compliance-checklist/components/KeyRequirements.tsx +0 -99
  103. package/src/app/docs/guides/ndpr-compliance-checklist/components/Resources.tsx +0 -159
  104. package/src/app/docs/guides/ndpr-compliance-checklist/page.tsx +0 -38
  105. package/src/app/docs/guides/page.tsx +0 -67
  106. package/src/app/docs/layout.tsx +0 -15
  107. package/src/app/docs/metadata.ts +0 -31
  108. package/src/app/docs/page.tsx +0 -572
  109. package/src/components/docs/DocLayout.tsx +0 -289
  110. package/src/components/docs/index.ts +0 -2
@@ -1,123 +0,0 @@
1
- 'use client';
2
-
3
- import { Card, CardContent } from '@/components/ui/Card';
4
-
5
- export default function BestPractices() {
6
- return (
7
- <section id="best-practices" className="mb-8">
8
- <h2 className="text-2xl font-bold mb-4">Best Practices</h2>
9
- <p className="mb-4">
10
- Implementing an effective breach notification process requires more than just the right tools.
11
- Here are some best practices to ensure your process is robust and compliant with the NDPR:
12
- </p>
13
-
14
- <div className="grid grid-cols-1 md:grid-cols-2 gap-6">
15
- <Card>
16
- <CardContent className="p-6">
17
- <h3 className="font-bold text-lg mb-2">Prepare in Advance</h3>
18
- <p className="text-gray-600 dark:text-gray-300 text-sm">
19
- don&apos;t wait for a breach to occur before developing your response plan. Have templates,
20
- procedures, and roles defined in advance so you can respond quickly when a breach happens.
21
- </p>
22
- </CardContent>
23
- </Card>
24
-
25
- <Card>
26
- <CardContent className="p-6">
27
- <h3 className="font-bold text-lg mb-2">Train Your Team</h3>
28
- <p className="text-gray-600 dark:text-gray-300 text-sm">
29
- Ensure that all staff members know how to identify and report a potential data breach.
30
- Conduct regular training sessions and drills to keep the breach response process fresh in everyone&apos;s minds.
31
- </p>
32
- </CardContent>
33
- </Card>
34
-
35
- <Card>
36
- <CardContent className="p-6">
37
- <h3 className="font-bold text-lg mb-2">Document Everything</h3>
38
- <p className="text-gray-600 dark:text-gray-300 text-sm">
39
- Maintain detailed records of all breaches, including those that don&apos;t require notification.
40
- Document the facts of the breach, its effects, and the remedial actions taken. This is a requirement under the NDPR.
41
- </p>
42
- </CardContent>
43
- </Card>
44
-
45
- <Card>
46
- <CardContent className="p-6">
47
- <h3 className="font-bold text-lg mb-2">Establish Clear Criteria</h3>
48
- <p className="text-gray-600 dark:text-gray-300 text-sm">
49
- Develop clear criteria for determining when a breach requires notification to NITDA and/or data subjects.
50
- This helps ensure consistent decision-making and compliance with the NDPR.
51
- </p>
52
- </CardContent>
53
- </Card>
54
-
55
- <Card>
56
- <CardContent className="p-6">
57
- <h3 className="font-bold text-lg mb-2">Involve Legal Counsel</h3>
58
- <p className="text-gray-600 dark:text-gray-300 text-sm">
59
- Involve legal counsel in the development of your breach notification process and in the review of
60
- notifications before they are sent. This helps ensure that your notifications meet legal requirements.
61
- </p>
62
- </CardContent>
63
- </Card>
64
-
65
- <Card>
66
- <CardContent className="p-6">
67
- <h3 className="font-bold text-lg mb-2">Regular Testing</h3>
68
- <p className="text-gray-600 dark:text-gray-300 text-sm">
69
- Regularly test your breach notification process through tabletop exercises or simulations.
70
- This helps identify and address any weaknesses in your process before a real breach occurs.
71
- </p>
72
- </CardContent>
73
- </Card>
74
-
75
- <Card>
76
- <CardContent className="p-6">
77
- <h3 className="font-bold text-lg mb-2">Learn from Incidents</h3>
78
- <p className="text-gray-600 dark:text-gray-300 text-sm">
79
- After each breach, conduct a post-incident review to identify lessons learned and opportunities for improvement.
80
- Update your breach notification process based on these insights.
81
- </p>
82
- </CardContent>
83
- </Card>
84
-
85
- <Card>
86
- <CardContent className="p-6">
87
- <h3 className="font-bold text-lg mb-2">Maintain Contact Information</h3>
88
- <p className="text-gray-600 dark:text-gray-300 text-sm">
89
- Keep up-to-date contact information for NITDA, your Data Protection Officer, legal counsel,
90
- IT security team, and other key stakeholders who need to be involved in the breach response process.
91
- </p>
92
- </CardContent>
93
- </Card>
94
- </div>
95
-
96
- <div className="mt-8 bg-red-50 dark:bg-red-900/20 p-4 rounded-md">
97
- <h3 className="text-red-800 dark:text-red-200 font-bold mb-2">Common Pitfalls to Avoid</h3>
98
- <ul className="list-disc pl-6 text-red-700 dark:text-red-300 text-sm">
99
- <li>
100
- <strong>Delayed Response:</strong> Failing to act quickly once a breach is detected. Remember, the 72-hour clock
101
- starts ticking as soon as you become aware of the breach.
102
- </li>
103
- <li>
104
- <strong>Incomplete Notifications:</strong> Omitting required information from breach notifications, such as the
105
- nature of the breach, likely consequences, or measures taken.
106
- </li>
107
- <li>
108
- <strong>Inadequate Documentation:</strong> Failing to maintain detailed records of the breach and your response,
109
- which are required under the NDPR.
110
- </li>
111
- <li>
112
- <strong>Poor Communication:</strong> Not communicating clearly with affected data subjects about the breach and
113
- what they should do to protect themselves.
114
- </li>
115
- <li>
116
- <strong>Neglecting Follow-up:</strong> Failing to follow up on remedial actions or to provide additional information
117
- to NITDA as it becomes available.
118
- </li>
119
- </ul>
120
- </div>
121
- </section>
122
- );
123
- }
@@ -1,328 +0,0 @@
1
- 'use client';
2
-
3
- export default function ImplementationSteps() {
4
- return (
5
- <section id="implementation-steps" className="mb-8">
6
- <h2 className="text-2xl font-bold mb-4">Implementation Steps</h2>
7
- <p className="mb-4">
8
- Implementing a comprehensive breach notification process involves several key components from the NDPR Toolkit.
9
- Here&apos;s how to set up each part of the process:
10
- </p>
11
-
12
- <div className="space-y-8">
13
- <div>
14
- <h3 className="text-xl font-bold mb-3">1. Breach Detection and Reporting</h3>
15
- <p className="mb-3">
16
- The first step is to implement a system for detecting and reporting potential data breaches. The NDPR Toolkit&apos;s
17
- BreachReportForm component provides a structured way for staff to report suspected breaches.
18
- </p>
19
- <div className="bg-gray-800 text-gray-200 p-4 rounded-md overflow-x-auto">
20
- <pre><code>{`import { BreachReportForm } from '@tantainnovative/ndpr-toolkit';
21
-
22
- function BreachReportingPage() {
23
- const breachCategories = [
24
- { id: 'unauthorized-access', label: 'Unauthorized Access' },
25
- { id: 'data-loss', label: 'Data Loss' },
26
- { id: 'system-compromise', label: 'System Compromise' },
27
- { id: 'phishing', label: 'Phishing Attack' },
28
- { id: 'other', label: 'Other' }
29
- ];
30
-
31
- const handleSubmitReport = (reportData) => {
32
- // Save report to your backend
33
- console.log('Breach report submitted:', reportData);
34
-
35
- // Example: Send to backend API
36
- fetch('/api/breach-reports', {
37
- method: 'POST',
38
- headers: {
39
- 'Content-Type': 'application/json',
40
- },
41
- body: JSON.stringify(reportData),
42
- })
43
- .then(response => response.json())
44
- .then(data => {
45
- // Show confirmation to user with reference number
46
- setBreachId(data.id);
47
- setSubmitted(true);
48
- });
49
- };
50
-
51
- const [submitted, setSubmitted] = useState(false);
52
- const [breachId, setBreachId] = useState(null);
53
-
54
- return (
55
- <div>
56
- <h1>Report a Data Breach</h1>
57
-
58
- {!submitted ? (
59
- <>
60
- <p>
61
- Use this form to report a suspected data breach. All breaches must be
62
- reported internally within 24 hours of discovery.
63
- </p>
64
-
65
- <BreachReportForm
66
- onSubmit={handleSubmitReport}
67
- categories={breachCategories}
68
- />
69
- </>
70
- ) : (
71
- <div>
72
- <h2>Breach Reported</h2>
73
- <p>
74
- The breach has been reported successfully. Reference number: <strong>{breachId}</strong>
75
- </p>
76
- <p>
77
- The breach response team has been notified and will begin investigating immediately.
78
- </p>
79
- </div>
80
- )}
81
- </div>
82
- );
83
- }`}</code></pre>
84
- </div>
85
- </div>
86
-
87
- <div>
88
- <h3 className="text-xl font-bold mb-3">2. Risk Assessment</h3>
89
- <p className="mb-3">
90
- Once a breach is reported, you need to assess the risk to determine if notification is required and to whom.
91
- The BreachRiskAssessment component guides users through this process.
92
- </p>
93
- <div className="bg-gray-800 text-gray-200 p-4 rounded-md overflow-x-auto">
94
- <pre><code>{`import { BreachRiskAssessment } from '@tantainnovative/ndpr-toolkit';
95
-
96
- function RiskAssessmentPage({ breachData }) {
97
- const handleRiskAssessmentComplete = (assessment) => {
98
- // Save assessment to your backend
99
- console.log('Risk assessment completed:', assessment);
100
-
101
- // Example: Update breach record with assessment
102
- fetch(\`/api/breach-reports/\${breachData.id}/assessment\`, {
103
- method: 'POST',
104
- headers: {
105
- 'Content-Type': 'application/json',
106
- },
107
- body: JSON.stringify(assessment),
108
- })
109
- .then(response => response.json())
110
- .then(data => {
111
- // Update UI based on assessment results
112
- setAssessmentComplete(true);
113
- setRequiresNotification(assessment.requiresNitdaNotification);
114
- });
115
- };
116
-
117
- const [assessmentComplete, setAssessmentComplete] = useState(false);
118
- const [requiresNotification, setRequiresNotification] = useState(false);
119
-
120
- return (
121
- <div>
122
- <h1>Breach Risk Assessment</h1>
123
- <p>Breach ID: {breachData.id}</p>
124
-
125
- {!assessmentComplete ? (
126
- <>
127
- <p>
128
- Complete this assessment to determine the risk level of the breach and whether
129
- notification to NITDA and/or data subjects is required.
130
- </p>
131
-
132
- <BreachRiskAssessment
133
- breachData={breachData}
134
- onComplete={handleRiskAssessmentComplete}
135
- />
136
- </>
137
- ) : (
138
- <div>
139
- <h2>Assessment Complete</h2>
140
- {requiresNotification ? (
141
- <p>
142
- This breach requires notification to NITDA within 72 hours. Please proceed
143
- to the notification preparation step.
144
- </p>
145
- ) : (
146
- <p>
147
- Based on the assessment, this breach does not require notification to NITDA.
148
- However, you should still document the breach and the actions taken.
149
- </p>
150
- )}
151
- </div>
152
- )}
153
- </div>
154
- );
155
- }`}</code></pre>
156
- </div>
157
- </div>
158
-
159
- <div>
160
- <h3 className="text-xl font-bold mb-3">3. Notification Management</h3>
161
- <p className="mb-3">
162
- For breaches that require notification, you need a system to manage the notification process.
163
- The BreachNotificationManager component provides a dashboard for tracking notifications.
164
- </p>
165
- <div className="bg-gray-800 text-gray-200 p-4 rounded-md overflow-x-auto">
166
- <pre><code>{`import { BreachNotificationManager } from '@tantainnovative/ndpr-toolkit';
167
-
168
- function NotificationManagementPage() {
169
- const [breaches, setBreaches] = useState([]);
170
-
171
- useEffect(() => {
172
- // Fetch breaches that require notification
173
- fetch('/api/breach-reports?requiresNotification=true')
174
- .then(response => response.json())
175
- .then(data => setBreaches(data));
176
- }, []);
177
-
178
- const handleUpdateStatus = (breachId, status) => {
179
- // Update breach status in your backend
180
- fetch(\`/api/breach-reports/\${breachId}/status\`, {
181
- method: 'PUT',
182
- headers: {
183
- 'Content-Type': 'application/json',
184
- },
185
- body: JSON.stringify({ status }),
186
- })
187
- .then(response => response.json())
188
- .then(data => {
189
- // Update local state
190
- setBreaches(breaches.map(breach =>
191
- breach.id === breachId ? { ...breach, status } : breach
192
- ));
193
- });
194
- };
195
-
196
- const handleSendNotification = (breachId, notification) => {
197
- // Record notification in your backend
198
- fetch(\`/api/breach-reports/\${breachId}/notifications\`, {
199
- method: 'POST',
200
- headers: {
201
- 'Content-Type': 'application/json',
202
- },
203
- body: JSON.stringify(notification),
204
- })
205
- .then(response => response.json())
206
- .then(data => {
207
- // Update local state
208
- setBreaches(breaches.map(breach =>
209
- breach.id === breachId ? {
210
- ...breach,
211
- notifications: [...breach.notifications, data]
212
- } : breach
213
- ));
214
- });
215
- };
216
-
217
- return (
218
- <div>
219
- <h1>Breach Notification Management</h1>
220
-
221
- <BreachNotificationManager
222
- breaches={breaches}
223
- onUpdateStatus={handleUpdateStatus}
224
- onSendNotification={handleSendNotification}
225
- />
226
- </div>
227
- );
228
- }`}</code></pre>
229
- </div>
230
- </div>
231
-
232
- <div>
233
- <h3 className="text-xl font-bold mb-3">4. Regulatory Report Generation</h3>
234
- <p className="mb-3">
235
- For breaches that require notification to NITDA, you need to prepare a formal report.
236
- The RegulatoryReportGenerator component helps create NDPR-compliant breach notification reports.
237
- </p>
238
- <div className="bg-gray-800 text-gray-200 p-4 rounded-md overflow-x-auto">
239
- <pre><code>{`import { RegulatoryReportGenerator } from '@tantainnovative/ndpr-toolkit';
240
-
241
- function ReportGenerationPage({ breachData }) {
242
- const organizationInfo = {
243
- name: 'Example Company Ltd.',
244
- address: '123 Main Street, Lagos, Nigeria',
245
- dpoName: 'John Doe',
246
- dpoEmail: 'dpo@example.com',
247
- dpoPhone: '+234 123 456 7890'
248
- };
249
-
250
- const handleGenerateReport = (report) => {
251
- // Save report to your backend
252
- console.log('Report generated:', report);
253
-
254
- // Example: Save report and update breach record
255
- fetch(\`/api/breach-reports/\${breachData.id}/regulatory-report\`, {
256
- method: 'POST',
257
- headers: {
258
- 'Content-Type': 'application/json',
259
- },
260
- body: JSON.stringify(report),
261
- })
262
- .then(response => response.json())
263
- .then(data => {
264
- // Update UI to show report has been generated
265
- setReportGenerated(true);
266
- });
267
- };
268
-
269
- const [reportGenerated, setReportGenerated] = useState(false);
270
-
271
- return (
272
- <div>
273
- <h1>Generate NITDA Notification Report</h1>
274
- <p>Breach ID: {breachData.id}</p>
275
-
276
- {!reportGenerated ? (
277
- <>
278
- <p>
279
- Generate a NITDA breach notification report for submission. This report must be
280
- submitted within 72 hours of becoming aware of the breach.
281
- </p>
282
-
283
- <RegulatoryReportGenerator
284
- breachData={breachData}
285
- organizationInfo={organizationInfo}
286
- onGenerate={handleGenerateReport}
287
- />
288
- </>
289
- ) : (
290
- <div>
291
- <h2>Report Generated</h2>
292
- <p>
293
- The NITDA notification report has been generated successfully. Please review
294
- the report and submit it to NITDA as soon as possible.
295
- </p>
296
- <button>Download Report</button>
297
- <button>Submit to NITDA</button>
298
- </div>
299
- )}
300
- </div>
301
- );
302
- }`}</code></pre>
303
- </div>
304
- </div>
305
- </div>
306
-
307
- <div className="mt-8">
308
- <h3 className="text-xl font-bold mb-3">Putting It All Together</h3>
309
- <p className="mb-3">
310
- To implement a complete breach notification process, you need to integrate these components into a cohesive workflow.
311
- This typically involves:
312
- </p>
313
- <ul className="list-disc pl-6 mb-4">
314
- <li>Creating a breach response plan that defines roles, responsibilities, and procedures</li>
315
- <li>Implementing the NDPR Toolkit components as part of your breach response system</li>
316
- <li>Setting up automated notifications to alert the breach response team when a breach is reported</li>
317
- <li>Establishing clear escalation paths based on the risk assessment results</li>
318
- <li>Creating templates for common types of notifications to speed up the response process</li>
319
- <li>Regularly testing the breach response process through tabletop exercises or simulations</li>
320
- </ul>
321
- <p>
322
- The NDPR Toolkit provides all the necessary components to implement this workflow, but it&apos;s important to
323
- adapt it to your organization&apos;s specific needs and integrate it with your existing systems.
324
- </p>
325
- </div>
326
- </section>
327
- );
328
- }
@@ -1,28 +0,0 @@
1
-
2
- 'use client';
3
-
4
- export default function Introduction() {
5
- return (
6
- <section id="introduction" className="mb-8">
7
- <h2 className="text-2xl font-bold mb-4">Introduction</h2>
8
- <p className="mb-4">
9
- The Nigeria Data Protection Regulation (NDPR) requires organizations to report certain types of data breaches
10
- to the National Information Technology Development Agency (NITDA) within 72 hours of becoming aware of the breach.
11
- Organizations must also notify affected data subjects without undue delay. This guide will help you implement
12
- a comprehensive breach notification process using the NDPR Toolkit.
13
- </p>
14
- <div className="bg-blue-50 dark:bg-blue-900/20 p-4 rounded-md">
15
- <h4 className="text-blue-800 dark:text-blue-200 font-medium mb-2">NDPR Breach Notification Requirements</h4>
16
- <p className="text-blue-700 dark:text-blue-300 text-sm mb-2">
17
- Under the NDPR, organizations must:
18
- </p>
19
- <ul className="list-disc pl-6 text-blue-700 dark:text-blue-300 text-sm">
20
- <li>Report breaches to NITDA within 72 hours of becoming aware of the breach</li>
21
- <li>Notify affected data subjects without undue delay</li>
22
- <li>Maintain a record of all data breaches, including the facts of the breach, its effects, and remedial actions taken</li>
23
- <li>Include specific information in breach notifications, such as the nature of the breach, contact details of the Data Protection Officer, likely consequences of the breach, and measures taken to address the breach</li>
24
- </ul>
25
- </div>
26
- </section>
27
- );
28
- }
@@ -1,91 +0,0 @@
1
- 'use client';
2
-
3
- export default function NotificationTimeline() {
4
- return (
5
- <section id="notification-timeline" className="mb-8">
6
- <h2 className="text-2xl font-bold mb-4">72-Hour Notification Timeline</h2>
7
- <p className="mb-4">
8
- The 72-hour deadline for notifying NITDA about a data breach begins from the moment you become aware of the breach.
9
- This timeline is tight, so having a well-defined process in place is essential. Here&apos;s a recommended timeline for
10
- handling breaches using the NDPR Toolkit components:
11
- </p>
12
-
13
- <div className="relative border-l-2 border-blue-500 pl-8 pb-8 space-y-10">
14
- <div className="relative">
15
- <div className="absolute -left-10 mt-1.5 h-6 w-6 rounded-full bg-blue-500 flex items-center justify-center">
16
- <span className="text-white font-bold text-sm">1</span>
17
- </div>
18
- <h3 className="text-xl font-bold">Hour 0-4: Initial Response</h3>
19
- <p className="text-gray-600 dark:text-gray-300 mt-2">
20
- As soon as a breach is detected or reported, the initial response should focus on:
21
- </p>
22
- <ul className="list-disc pl-6 mt-2 text-gray-600 dark:text-gray-300">
23
- <li>Documenting the breach using the BreachReportForm component</li>
24
- <li>Assembling the breach response team</li>
25
- <li>Implementing immediate containment measures</li>
26
- <li>Preserving evidence for investigation</li>
27
- <li>Notifying key stakeholders within the organization</li>
28
- </ul>
29
- </div>
30
-
31
- <div className="relative">
32
- <div className="absolute -left-10 mt-1.5 h-6 w-6 rounded-full bg-blue-500 flex items-center justify-center">
33
- <span className="text-white font-bold text-sm">2</span>
34
- </div>
35
- <h3 className="text-xl font-bold">Hour 4-24: Risk Assessment</h3>
36
- <p className="text-gray-600 dark:text-gray-300 mt-2">
37
- Once the initial response is underway, conduct a risk assessment to determine the severity of the breach:
38
- </p>
39
- <ul className="list-disc pl-6 mt-2 text-gray-600 dark:text-gray-300">
40
- <li>Use the BreachRiskAssessment component to evaluate the risk to individuals</li>
41
- <li>Determine if the breach is notifiable to NITDA and affected data subjects</li>
42
- <li>Continue containment and investigation efforts</li>
43
- <li>Begin preparing notification drafts if required</li>
44
- </ul>
45
- </div>
46
-
47
- <div className="relative">
48
- <div className="absolute -left-10 mt-1.5 h-6 w-6 rounded-full bg-blue-500 flex items-center justify-center">
49
- <span className="text-white font-bold text-sm">3</span>
50
- </div>
51
- <h3 className="text-xl font-bold">Hour 24-48: Notification Preparation</h3>
52
- <p className="text-gray-600 dark:text-gray-300 mt-2">
53
- If the breach requires notification, prepare the necessary documents and communications:
54
- </p>
55
- <ul className="list-disc pl-6 mt-2 text-gray-600 dark:text-gray-300">
56
- <li>Use the RegulatoryReportGenerator to prepare the NITDA notification</li>
57
- <li>Draft data subject notifications if required</li>
58
- <li>Have notifications reviewed by legal and management</li>
59
- <li>Continue investigation and remediation efforts</li>
60
- </ul>
61
- </div>
62
-
63
- <div className="relative">
64
- <div className="absolute -left-10 mt-1.5 h-6 w-6 rounded-full bg-blue-500 flex items-center justify-center">
65
- <span className="text-white font-bold text-sm">4</span>
66
- </div>
67
- <h3 className="text-xl font-bold">Hour 48-72: Notification Submission</h3>
68
- <p className="text-gray-600 dark:text-gray-300 mt-2">
69
- In the final phase before the deadline, submit notifications and document the process:
70
- </p>
71
- <ul className="list-disc pl-6 mt-2 text-gray-600 dark:text-gray-300">
72
- <li>Submit the notification to NITDA</li>
73
- <li>Begin notifying affected data subjects if required</li>
74
- <li>Document all notification activities using the BreachNotificationManager</li>
75
- <li>Continue remediation and post-breach activities</li>
76
- </ul>
77
- </div>
78
- </div>
79
-
80
- <div className="bg-yellow-50 dark:bg-yellow-900/20 p-4 rounded-md mt-6">
81
- <h4 className="text-yellow-800 dark:text-yellow-200 font-medium mb-2">Important Note on the 72-Hour Deadline</h4>
82
- <p className="text-yellow-700 dark:text-yellow-300 text-sm">
83
- The 72-hour deadline applies even if you don&apos;t have all the details about the breach. If you can&apos;t provide
84
- complete information within 72 hours, you should still make the initial notification with the information
85
- available and follow up with additional details as they become available. The NDPR Toolkit&apos;s
86
- RegulatoryReportGenerator component supports both initial and supplementary notifications.
87
- </p>
88
- </div>
89
- </section>
90
- );
91
- }