@tantainnovative/ndpr-toolkit 1.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.
Files changed (39) hide show
  1. package/README.md +412 -0
  2. package/dist/components/breach/BreachNotificationManager.d.ts +62 -0
  3. package/dist/components/breach/BreachReportForm.d.ts +66 -0
  4. package/dist/components/breach/BreachRiskAssessment.d.ts +50 -0
  5. package/dist/components/breach/RegulatoryReportGenerator.d.ts +94 -0
  6. package/dist/components/consent/ConsentBanner.d.ts +79 -0
  7. package/dist/components/consent/ConsentManager.d.ts +73 -0
  8. package/dist/components/consent/ConsentStorage.d.ts +41 -0
  9. package/dist/components/dpia/DPIAQuestionnaire.d.ts +70 -0
  10. package/dist/components/dpia/DPIAReport.d.ts +40 -0
  11. package/dist/components/dpia/StepIndicator.d.ts +64 -0
  12. package/dist/components/dsr/DSRDashboard.d.ts +58 -0
  13. package/dist/components/dsr/DSRRequestForm.d.ts +74 -0
  14. package/dist/components/dsr/DSRTracker.d.ts +56 -0
  15. package/dist/components/policy/PolicyExporter.d.ts +65 -0
  16. package/dist/components/policy/PolicyGenerator.d.ts +54 -0
  17. package/dist/components/policy/PolicyPreview.d.ts +71 -0
  18. package/dist/hooks/useBreach.d.ts +97 -0
  19. package/dist/hooks/useConsent.d.ts +63 -0
  20. package/dist/hooks/useDPIA.d.ts +92 -0
  21. package/dist/hooks/useDSR.d.ts +72 -0
  22. package/dist/hooks/usePrivacyPolicy.d.ts +87 -0
  23. package/dist/index.d.ts +31 -0
  24. package/dist/index.esm.js +2 -0
  25. package/dist/index.esm.js.map +1 -0
  26. package/dist/index.js +2 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/setupTests.d.ts +2 -0
  29. package/dist/types/breach.d.ts +239 -0
  30. package/dist/types/consent.d.ts +95 -0
  31. package/dist/types/dpia.d.ts +196 -0
  32. package/dist/types/dsr.d.ts +162 -0
  33. package/dist/types/privacy.d.ts +204 -0
  34. package/dist/utils/breach.d.ts +14 -0
  35. package/dist/utils/consent.d.ts +10 -0
  36. package/dist/utils/dpia.d.ts +12 -0
  37. package/dist/utils/dsr.d.ts +11 -0
  38. package/dist/utils/privacy.d.ts +12 -0
  39. package/package.json +71 -0
package/README.md ADDED
@@ -0,0 +1,412 @@
1
+ # NDPR Toolkit
2
+
3
+ A comprehensive toolkit for implementing NDPR-compliant features in web applications, aligned with the Nigerian Data Protection Regulation (NDPR) and Data Protection Act (DPA).
4
+
5
+ ## Overview
6
+
7
+ The NDPR Toolkit provides a set of React components, hooks, and utilities to help Nigerian businesses implement NDPR-compliant features in their web applications with minimal development effort. This toolkit is designed to be flexible, customizable, and easy to integrate into existing applications.
8
+
9
+ [![npm version](https://img.shields.io/npm/v/ndpr-toolkit.svg)](https://www.npmjs.com/package/ndpr-toolkit)
10
+ [![license](https://img.shields.io/npm/l/ndpr-toolkit.svg)](https://github.com/tantainnovative/ndpr-toolkit/blob/main/LICENSE)
11
+
12
+ > **NDPR Toolkit is actively maintained and regularly updated to ensure compliance with the latest Nigerian data protection regulations.**
13
+
14
+ ## Features
15
+
16
+ - **Consent Management**: Components for collecting, storing, and managing user consent in compliance with NDPR requirements
17
+ - **Data Subject Rights Portal**: Complete system for handling data subject access requests and other rights
18
+ - **DPIA Questionnaire**: Interactive questionnaire for conducting Data Protection Impact Assessments
19
+ - **Breach Notification System**: Comprehensive tools for managing, assessing, and reporting data breaches within required timeframes
20
+ - **Privacy Policy Generator**: Customizable tool for creating NDPR-compliant privacy policies with variable support
21
+
22
+ ### 🆕 Latest Features
23
+
24
+ - **Variable Support in Privacy Policies**: Create dynamic privacy policies with variable placeholders that can be easily updated when your organization information changes
25
+ - **Enhanced DSR Types**: Improved type definitions for Data Subject Requests with standardized enums for request types and statuses
26
+ - **ConsentStorage Component**: A flexible component for handling the storage and retrieval of consent settings with support for multiple storage mechanisms
27
+ - **Comprehensive Documentation**: Detailed API references for all components and utilities
28
+
29
+ ## Installation
30
+
31
+ ```bash
32
+ npm install ndpr-toolkit
33
+ # or
34
+ yarn add ndpr-toolkit
35
+ ```
36
+
37
+ ## Quick Start
38
+
39
+ ### Consent Management
40
+
41
+ ```jsx
42
+ import { ConsentBanner, ConsentManager, ConsentStorage, useConsent } from 'ndpr-toolkit';
43
+
44
+ function MyApp() {
45
+ return (
46
+ <ConsentManager
47
+ options={[
48
+ {
49
+ id: 'necessary',
50
+ label: 'Necessary Cookies',
51
+ description: 'Essential cookies for the website to function.',
52
+ required: true
53
+ },
54
+ {
55
+ id: 'analytics',
56
+ label: 'Analytics Cookies',
57
+ description: 'Cookies that help us understand how you use our website.',
58
+ required: false
59
+ }
60
+ ]}
61
+ storageKey="my-app-consent"
62
+ autoLoad={true}
63
+ autoSave={true}
64
+ >
65
+ <AppContent />
66
+ <ConsentBanner
67
+ position="bottom"
68
+ privacyPolicyUrl="/privacy-policy"
69
+ showPreferences={true}
70
+ onSave={(consents) => console.log('Consent saved:', consents)}
71
+ />
72
+ </ConsentManager>
73
+ );
74
+ }
75
+
76
+ function AppContent() {
77
+ // Use the useConsent hook to manage consent state
78
+ const { consents, hasConsented, updateConsent } = useConsent();
79
+
80
+ // Check if user has given consent for analytics
81
+ if (hasConsented('analytics')) {
82
+ // Initialize analytics
83
+ }
84
+
85
+ return (
86
+ <div>
87
+ {/* Your app content */}
88
+ </div>
89
+ );
90
+ }
91
+ ```
92
+
93
+ ### Privacy Policy Generator
94
+
95
+ ```jsx
96
+ import { PolicyGenerator, PolicyPreview, PolicyExporter, usePrivacyPolicy } from 'ndpr-toolkit';
97
+
98
+ function PrivacyPolicyPage() {
99
+ const { policy, updateVariableValue, generatePolicy } = usePrivacyPolicy();
100
+ const [generatedPolicy, setGeneratedPolicy] = useState(null);
101
+
102
+ // Define your variables
103
+ const variables = {
104
+ organizationName: 'Acme Corporation',
105
+ websiteUrl: 'https://acme.com',
106
+ contactEmail: 'privacy@acme.com',
107
+ lastUpdated: new Date().toLocaleDateString()
108
+ };
109
+
110
+ return (
111
+ <div>
112
+ {!generatedPolicy ? (
113
+ <PolicyGenerator
114
+ templates={[
115
+ {
116
+ id: 'standard',
117
+ name: 'Standard Privacy Policy',
118
+ description: 'A comprehensive privacy policy suitable for most websites and applications.',
119
+ sections: [
120
+ {
121
+ id: 'introduction',
122
+ title: 'Introduction',
123
+ template: 'This Privacy Policy explains how {{organizationName}} collects, uses, and protects your personal data when you visit {{websiteUrl}}.',
124
+ required: true,
125
+ included: true
126
+ },
127
+ // More sections...
128
+ ]
129
+ }
130
+ ]}
131
+ variables={variables}
132
+ onComplete={(data) => {
133
+ // Generate policy with variables
134
+ const result = generatePolicyText(data.sections, variables);
135
+ setGeneratedPolicy({
136
+ title: `Privacy Policy for ${variables.organizationName}`,
137
+ content: result.fullText,
138
+ lastUpdated: new Date()
139
+ });
140
+ }}
141
+ />
142
+ ) : (
143
+ <>
144
+ <PolicyPreview
145
+ policy={generatedPolicy}
146
+ variables={variables}
147
+ onVariableChange={(newVariables) => {
148
+ // Update variables and regenerate policy
149
+ }}
150
+ />
151
+
152
+ <PolicyExporter
153
+ policy={generatedPolicy}
154
+ formats={['html', 'pdf', 'markdown']}
155
+ filename="privacy-policy"
156
+ />
157
+ </>
158
+ )}
159
+ </div>
160
+ );
161
+ }
162
+ ```
163
+
164
+ ## Component Categories
165
+
166
+ ### Consent Management
167
+ - `ConsentBanner`: Cookie consent banner with customizable options
168
+ - `ConsentManager`: Component for managing consent preferences
169
+ - `ConsentStorage`: Storage mechanism for consent settings with support for localStorage, sessionStorage, and cookies
170
+ - `useConsent`: Hook for managing consent state
171
+
172
+ ### Data Subject Rights
173
+ - `DSRRequestForm`: Form for submitting data subject rights requests
174
+ - `DSRDashboard`: Admin dashboard for managing DSR requests
175
+ - `DSRTracker`: Component for tracking the status of DSR requests
176
+ - `useDSR`: Hook for managing DSR state
177
+ - Types: `DSRType`, `DSRStatus`, `DSRRequest` for type-safe implementation
178
+
179
+ ### DPIA (Data Protection Impact Assessment)
180
+ - `DPIAQuestionnaire`: Interactive questionnaire for conducting DPIAs
181
+ - `DPIAReport`: Component for generating DPIA reports
182
+ - `StepIndicator`: Progress indicator for multi-step processes
183
+ - `useDPIA`: Hook for managing DPIA state
184
+ - Types: `DPIAQuestion`, `DPIASection`, `DPIARisk`, `DPIAResult` for structured assessments
185
+
186
+ ### Breach Notification
187
+ - `BreachReportForm`: Form for reporting data breaches
188
+ - `BreachRiskAssessment`: Tool for assessing breach risk and severity
189
+ - `BreachNotificationManager`: Component for managing breach notifications
190
+ - `RegulatoryReportGenerator`: Tool for generating regulatory reports for NITDA
191
+ - `useBreach`: Hook for managing breach notification state
192
+ - Types: `BreachReport`, `RiskAssessment`, `NotificationRequirement` for compliance with 72-hour notification requirements
193
+
194
+ ### Privacy Policy
195
+ - `PolicyGenerator`: Component for generating privacy policies
196
+ - `PolicyPreview`: Preview component for privacy policies
197
+ - `PolicyExporter`: Tool for exporting privacy policies to different formats
198
+ - `generatePolicyText`: Utility for creating dynamic policies with variable support
199
+ - `usePrivacyPolicy`: Hook for managing privacy policy state
200
+
201
+ ## Implementation Guides
202
+
203
+ ### Setting Up Consent Management
204
+
205
+ ```jsx
206
+ // 1. Wrap your application with ConsentManager
207
+ import { ConsentManager } from 'ndpr-toolkit';
208
+
209
+ function App() {
210
+ return (
211
+ <ConsentManager
212
+ options={[
213
+ { id: 'necessary', label: 'Necessary', description: '...', required: true },
214
+ { id: 'analytics', label: 'Analytics', description: '...', required: false },
215
+ { id: 'marketing', label: 'Marketing', description: '...', required: false }
216
+ ]}
217
+ storageKey="my-app-consent"
218
+ autoLoad={true}
219
+ autoSave={true}
220
+ >
221
+ <YourApp />
222
+ </ConsentManager>
223
+ );
224
+ }
225
+
226
+ // 2. Add the ConsentBanner to your layout
227
+ import { ConsentBanner } from 'ndpr-toolkit';
228
+
229
+ function Layout({ children }) {
230
+ return (
231
+ <>
232
+ {children}
233
+ <ConsentBanner
234
+ position="bottom"
235
+ privacyPolicyUrl="/privacy-policy"
236
+ showPreferences={true}
237
+ />
238
+ </>
239
+ );
240
+ }
241
+
242
+ // 3. Use the consent values in your components
243
+ import { useConsent } from 'ndpr-toolkit';
244
+
245
+ function AnalyticsComponent() {
246
+ const { hasConsented } = useConsent();
247
+
248
+ useEffect(() => {
249
+ if (hasConsented('analytics')) {
250
+ // Initialize analytics
251
+ }
252
+ }, [hasConsented]);
253
+
254
+ return null;
255
+ }
256
+ ```
257
+
258
+ ### Implementing a Data Subject Rights Portal
259
+
260
+ ```jsx
261
+ import { DSRRequestForm, useDSR } from 'ndpr-toolkit';
262
+
263
+ // 1. Create a form for data subjects to submit requests
264
+ function DSRPortal() {
265
+ const { submitRequest } = useDSR();
266
+
267
+ const handleSubmit = (formData) => {
268
+ const request = submitRequest({
269
+ type: formData.type,
270
+ subject: {
271
+ name: formData.name,
272
+ email: formData.email,
273
+ phone: formData.phone
274
+ },
275
+ details: formData.details
276
+ });
277
+
278
+ // Show confirmation with tracking ID
279
+ alert(`Your request has been submitted. Your tracking ID is: ${request.id}`);
280
+ };
281
+
282
+ return (
283
+ <DSRRequestForm
284
+ onSubmit={handleSubmit}
285
+ requestTypes={[
286
+ { id: 'access', label: 'Access my data' },
287
+ { id: 'rectification', label: 'Correct my data' },
288
+ { id: 'erasure', label: 'Delete my data' },
289
+ { id: 'restriction', label: 'Restrict processing of my data' },
290
+ { id: 'portability', label: 'Data portability' },
291
+ { id: 'objection', label: 'Object to processing' }
292
+ ]}
293
+ />
294
+ );
295
+ }
296
+
297
+ // 2. Create an admin dashboard for managing requests
298
+ import { DSRDashboard } from 'ndpr-toolkit';
299
+
300
+ function AdminDashboard() {
301
+ const { requests, updateRequest, deleteRequest } = useDSR();
302
+
303
+ return (
304
+ <DSRDashboard
305
+ requests={requests}
306
+ onUpdateRequest={updateRequest}
307
+ onDeleteRequest={deleteRequest}
308
+ />
309
+ );
310
+ }
311
+ ```
312
+
313
+ ### Setting Up a Breach Notification System
314
+
315
+ ```jsx
316
+ import { BreachReportForm, BreachRiskAssessment, useBreach } from 'ndpr-toolkit';
317
+
318
+ // 1. Create a form for reporting breaches
319
+ function BreachReporting() {
320
+ const { submitBreachReport } = useBreach();
321
+
322
+ const handleSubmit = (formData) => {
323
+ const report = submitBreachReport({
324
+ title: formData.title,
325
+ description: formData.description,
326
+ category: formData.category,
327
+ discoveredAt: Date.now(),
328
+ reporter: {
329
+ name: formData.reporterName,
330
+ email: formData.reporterEmail,
331
+ department: formData.department
332
+ },
333
+ affectedSystems: formData.systems,
334
+ dataTypes: formData.dataTypes,
335
+ status: 'ongoing'
336
+ });
337
+
338
+ // Redirect to risk assessment
339
+ navigate(`/breach/${report.id}/assess`);
340
+ };
341
+
342
+ return (
343
+ <BreachReportForm
344
+ onSubmit={handleSubmit}
345
+ categories={[
346
+ { id: 'unauthorized-access', label: 'Unauthorized Access' },
347
+ { id: 'data-loss', label: 'Data Loss' },
348
+ { id: 'system-compromise', label: 'System Compromise' }
349
+ ]}
350
+ />
351
+ );
352
+ }
353
+
354
+ // 2. Create a risk assessment component
355
+ function RiskAssessment({ breachId }) {
356
+ const { performRiskAssessment, determineNotificationRequirements } = useBreach();
357
+
358
+ const handleAssessment = (assessmentData) => {
359
+ const assessment = performRiskAssessment({
360
+ breachId,
361
+ assessor: {
362
+ name: 'Jane Smith',
363
+ role: 'Data Protection Officer',
364
+ email: 'jane@example.com'
365
+ },
366
+ ...assessmentData
367
+ });
368
+
369
+ const requirements = determineNotificationRequirements({
370
+ breachId,
371
+ riskAssessmentId: assessment.id
372
+ });
373
+
374
+ // Show notification requirements
375
+ if (requirements.nitdaNotificationRequired) {
376
+ // Deadline is 72 hours from discovery
377
+ const deadline = new Date(requirements.nitdaNotificationDeadline);
378
+ alert(`NITDA notification required by ${deadline.toLocaleString()}`);
379
+ }
380
+ };
381
+
382
+ return (
383
+ <BreachRiskAssessment
384
+ breachId={breachId}
385
+ onComplete={handleAssessment}
386
+ />
387
+ );
388
+ }
389
+ ```
390
+
391
+ ## Documentation
392
+
393
+ For detailed documentation, visit [https://ndpr-toolkit.tantainnovative.com/docs](https://ndpr-toolkit.tantainnovative.com/docs)
394
+
395
+ ### API Reference
396
+
397
+ Detailed API documentation is available for all components:
398
+
399
+ - [Consent Management](https://ndpr-toolkit.tantainnovative.com/docs/components/consent-management)
400
+ - [Data Subject Rights](https://ndpr-toolkit.tantainnovative.com/docs/components/data-subject-rights)
401
+ - [DPIA Questionnaire](https://ndpr-toolkit.tantainnovative.com/docs/components/dpia-questionnaire)
402
+ - [Breach Notification](https://ndpr-toolkit.tantainnovative.com/docs/components/breach-notification)
403
+ - [Privacy Policy Generator](https://ndpr-toolkit.tantainnovative.com/docs/components/privacy-policy-generator)
404
+ - [React Hooks](https://ndpr-toolkit.tantainnovative.com/docs/components/hooks)
405
+
406
+ ## Contributing
407
+
408
+ Contributions are welcome! Please feel free to submit a Pull Request.
409
+
410
+ ## License
411
+
412
+ MIT © Tanta Innovative
@@ -0,0 +1,62 @@
1
+ import React from 'react';
2
+ import { BreachReport, RiskAssessment, RegulatoryNotification } from '../../types/breach';
3
+ export interface BreachNotificationManagerProps {
4
+ /**
5
+ * List of breach reports to manage
6
+ */
7
+ breachReports: BreachReport[];
8
+ /**
9
+ * List of risk assessments
10
+ */
11
+ riskAssessments: RiskAssessment[];
12
+ /**
13
+ * List of regulatory notifications
14
+ */
15
+ regulatoryNotifications: RegulatoryNotification[];
16
+ /**
17
+ * Callback function called when a breach is selected
18
+ */
19
+ onSelectBreach?: (breachId: string) => void;
20
+ /**
21
+ * Callback function called when a risk assessment is requested
22
+ */
23
+ onRequestAssessment?: (breachId: string) => void;
24
+ /**
25
+ * Callback function called when a notification is requested
26
+ */
27
+ onRequestNotification?: (breachId: string) => void;
28
+ /**
29
+ * Title displayed on the manager
30
+ * @default "Breach Notification Manager"
31
+ */
32
+ title?: string;
33
+ /**
34
+ * Description text displayed on the manager
35
+ * @default "Manage data breach notifications and track compliance with NDPR requirements."
36
+ */
37
+ description?: string;
38
+ /**
39
+ * Custom CSS class for the manager
40
+ */
41
+ className?: string;
42
+ /**
43
+ * Custom CSS class for the buttons
44
+ */
45
+ buttonClassName?: string;
46
+ /**
47
+ * Whether to show the breach details
48
+ * @default true
49
+ */
50
+ showBreachDetails?: boolean;
51
+ /**
52
+ * Whether to show the notification timeline
53
+ * @default true
54
+ */
55
+ showNotificationTimeline?: boolean;
56
+ /**
57
+ * Whether to show the deadline alerts
58
+ * @default true
59
+ */
60
+ showDeadlineAlerts?: boolean;
61
+ }
62
+ export declare const BreachNotificationManager: React.FC<BreachNotificationManagerProps>;
@@ -0,0 +1,66 @@
1
+ import React from 'react';
2
+ import { BreachCategory } from '../../types/breach';
3
+ export interface BreachReportFormProps {
4
+ /**
5
+ * Available breach categories
6
+ */
7
+ categories: BreachCategory[];
8
+ /**
9
+ * Callback function called when form is submitted
10
+ */
11
+ onSubmit: (formData: any) => void;
12
+ /**
13
+ * Title displayed on the form
14
+ * @default "Report a Data Breach"
15
+ */
16
+ title?: string;
17
+ /**
18
+ * Description text displayed on the form
19
+ * @default "Use this form to report a suspected or confirmed data breach. All fields marked with * are required."
20
+ */
21
+ formDescription?: string;
22
+ /**
23
+ * Text for the submit button
24
+ * @default "Submit Report"
25
+ */
26
+ submitButtonText?: string;
27
+ /**
28
+ * Custom CSS class for the form
29
+ */
30
+ className?: string;
31
+ /**
32
+ * Custom CSS class for the submit button
33
+ */
34
+ buttonClassName?: string;
35
+ /**
36
+ * Whether to show a confirmation message after submission
37
+ * @default true
38
+ */
39
+ showConfirmation?: boolean;
40
+ /**
41
+ * Confirmation message to display after submission
42
+ * @default "Your breach report has been submitted successfully. The data protection team has been notified."
43
+ */
44
+ confirmationMessage?: string;
45
+ /**
46
+ * Whether to allow file attachments
47
+ * @default true
48
+ */
49
+ allowAttachments?: boolean;
50
+ /**
51
+ * Maximum number of attachments allowed
52
+ * @default 5
53
+ */
54
+ maxAttachments?: number;
55
+ /**
56
+ * Maximum file size for attachments (in bytes)
57
+ * @default 5242880 (5MB)
58
+ */
59
+ maxFileSize?: number;
60
+ /**
61
+ * Allowed file types for attachments
62
+ * @default ['.pdf', '.jpg', '.jpeg', '.png', '.doc', '.docx', '.xls', '.xlsx', '.txt']
63
+ */
64
+ allowedFileTypes?: string[];
65
+ }
66
+ export declare const BreachReportForm: React.FC<BreachReportFormProps>;
@@ -0,0 +1,50 @@
1
+ import React from 'react';
2
+ import { BreachReport, RiskAssessment } from '../../types/breach';
3
+ export interface BreachRiskAssessmentProps {
4
+ /**
5
+ * The breach data to assess
6
+ */
7
+ breachData: BreachReport;
8
+ /**
9
+ * Initial assessment data (if editing an existing assessment)
10
+ */
11
+ initialAssessment?: Partial<RiskAssessment>;
12
+ /**
13
+ * Callback function called when assessment is completed
14
+ */
15
+ onComplete: (assessment: RiskAssessment) => void;
16
+ /**
17
+ * Title displayed on the assessment form
18
+ * @default "Breach Risk Assessment"
19
+ */
20
+ title?: string;
21
+ /**
22
+ * Description text displayed on the assessment form
23
+ * @default "Assess the risk level of this data breach to determine notification requirements."
24
+ */
25
+ description?: string;
26
+ /**
27
+ * Text for the submit button
28
+ * @default "Complete Assessment"
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 the breach summary
41
+ * @default true
42
+ */
43
+ showBreachSummary?: boolean;
44
+ /**
45
+ * Whether to show notification requirements after assessment
46
+ * @default true
47
+ */
48
+ showNotificationRequirements?: boolean;
49
+ }
50
+ export declare const BreachRiskAssessment: React.FC<BreachRiskAssessmentProps>;
@@ -0,0 +1,94 @@
1
+ import React from 'react';
2
+ import { BreachReport, RiskAssessment, RegulatoryNotification } from '../../types/breach';
3
+ export interface OrganizationInfo {
4
+ /**
5
+ * Name of the organization
6
+ */
7
+ name: string;
8
+ /**
9
+ * Registration number or business ID
10
+ */
11
+ registrationNumber?: string;
12
+ /**
13
+ * Physical address of the organization
14
+ */
15
+ address: string;
16
+ /**
17
+ * Website URL
18
+ */
19
+ website?: string;
20
+ /**
21
+ * Name of the Data Protection Officer
22
+ */
23
+ dpoName: string;
24
+ /**
25
+ * Email of the Data Protection Officer
26
+ */
27
+ dpoEmail: string;
28
+ /**
29
+ * Phone number of the Data Protection Officer
30
+ */
31
+ dpoPhone?: string;
32
+ }
33
+ export interface RegulatoryReportGeneratorProps {
34
+ /**
35
+ * The breach data to include in the report
36
+ */
37
+ breachData: BreachReport;
38
+ /**
39
+ * The risk assessment data
40
+ */
41
+ assessmentData?: RiskAssessment;
42
+ /**
43
+ * Organization information to include in the report
44
+ */
45
+ organizationInfo: OrganizationInfo;
46
+ /**
47
+ * Callback function called when the report is generated
48
+ */
49
+ onGenerate: (report: RegulatoryNotification) => void;
50
+ /**
51
+ * Title displayed on the generator form
52
+ * @default "Generate NITDA Notification Report"
53
+ */
54
+ title?: string;
55
+ /**
56
+ * Description text displayed on the generator form
57
+ * @default "Generate a report for submission to NITDA in compliance with the NDPR breach notification requirements."
58
+ */
59
+ description?: string;
60
+ /**
61
+ * Text for the generate button
62
+ * @default "Generate Report"
63
+ */
64
+ generateButtonText?: string;
65
+ /**
66
+ * Custom CSS class for the form
67
+ */
68
+ className?: string;
69
+ /**
70
+ * Custom CSS class for the buttons
71
+ */
72
+ buttonClassName?: string;
73
+ /**
74
+ * Whether to show a preview of the generated report
75
+ * @default true
76
+ */
77
+ showPreview?: boolean;
78
+ /**
79
+ * Whether to allow editing the report content
80
+ * @default true
81
+ */
82
+ allowEditing?: boolean;
83
+ /**
84
+ * Whether to allow downloading the report
85
+ * @default true
86
+ */
87
+ allowDownload?: boolean;
88
+ /**
89
+ * Format for downloading the report
90
+ * @default "pdf"
91
+ */
92
+ downloadFormat?: 'pdf' | 'docx' | 'html';
93
+ }
94
+ export declare const RegulatoryReportGenerator: React.FC<RegulatoryReportGeneratorProps>;