@tantainnovative/ndpr-toolkit 1.0.1 → 1.0.3
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/.claude/settings.local.json +20 -0
- package/.eslintrc.json +10 -0
- package/.github/workflows/ci.yml +36 -0
- package/.github/workflows/nextjs.yml +104 -0
- package/.husky/commit-msg +4 -0
- package/.husky/pre-commit +4 -0
- package/.lintstagedrc.js +4 -0
- package/.nvmrc +1 -0
- package/.versionrc +17 -0
- package/CHANGELOG.md +16 -0
- package/CLAUDE.md +90 -0
- package/CNAME +1 -0
- package/CONTRIBUTING.md +87 -0
- package/README.md +84 -431
- package/RELEASE-NOTES-v1.0.0.md +140 -0
- package/RELEASE-NOTES-v1.0.1.md +69 -0
- package/SECURITY.md +21 -0
- package/commitlint.config.js +36 -0
- package/components.json +21 -0
- package/eslint.config.mjs +16 -0
- package/jest.config.js +31 -0
- package/jest.setup.js +15 -0
- package/next.config.js +15 -0
- package/next.config.ts +62 -0
- package/package.json +70 -52
- package/packages/ndpr-toolkit/README.md +467 -0
- package/packages/ndpr-toolkit/jest.config.js +23 -0
- package/packages/ndpr-toolkit/package-lock.json +8197 -0
- package/packages/ndpr-toolkit/package.json +71 -0
- package/packages/ndpr-toolkit/rollup.config.js +34 -0
- package/packages/ndpr-toolkit/src/__tests__/components/consent/ConsentBanner.test.tsx +119 -0
- package/packages/ndpr-toolkit/src/__tests__/components/consent/ConsentManager.test.tsx +122 -0
- package/packages/ndpr-toolkit/src/__tests__/components/consent/ConsentStorage.test.tsx +270 -0
- package/packages/ndpr-toolkit/src/__tests__/components/dsr/DSRDashboard.test.tsx +199 -0
- package/packages/ndpr-toolkit/src/__tests__/components/dsr/DSRRequestForm.test.tsx +224 -0
- package/packages/ndpr-toolkit/src/__tests__/components/dsr/DSRTracker.test.tsx +104 -0
- package/packages/ndpr-toolkit/src/__tests__/hooks/useConsent.test.tsx +161 -0
- package/packages/ndpr-toolkit/src/__tests__/hooks/useDSR.test.tsx +330 -0
- package/packages/ndpr-toolkit/src/__tests__/utils/breach.test.ts +149 -0
- package/packages/ndpr-toolkit/src/__tests__/utils/consent.test.ts +88 -0
- package/packages/ndpr-toolkit/src/__tests__/utils/dpia.test.ts +160 -0
- package/packages/ndpr-toolkit/src/__tests__/utils/dsr.test.ts +110 -0
- package/packages/ndpr-toolkit/src/__tests__/utils/privacy.test.ts +97 -0
- package/packages/ndpr-toolkit/src/components/breach/BreachNotificationManager.tsx +701 -0
- package/packages/ndpr-toolkit/src/components/breach/BreachReportForm.tsx +631 -0
- package/packages/ndpr-toolkit/src/components/breach/BreachRiskAssessment.tsx +569 -0
- package/packages/ndpr-toolkit/src/components/breach/RegulatoryReportGenerator.tsx +496 -0
- package/packages/ndpr-toolkit/src/components/consent/ConsentBanner.tsx +270 -0
- package/packages/ndpr-toolkit/src/components/consent/ConsentManager.tsx +217 -0
- package/packages/ndpr-toolkit/src/components/consent/ConsentStorage.tsx +206 -0
- package/packages/ndpr-toolkit/src/components/dpia/DPIAQuestionnaire.tsx +342 -0
- package/packages/ndpr-toolkit/src/components/dpia/DPIAReport.tsx +373 -0
- package/packages/ndpr-toolkit/src/components/dpia/StepIndicator.tsx +174 -0
- package/packages/ndpr-toolkit/src/components/dsr/DSRDashboard.tsx +717 -0
- package/packages/ndpr-toolkit/src/components/dsr/DSRRequestForm.tsx +476 -0
- package/packages/ndpr-toolkit/src/components/dsr/DSRTracker.tsx +620 -0
- package/packages/ndpr-toolkit/src/components/policy/PolicyExporter.tsx +541 -0
- package/packages/ndpr-toolkit/src/components/policy/PolicyGenerator.tsx +454 -0
- package/packages/ndpr-toolkit/src/components/policy/PolicyPreview.tsx +333 -0
- package/packages/ndpr-toolkit/src/hooks/useBreach.ts +409 -0
- package/packages/ndpr-toolkit/src/hooks/useConsent.ts +263 -0
- package/packages/ndpr-toolkit/src/hooks/useDPIA.ts +457 -0
- package/packages/ndpr-toolkit/src/hooks/useDSR.ts +236 -0
- package/packages/ndpr-toolkit/src/hooks/usePrivacyPolicy.ts +428 -0
- package/{dist/index.d.ts → packages/ndpr-toolkit/src/index.ts} +14 -1
- package/packages/ndpr-toolkit/src/setupTests.ts +5 -0
- package/packages/ndpr-toolkit/src/types/breach.ts +283 -0
- package/packages/ndpr-toolkit/src/types/consent.ts +111 -0
- package/packages/ndpr-toolkit/src/types/dpia.ts +236 -0
- package/packages/ndpr-toolkit/src/types/dsr.ts +192 -0
- package/packages/ndpr-toolkit/src/types/index.ts +42 -0
- package/packages/ndpr-toolkit/src/types/privacy.ts +246 -0
- package/packages/ndpr-toolkit/src/utils/breach.ts +122 -0
- package/packages/ndpr-toolkit/src/utils/consent.ts +51 -0
- package/packages/ndpr-toolkit/src/utils/dpia.ts +104 -0
- package/packages/ndpr-toolkit/src/utils/dsr.ts +77 -0
- package/packages/ndpr-toolkit/src/utils/privacy.ts +100 -0
- package/packages/ndpr-toolkit/tsconfig.json +23 -0
- package/postcss.config.mjs +5 -0
- package/public/NDPR TOOLKIT.svg +1 -0
- package/public/favicon/android-chrome-192x192.png +0 -0
- package/public/favicon/android-chrome-512x512.png +0 -0
- package/public/favicon/apple-touch-icon.png +0 -0
- package/public/favicon/favicon-16x16.png +0 -0
- package/public/favicon/favicon-32x32.png +0 -0
- package/public/favicon/site.webmanifest +1 -0
- package/public/file.svg +1 -0
- package/public/globe.svg +1 -0
- package/public/ndpr-toolkit-logo.svg +108 -0
- package/public/next.svg +1 -0
- package/public/vercel.svg +1 -0
- package/public/window.svg +1 -0
- package/src/__tests__/example.test.ts +13 -0
- package/src/__tests__/requestService.test.ts +57 -0
- package/src/app/accessibility.css +70 -0
- package/src/app/docs/components/DocLayout.tsx +267 -0
- package/src/app/docs/components/breach-notification/page.tsx +797 -0
- package/src/app/docs/components/consent-management/page.tsx +576 -0
- package/src/app/docs/components/data-subject-rights/page.tsx +511 -0
- package/src/app/docs/components/dpia-questionnaire/layout.tsx +15 -0
- package/src/app/docs/components/dpia-questionnaire/metadata.ts +31 -0
- package/src/app/docs/components/dpia-questionnaire/page.tsx +666 -0
- package/src/app/docs/components/hooks/page.tsx +305 -0
- package/src/app/docs/components/page.tsx +84 -0
- package/src/app/docs/components/privacy-policy-generator/page.tsx +634 -0
- package/src/app/docs/guides/breach-notification-process/components/BestPractices.tsx +123 -0
- package/src/app/docs/guides/breach-notification-process/components/ImplementationSteps.tsx +328 -0
- package/src/app/docs/guides/breach-notification-process/components/Introduction.tsx +28 -0
- package/src/app/docs/guides/breach-notification-process/components/NotificationTimeline.tsx +91 -0
- package/src/app/docs/guides/breach-notification-process/components/Resources.tsx +118 -0
- package/src/app/docs/guides/breach-notification-process/page.tsx +39 -0
- package/src/app/docs/guides/conducting-dpia/page.tsx +593 -0
- package/src/app/docs/guides/data-subject-requests/page.tsx +666 -0
- package/src/app/docs/guides/managing-consent/page.tsx +738 -0
- package/src/app/docs/guides/ndpr-compliance-checklist/components/ComplianceChecklist.tsx +296 -0
- package/src/app/docs/guides/ndpr-compliance-checklist/components/ImplementationTools.tsx +145 -0
- package/src/app/docs/guides/ndpr-compliance-checklist/components/Introduction.tsx +33 -0
- package/src/app/docs/guides/ndpr-compliance-checklist/components/KeyRequirements.tsx +99 -0
- package/src/app/docs/guides/ndpr-compliance-checklist/components/Resources.tsx +159 -0
- package/src/app/docs/guides/ndpr-compliance-checklist/page.tsx +38 -0
- package/src/app/docs/guides/page.tsx +67 -0
- package/src/app/docs/layout.tsx +15 -0
- package/src/app/docs/metadata.ts +31 -0
- package/src/app/docs/page.tsx +572 -0
- package/src/app/favicon.ico +0 -0
- package/src/app/globals.css +123 -0
- package/src/app/layout.tsx +37 -0
- package/src/app/ndpr-demos/breach/page.tsx +354 -0
- package/src/app/ndpr-demos/consent/page.tsx +366 -0
- package/src/app/ndpr-demos/dpia/page.tsx +495 -0
- package/src/app/ndpr-demos/dsr/page.tsx +280 -0
- package/src/app/ndpr-demos/page.tsx +73 -0
- package/src/app/ndpr-demos/policy/page.tsx +771 -0
- package/src/app/page.tsx +452 -0
- package/src/components/ErrorBoundary.tsx +90 -0
- package/src/components/breach-notification/BreachNotificationForm.tsx +479 -0
- package/src/components/consent/ConsentBanner.tsx +159 -0
- package/src/components/data-subject-rights/DataSubjectRequestForm.tsx +419 -0
- package/src/components/docs/DocLayout.tsx +289 -0
- package/src/components/docs/index.ts +2 -0
- package/src/components/dpia/DPIAQuestionnaire.tsx +483 -0
- package/src/components/privacy-policy/PolicyGenerator.tsx +1062 -0
- package/src/components/privacy-policy/data.ts +98 -0
- package/src/components/privacy-policy/shared/CheckboxField.tsx +38 -0
- package/src/components/privacy-policy/shared/CheckboxGroup.tsx +85 -0
- package/src/components/privacy-policy/shared/FormField.tsx +79 -0
- package/src/components/privacy-policy/shared/StepIndicator.tsx +86 -0
- package/src/components/privacy-policy/steps/CustomSectionsStep.tsx +335 -0
- package/src/components/privacy-policy/steps/DataCollectionStep.tsx +231 -0
- package/src/components/privacy-policy/steps/DataSharingStep.tsx +418 -0
- package/src/components/privacy-policy/steps/OrganizationInfoStep.tsx +202 -0
- package/src/components/privacy-policy/steps/PolicyPreviewStep.tsx +172 -0
- package/src/components/ui/Badge.tsx +46 -0
- package/src/components/ui/Button.tsx +59 -0
- package/src/components/ui/Card.tsx +92 -0
- package/src/components/ui/Checkbox.tsx +57 -0
- package/src/components/ui/FormField.tsx +50 -0
- package/src/components/ui/Input.tsx +38 -0
- package/src/components/ui/Loading.tsx +201 -0
- package/src/components/ui/Select.tsx +42 -0
- package/src/components/ui/TextArea.tsx +38 -0
- package/src/components/ui/label.tsx +24 -0
- package/src/components/ui/switch.tsx +31 -0
- package/src/components/ui/tabs.tsx +66 -0
- package/src/hooks/useConsent.ts +64 -0
- package/src/hooks/useLoadingState.ts +85 -0
- package/src/lib/consentService.ts +137 -0
- package/src/lib/dpiaQuestions.ts +148 -0
- package/src/lib/requestService.ts +75 -0
- package/src/lib/sanitize.ts +108 -0
- package/src/lib/storage.ts +222 -0
- package/src/lib/utils.ts +6 -0
- package/src/types/html-to-docx.d.ts +30 -0
- package/src/types/index.ts +72 -0
- package/tailwind.config.ts +65 -0
- package/tsconfig.json +41 -0
- package/dist/components/breach/BreachNotificationManager.d.ts +0 -62
- package/dist/components/breach/BreachReportForm.d.ts +0 -66
- package/dist/components/breach/BreachRiskAssessment.d.ts +0 -50
- package/dist/components/breach/RegulatoryReportGenerator.d.ts +0 -94
- package/dist/components/consent/ConsentBanner.d.ts +0 -79
- package/dist/components/consent/ConsentManager.d.ts +0 -73
- package/dist/components/consent/ConsentStorage.d.ts +0 -41
- package/dist/components/dpia/DPIAQuestionnaire.d.ts +0 -70
- package/dist/components/dpia/DPIAReport.d.ts +0 -40
- package/dist/components/dpia/StepIndicator.d.ts +0 -64
- package/dist/components/dsr/DSRDashboard.d.ts +0 -58
- package/dist/components/dsr/DSRRequestForm.d.ts +0 -74
- package/dist/components/dsr/DSRTracker.d.ts +0 -56
- package/dist/components/policy/PolicyExporter.d.ts +0 -65
- package/dist/components/policy/PolicyGenerator.d.ts +0 -54
- package/dist/components/policy/PolicyPreview.d.ts +0 -71
- package/dist/hooks/useBreach.d.ts +0 -97
- package/dist/hooks/useConsent.d.ts +0 -63
- package/dist/hooks/useDPIA.d.ts +0 -92
- package/dist/hooks/useDSR.d.ts +0 -72
- package/dist/hooks/usePrivacyPolicy.d.ts +0 -87
- package/dist/index.esm.js +0 -2
- package/dist/index.esm.js.map +0 -1
- package/dist/index.js +0 -2
- package/dist/index.js.map +0 -1
- package/dist/setupTests.d.ts +0 -2
- package/dist/types/breach.d.ts +0 -239
- package/dist/types/consent.d.ts +0 -95
- package/dist/types/dpia.d.ts +0 -196
- package/dist/types/dsr.d.ts +0 -162
- package/dist/types/privacy.d.ts +0 -204
- package/dist/utils/breach.d.ts +0 -14
- package/dist/utils/consent.d.ts +0 -10
- package/dist/utils/dpia.d.ts +0 -12
- package/dist/utils/dsr.d.ts +0 -11
- package/dist/utils/privacy.d.ts +0 -12
|
@@ -0,0 +1,572 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import Link from 'next/link';
|
|
4
|
+
import { DocLayout } from '@/components/docs/DocLayout';
|
|
5
|
+
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/Card';
|
|
6
|
+
import { Button } from '@/components/ui/Button';
|
|
7
|
+
import { Badge } from '@/components/ui/Badge';
|
|
8
|
+
|
|
9
|
+
export default function DocsPage() {
|
|
10
|
+
return (
|
|
11
|
+
<DocLayout
|
|
12
|
+
title="NDPR Toolkit Documentation"
|
|
13
|
+
description="Comprehensive guides and API reference for implementing NDPR-compliant features"
|
|
14
|
+
>
|
|
15
|
+
<section className="mb-12">
|
|
16
|
+
<h2 className="text-2xl font-bold mb-6">Getting Started</h2>
|
|
17
|
+
<div className="prose prose-blue dark:prose-invert max-w-none">
|
|
18
|
+
<p>
|
|
19
|
+
The NDPR Toolkit is a comprehensive set of components and utilities designed to help Nigerian businesses
|
|
20
|
+
implement NDPR-compliant features in their web applications with minimal development effort.
|
|
21
|
+
</p>
|
|
22
|
+
|
|
23
|
+
<p>
|
|
24
|
+
The toolkit includes components for consent management, data subject rights handling, privacy policy generation,
|
|
25
|
+
breach reporting, and data protection impact assessments. All components are built with TypeScript for type safety
|
|
26
|
+
and designed to be easily integrated into React and Next.js applications.
|
|
27
|
+
</p>
|
|
28
|
+
|
|
29
|
+
<p>
|
|
30
|
+
<strong>Version 2.0</strong> includes significant enhancements to all components, improved type definitions,
|
|
31
|
+
and comprehensive documentation to ensure developers can quickly implement NDPR-compliant features.
|
|
32
|
+
</p>
|
|
33
|
+
|
|
34
|
+
<h3>Installation</h3>
|
|
35
|
+
<div className="bg-gray-800 text-gray-200 p-4 rounded-md overflow-x-auto">
|
|
36
|
+
<pre><code>npm install @tantainnovative/ndpr-toolkit</code></pre>
|
|
37
|
+
<pre><code># Or with legacy peer deps if using React 19
|
|
38
|
+
npm install @tantainnovative/ndpr-toolkit --legacy-peer-deps</code></pre>
|
|
39
|
+
</div>
|
|
40
|
+
|
|
41
|
+
<h3>Basic Setup</h3>
|
|
42
|
+
<p>
|
|
43
|
+
Import and use the components and hooks in your React or Next.js application:
|
|
44
|
+
</p>
|
|
45
|
+
<div className="bg-gray-800 text-gray-200 p-4 rounded-md overflow-x-auto">
|
|
46
|
+
<pre><code>{`import { ConsentBanner, ConsentManager, ConsentStorage, useConsent } from '@tantainnovative/ndpr-toolkit';
|
|
47
|
+
|
|
48
|
+
function MyApp() {
|
|
49
|
+
return (
|
|
50
|
+
<ConsentManager
|
|
51
|
+
options={[
|
|
52
|
+
{
|
|
53
|
+
id: 'necessary',
|
|
54
|
+
label: 'Necessary Cookies',
|
|
55
|
+
description: 'Essential cookies for the website to function.',
|
|
56
|
+
required: true
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
id: 'analytics',
|
|
60
|
+
label: 'Analytics Cookies',
|
|
61
|
+
description: 'Cookies that help us understand how you use our website.',
|
|
62
|
+
required: false
|
|
63
|
+
}
|
|
64
|
+
]}
|
|
65
|
+
storageKey="my-app-consent"
|
|
66
|
+
autoLoad={true}
|
|
67
|
+
autoSave={true}
|
|
68
|
+
>
|
|
69
|
+
<AppContent />
|
|
70
|
+
<ConsentBanner
|
|
71
|
+
position="bottom"
|
|
72
|
+
privacyPolicyUrl="/privacy-policy"
|
|
73
|
+
showPreferences={true}
|
|
74
|
+
onSave={({ consents }) => console.log('Consent saved:', consents)}
|
|
75
|
+
/>
|
|
76
|
+
</ConsentManager>
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
function AppContent() {
|
|
81
|
+
// Use the useConsent hook to manage consent state
|
|
82
|
+
const { consents, hasConsented, updateConsent } = useConsent();
|
|
83
|
+
|
|
84
|
+
// Check if user has given consent for analytics
|
|
85
|
+
if (hasConsented('analytics')) {
|
|
86
|
+
// Initialize analytics
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
return (
|
|
90
|
+
<div>
|
|
91
|
+
{/* Your app content */}
|
|
92
|
+
</div>
|
|
93
|
+
);
|
|
94
|
+
}`}</code></pre>
|
|
95
|
+
</div>
|
|
96
|
+
</div>
|
|
97
|
+
|
|
98
|
+
<div className="mt-8 grid grid-cols-1 gap-6 sm:grid-cols-2">
|
|
99
|
+
<Card>
|
|
100
|
+
<CardHeader>
|
|
101
|
+
<CardTitle>Try the Demo</CardTitle>
|
|
102
|
+
</CardHeader>
|
|
103
|
+
<CardContent>
|
|
104
|
+
<p className="text-gray-500 dark:text-gray-400 mb-4">
|
|
105
|
+
Explore interactive demos of all components
|
|
106
|
+
</p>
|
|
107
|
+
<Button asChild variant="default">
|
|
108
|
+
<Link href="/#demos">View Demos</Link>
|
|
109
|
+
</Button>
|
|
110
|
+
</CardContent>
|
|
111
|
+
</Card>
|
|
112
|
+
<Card>
|
|
113
|
+
<CardHeader>
|
|
114
|
+
<CardTitle>GitHub Repository</CardTitle>
|
|
115
|
+
</CardHeader>
|
|
116
|
+
<CardContent>
|
|
117
|
+
<p className="text-gray-500 dark:text-gray-400 mb-4">
|
|
118
|
+
View source code, report issues, and contribute
|
|
119
|
+
</p>
|
|
120
|
+
<Button asChild variant="outline">
|
|
121
|
+
<a href="https://github.com/tantainnovative/ndpr-toolkit" target="_blank" rel="noopener noreferrer">
|
|
122
|
+
<svg className="w-5 h-5 mr-2" fill="currentColor" viewBox="0 0 24 24">
|
|
123
|
+
<path fillRule="evenodd" d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z" clipRule="evenodd" />
|
|
124
|
+
</svg>
|
|
125
|
+
GitHub
|
|
126
|
+
</a>
|
|
127
|
+
</Button>
|
|
128
|
+
</CardContent>
|
|
129
|
+
</Card>
|
|
130
|
+
</div>
|
|
131
|
+
</section>
|
|
132
|
+
|
|
133
|
+
<section className="mb-12">
|
|
134
|
+
<h2 className="text-2xl font-bold mb-6">Components & Hooks</h2>
|
|
135
|
+
<div className="grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3">
|
|
136
|
+
{[
|
|
137
|
+
{
|
|
138
|
+
title: 'DPIA Questionnaire',
|
|
139
|
+
description: 'Interactive questionnaire for data protection impact assessments with step indicator',
|
|
140
|
+
href: '/docs/components/dpia-questionnaire',
|
|
141
|
+
category: 'Risk Assessment',
|
|
142
|
+
isNew: true,
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
title: 'Consent Management',
|
|
146
|
+
description: 'NDPR-compliant cookie consent banner with storage and preference management',
|
|
147
|
+
href: '/docs/components/consent-management',
|
|
148
|
+
category: 'Consent Management',
|
|
149
|
+
isNew: false,
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
title: 'Data Subject Rights Portal',
|
|
153
|
+
description: 'Complete system for handling DSR requests with dashboard and tracking',
|
|
154
|
+
href: '/docs/components/data-subject-rights',
|
|
155
|
+
category: 'Rights Management',
|
|
156
|
+
isNew: false,
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
title: 'Breach Notification System',
|
|
160
|
+
description: 'Tools for reporting, assessing, and managing data breaches with regulatory reporting',
|
|
161
|
+
href: '/docs/components/breach-notification',
|
|
162
|
+
category: 'Incident Management',
|
|
163
|
+
isNew: true,
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
title: 'Privacy Policy Generator',
|
|
167
|
+
description: 'Customizable NDPR-compliant privacy policy generator with variable support',
|
|
168
|
+
href: '/docs/components/privacy-policy-generator',
|
|
169
|
+
category: 'Documentation',
|
|
170
|
+
isNew: false,
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
title: 'React Hooks',
|
|
174
|
+
description: 'Custom hooks for managing state and logic in NDPR-compliant applications',
|
|
175
|
+
href: '/docs/components/hooks',
|
|
176
|
+
category: 'State Management',
|
|
177
|
+
isNew: true,
|
|
178
|
+
},
|
|
179
|
+
].map((component) => (
|
|
180
|
+
<Card key={component.title} className="overflow-hidden transition-all duration-300 hover:shadow-lg">
|
|
181
|
+
<Link href={component.href} className="block h-full">
|
|
182
|
+
<div className="p-1 bg-gradient-to-r from-blue-500 to-indigo-600">
|
|
183
|
+
<div className="bg-white dark:bg-gray-800 p-5">
|
|
184
|
+
<div className="flex justify-between items-start mb-4">
|
|
185
|
+
<div className="text-sm font-medium text-gray-500 dark:text-gray-400 bg-gray-100 dark:bg-gray-700 px-2 py-1 rounded">
|
|
186
|
+
{component.category}
|
|
187
|
+
</div>
|
|
188
|
+
{component.isNew && (
|
|
189
|
+
<Badge variant="success" className="text-xs">New</Badge>
|
|
190
|
+
)}
|
|
191
|
+
</div>
|
|
192
|
+
<h3 className="text-lg font-semibold text-gray-900 dark:text-white mb-2">
|
|
193
|
+
{component.title}
|
|
194
|
+
</h3>
|
|
195
|
+
<p className="text-gray-500 dark:text-gray-300 text-sm">
|
|
196
|
+
{component.description}
|
|
197
|
+
</p>
|
|
198
|
+
<div className="mt-4 flex items-center text-blue-600 dark:text-blue-400 font-medium">
|
|
199
|
+
<span>View Documentation</span>
|
|
200
|
+
<svg className="w-4 h-4 ml-1" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
|
201
|
+
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M14 5l7 7m0 0l-7 7m7-7H3" />
|
|
202
|
+
</svg>
|
|
203
|
+
</div>
|
|
204
|
+
</div>
|
|
205
|
+
</div>
|
|
206
|
+
</Link>
|
|
207
|
+
</Card>
|
|
208
|
+
))}
|
|
209
|
+
</div>
|
|
210
|
+
</section>
|
|
211
|
+
|
|
212
|
+
<section className="mb-12">
|
|
213
|
+
<h2 className="text-2xl font-bold mb-6">Implementation Guides</h2>
|
|
214
|
+
<div className="grid grid-cols-1 gap-6 sm:grid-cols-2">
|
|
215
|
+
{[
|
|
216
|
+
{
|
|
217
|
+
title: 'Conducting a DPIA',
|
|
218
|
+
description: 'Step-by-step guide to conducting a Data Protection Impact Assessment',
|
|
219
|
+
href: '/docs/guides/conducting-dpia',
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
title: 'Managing Consent',
|
|
223
|
+
description: 'Learn how to implement a complete consent management system',
|
|
224
|
+
href: '/docs/guides/managing-consent',
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
title: 'Handling Data Subject Requests',
|
|
228
|
+
description: 'Best practices for handling data subject rights requests',
|
|
229
|
+
href: '/docs/guides/data-subject-requests',
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
title: 'Breach Notification Process',
|
|
233
|
+
description: 'How to implement a 72-hour breach notification process',
|
|
234
|
+
href: '/docs/guides/breach-notification-process',
|
|
235
|
+
},
|
|
236
|
+
].map((guide) => (
|
|
237
|
+
<Card key={guide.title}>
|
|
238
|
+
<CardHeader>
|
|
239
|
+
<CardTitle>{guide.title}</CardTitle>
|
|
240
|
+
</CardHeader>
|
|
241
|
+
<CardContent>
|
|
242
|
+
<p className="text-gray-500 dark:text-gray-400 mb-4">{guide.description}</p>
|
|
243
|
+
<Button asChild variant="outline">
|
|
244
|
+
<Link href={guide.href}>
|
|
245
|
+
Read Guide
|
|
246
|
+
<svg className="w-4 h-4 ml-2" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
|
247
|
+
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M14 5l7 7m0 0l-7 7m7-7H3" />
|
|
248
|
+
</svg>
|
|
249
|
+
</Link>
|
|
250
|
+
</Button>
|
|
251
|
+
</CardContent>
|
|
252
|
+
</Card>
|
|
253
|
+
))}
|
|
254
|
+
</div>
|
|
255
|
+
</section>
|
|
256
|
+
|
|
257
|
+
<section className="mb-12">
|
|
258
|
+
<h2 className="text-2xl font-bold mb-6">Latest Features</h2>
|
|
259
|
+
<div className="grid grid-cols-1 gap-6 sm:grid-cols-2 lg:grid-cols-3 mb-8">
|
|
260
|
+
<Card>
|
|
261
|
+
<CardHeader>
|
|
262
|
+
<CardTitle className="flex items-center">
|
|
263
|
+
Variable Support in Policy Generator
|
|
264
|
+
<Badge className="ml-2" variant="outline">New</Badge>
|
|
265
|
+
</CardTitle>
|
|
266
|
+
</CardHeader>
|
|
267
|
+
<CardContent>
|
|
268
|
+
<p className="text-gray-500 dark:text-gray-400 mb-4">
|
|
269
|
+
Create dynamic privacy policies with variable placeholders that can be easily updated when your organization information changes.
|
|
270
|
+
</p>
|
|
271
|
+
<Button asChild variant="outline" size="sm">
|
|
272
|
+
<Link href="/docs/components/privacy-policy-generator">
|
|
273
|
+
Learn More
|
|
274
|
+
</Link>
|
|
275
|
+
</Button>
|
|
276
|
+
</CardContent>
|
|
277
|
+
</Card>
|
|
278
|
+
|
|
279
|
+
<Card>
|
|
280
|
+
<CardHeader>
|
|
281
|
+
<CardTitle className="flex items-center">
|
|
282
|
+
Enhanced DSR Types
|
|
283
|
+
<Badge className="ml-2" variant="outline">Updated</Badge>
|
|
284
|
+
</CardTitle>
|
|
285
|
+
</CardHeader>
|
|
286
|
+
<CardContent>
|
|
287
|
+
<p className="text-gray-500 dark:text-gray-400 mb-4">
|
|
288
|
+
Improved type definitions for Data Subject Requests with standardized enums for request types and statuses.
|
|
289
|
+
</p>
|
|
290
|
+
<Button asChild variant="outline" size="sm">
|
|
291
|
+
<Link href="/docs/components/data-subject-rights">
|
|
292
|
+
Learn More
|
|
293
|
+
</Link>
|
|
294
|
+
</Button>
|
|
295
|
+
</CardContent>
|
|
296
|
+
</Card>
|
|
297
|
+
|
|
298
|
+
<Card>
|
|
299
|
+
<CardHeader>
|
|
300
|
+
<CardTitle className="flex items-center">
|
|
301
|
+
ConsentStorage Component
|
|
302
|
+
<Badge className="ml-2" variant="outline">New</Badge>
|
|
303
|
+
</CardTitle>
|
|
304
|
+
</CardHeader>
|
|
305
|
+
<CardContent>
|
|
306
|
+
<p className="text-gray-500 dark:text-gray-400 mb-4">
|
|
307
|
+
A flexible component for handling the storage and retrieval of consent settings with support for multiple storage mechanisms.
|
|
308
|
+
</p>
|
|
309
|
+
<Button asChild variant="outline" size="sm">
|
|
310
|
+
<Link href="/docs/components/consent-management">
|
|
311
|
+
Learn More
|
|
312
|
+
</Link>
|
|
313
|
+
</Button>
|
|
314
|
+
</CardContent>
|
|
315
|
+
</Card>
|
|
316
|
+
</div>
|
|
317
|
+
</section>
|
|
318
|
+
|
|
319
|
+
<section className="mb-12">
|
|
320
|
+
<h2 className="text-2xl font-bold mb-6">Component Documentation</h2>
|
|
321
|
+
<div className="grid grid-cols-1 md:grid-cols-2 gap-6">
|
|
322
|
+
<Card>
|
|
323
|
+
<CardHeader>
|
|
324
|
+
<CardTitle>Consent Management</CardTitle>
|
|
325
|
+
</CardHeader>
|
|
326
|
+
<CardContent>
|
|
327
|
+
<p className="text-gray-500 dark:text-gray-400 mb-4">
|
|
328
|
+
Implement NDPR-compliant cookie consent banners and preference centers with flexible storage options.
|
|
329
|
+
</p>
|
|
330
|
+
<ul className="list-disc pl-5 mb-4 text-sm">
|
|
331
|
+
<li>ConsentBanner & ConsentManager components</li>
|
|
332
|
+
<li>Customizable consent options</li>
|
|
333
|
+
<li>Multiple storage mechanisms</li>
|
|
334
|
+
<li>Preference management UI</li>
|
|
335
|
+
</ul>
|
|
336
|
+
<Button asChild variant="outline" size="sm">
|
|
337
|
+
<Link href="/docs/components/consent-management">
|
|
338
|
+
View Documentation
|
|
339
|
+
</Link>
|
|
340
|
+
</Button>
|
|
341
|
+
</CardContent>
|
|
342
|
+
</Card>
|
|
343
|
+
|
|
344
|
+
<Card>
|
|
345
|
+
<CardHeader>
|
|
346
|
+
<CardTitle>Data Subject Rights</CardTitle>
|
|
347
|
+
</CardHeader>
|
|
348
|
+
<CardContent>
|
|
349
|
+
<p className="text-gray-500 dark:text-gray-400 mb-4">
|
|
350
|
+
Handle data subject access requests and other rights with a complete request management system.
|
|
351
|
+
</p>
|
|
352
|
+
<ul className="list-disc pl-5 mb-4 text-sm">
|
|
353
|
+
<li>Request submission forms</li>
|
|
354
|
+
<li>Admin dashboard for request management</li>
|
|
355
|
+
<li>Status tracking and notifications</li>
|
|
356
|
+
<li>Standardized request types</li>
|
|
357
|
+
</ul>
|
|
358
|
+
<Button asChild variant="outline" size="sm">
|
|
359
|
+
<Link href="/docs/components/data-subject-rights">
|
|
360
|
+
View Documentation
|
|
361
|
+
</Link>
|
|
362
|
+
</Button>
|
|
363
|
+
</CardContent>
|
|
364
|
+
</Card>
|
|
365
|
+
|
|
366
|
+
<Card>
|
|
367
|
+
<CardHeader>
|
|
368
|
+
<CardTitle>DPIA Questionnaire</CardTitle>
|
|
369
|
+
</CardHeader>
|
|
370
|
+
<CardContent>
|
|
371
|
+
<p className="text-gray-500 dark:text-gray-400 mb-4">
|
|
372
|
+
Conduct Data Protection Impact Assessments with an interactive questionnaire and risk assessment tools.
|
|
373
|
+
</p>
|
|
374
|
+
<ul className="list-disc pl-5 mb-4 text-sm">
|
|
375
|
+
<li>Multi-section questionnaire</li>
|
|
376
|
+
<li>Risk identification and assessment</li>
|
|
377
|
+
<li>Report generation</li>
|
|
378
|
+
<li>Compliance recommendations</li>
|
|
379
|
+
</ul>
|
|
380
|
+
<Button asChild variant="outline" size="sm">
|
|
381
|
+
<Link href="/docs/components/dpia-questionnaire">
|
|
382
|
+
View Documentation
|
|
383
|
+
</Link>
|
|
384
|
+
</Button>
|
|
385
|
+
</CardContent>
|
|
386
|
+
</Card>
|
|
387
|
+
|
|
388
|
+
<Card>
|
|
389
|
+
<CardHeader>
|
|
390
|
+
<CardTitle>Breach Notification</CardTitle>
|
|
391
|
+
</CardHeader>
|
|
392
|
+
<CardContent>
|
|
393
|
+
<p className="text-gray-500 dark:text-gray-400 mb-4">
|
|
394
|
+
Manage data breach reporting, risk assessment, and notification within NDPR's 72-hour requirement.
|
|
395
|
+
</p>
|
|
396
|
+
<ul className="list-disc pl-5 mb-4 text-sm">
|
|
397
|
+
<li>Breach reporting forms</li>
|
|
398
|
+
<li>Risk assessment tools</li>
|
|
399
|
+
<li>Notification requirement determination</li>
|
|
400
|
+
<li>Regulatory report generation</li>
|
|
401
|
+
</ul>
|
|
402
|
+
<Button asChild variant="outline" size="sm">
|
|
403
|
+
<Link href="/docs/components/breach-notification">
|
|
404
|
+
View Documentation
|
|
405
|
+
</Link>
|
|
406
|
+
</Button>
|
|
407
|
+
</CardContent>
|
|
408
|
+
</Card>
|
|
409
|
+
|
|
410
|
+
<Card>
|
|
411
|
+
<CardHeader>
|
|
412
|
+
<CardTitle>Privacy Policy Generator</CardTitle>
|
|
413
|
+
</CardHeader>
|
|
414
|
+
<CardContent>
|
|
415
|
+
<p className="text-gray-500 dark:text-gray-400 mb-4">
|
|
416
|
+
Create NDPR-compliant privacy policies with customizable templates and variable support.
|
|
417
|
+
</p>
|
|
418
|
+
<ul className="list-disc pl-5 mb-4 text-sm">
|
|
419
|
+
<li>Customizable policy sections</li>
|
|
420
|
+
<li>Variable placeholder support</li>
|
|
421
|
+
<li>Preview and export options</li>
|
|
422
|
+
<li>Compliance checking</li>
|
|
423
|
+
</ul>
|
|
424
|
+
<Button asChild variant="outline" size="sm">
|
|
425
|
+
<Link href="/docs/components/privacy-policy-generator">
|
|
426
|
+
View Documentation
|
|
427
|
+
</Link>
|
|
428
|
+
</Button>
|
|
429
|
+
</CardContent>
|
|
430
|
+
</Card>
|
|
431
|
+
|
|
432
|
+
<Card>
|
|
433
|
+
<CardHeader>
|
|
434
|
+
<CardTitle>React Hooks</CardTitle>
|
|
435
|
+
</CardHeader>
|
|
436
|
+
<CardContent>
|
|
437
|
+
<p className="text-gray-500 dark:text-gray-400 mb-4">
|
|
438
|
+
Utilize custom React hooks for state management across all NDPR toolkit components.
|
|
439
|
+
</p>
|
|
440
|
+
<ul className="list-disc pl-5 mb-4 text-sm">
|
|
441
|
+
<li>useConsent</li>
|
|
442
|
+
<li>useDSR</li>
|
|
443
|
+
<li>useDPIA</li>
|
|
444
|
+
<li>useBreach</li>
|
|
445
|
+
<li>usePrivacyPolicy</li>
|
|
446
|
+
</ul>
|
|
447
|
+
<Button asChild variant="outline" size="sm">
|
|
448
|
+
<Link href="/docs/components/hooks">
|
|
449
|
+
View Documentation
|
|
450
|
+
</Link>
|
|
451
|
+
</Button>
|
|
452
|
+
</CardContent>
|
|
453
|
+
</Card>
|
|
454
|
+
</div>
|
|
455
|
+
</section>
|
|
456
|
+
|
|
457
|
+
<section className="mb-12">
|
|
458
|
+
<h2 className="text-2xl font-bold mb-6">Implementation Guides</h2>
|
|
459
|
+
<div className="prose prose-blue max-w-none dark:prose-invert mb-6">
|
|
460
|
+
<p>
|
|
461
|
+
Our implementation guides provide step-by-step instructions for integrating NDPR Toolkit components
|
|
462
|
+
into your applications and addressing specific compliance scenarios.
|
|
463
|
+
</p>
|
|
464
|
+
</div>
|
|
465
|
+
|
|
466
|
+
<div className="grid grid-cols-1 md:grid-cols-3 gap-6">
|
|
467
|
+
<Card>
|
|
468
|
+
<CardHeader>
|
|
469
|
+
<CardTitle>Quick Start Guide</CardTitle>
|
|
470
|
+
</CardHeader>
|
|
471
|
+
<CardContent>
|
|
472
|
+
<p className="text-gray-500 dark:text-gray-400 mb-4">
|
|
473
|
+
Get up and running with the NDPR Toolkit in minutes.
|
|
474
|
+
</p>
|
|
475
|
+
<Button asChild variant="outline" size="sm">
|
|
476
|
+
<Link href="/docs/guides/quick-start">
|
|
477
|
+
Read Guide
|
|
478
|
+
</Link>
|
|
479
|
+
</Button>
|
|
480
|
+
</CardContent>
|
|
481
|
+
</Card>
|
|
482
|
+
|
|
483
|
+
<Card>
|
|
484
|
+
<CardHeader>
|
|
485
|
+
<CardTitle>Consent Implementation</CardTitle>
|
|
486
|
+
</CardHeader>
|
|
487
|
+
<CardContent>
|
|
488
|
+
<p className="text-gray-500 dark:text-gray-400 mb-4">
|
|
489
|
+
Implement a complete consent management system.
|
|
490
|
+
</p>
|
|
491
|
+
<Button asChild variant="outline" size="sm">
|
|
492
|
+
<Link href="/docs/guides/implementing-consent">
|
|
493
|
+
Read Guide
|
|
494
|
+
</Link>
|
|
495
|
+
</Button>
|
|
496
|
+
</CardContent>
|
|
497
|
+
</Card>
|
|
498
|
+
|
|
499
|
+
<Card>
|
|
500
|
+
<CardHeader>
|
|
501
|
+
<CardTitle>DSR Portal Setup</CardTitle>
|
|
502
|
+
</CardHeader>
|
|
503
|
+
<CardContent>
|
|
504
|
+
<p className="text-gray-500 dark:text-gray-400 mb-4">
|
|
505
|
+
Create a complete data subject rights management portal.
|
|
506
|
+
</p>
|
|
507
|
+
<Button asChild variant="outline" size="sm">
|
|
508
|
+
<Link href="/docs/guides/implementing-dsr">
|
|
509
|
+
Read Guide
|
|
510
|
+
</Link>
|
|
511
|
+
</Button>
|
|
512
|
+
</CardContent>
|
|
513
|
+
</Card>
|
|
514
|
+
</div>
|
|
515
|
+
</section>
|
|
516
|
+
|
|
517
|
+
<section className="mb-12">
|
|
518
|
+
<h2 className="text-2xl font-bold mb-6">NDPR Compliance</h2>
|
|
519
|
+
<div className="prose prose-blue max-w-none dark:prose-invert">
|
|
520
|
+
<p>
|
|
521
|
+
The Nigeria Data Protection Regulation (NDPR) is Nigeria's principal data protection legislation, issued by the
|
|
522
|
+
National Information Technology Development Agency (NITDA) in January 2019. The NDPR aims to safeguard the rights
|
|
523
|
+
of natural persons to data privacy.
|
|
524
|
+
</p>
|
|
525
|
+
|
|
526
|
+
<h3>Key Requirements</h3>
|
|
527
|
+
<ul>
|
|
528
|
+
<li>
|
|
529
|
+
<strong>Lawful Processing:</strong> Organizations must process personal data lawfully, fairly, and transparently.
|
|
530
|
+
</li>
|
|
531
|
+
<li>
|
|
532
|
+
<strong>Consent:</strong> Valid consent must be obtained before collecting or processing personal data.
|
|
533
|
+
</li>
|
|
534
|
+
<li>
|
|
535
|
+
<strong>Data Subject Rights:</strong> Organizations must respect and facilitate data subject rights, including access, rectification, and erasure.
|
|
536
|
+
</li>
|
|
537
|
+
<li>
|
|
538
|
+
<strong>Data Protection Impact Assessment:</strong> Organizations must conduct DPIAs for high-risk processing activities.
|
|
539
|
+
</li>
|
|
540
|
+
<li>
|
|
541
|
+
<strong>Breach Notification:</strong> Organizations must report data breaches to NITDA within 72 hours.
|
|
542
|
+
</li>
|
|
543
|
+
<li>
|
|
544
|
+
<strong>Privacy Policy:</strong> Organizations must maintain a clear and accessible privacy policy.
|
|
545
|
+
</li>
|
|
546
|
+
</ul>
|
|
547
|
+
|
|
548
|
+
<h3>How the NDPR Toolkit Helps</h3>
|
|
549
|
+
<p>
|
|
550
|
+
Our toolkit provides ready-to-use components that address each of these key requirements:
|
|
551
|
+
</p>
|
|
552
|
+
<ul>
|
|
553
|
+
<li><strong>Consent Management:</strong> Implement proper consent collection and management</li>
|
|
554
|
+
<li><strong>Data Subject Rights Portal:</strong> Handle DSR requests efficiently and in compliance with regulations</li>
|
|
555
|
+
<li><strong>DPIA Questionnaire:</strong> Conduct and document Data Protection Impact Assessments</li>
|
|
556
|
+
<li><strong>Breach Notification System:</strong> Report and manage breaches within the required timeframes</li>
|
|
557
|
+
<li><strong>Privacy Policy Generator:</strong> Create and maintain NDPR-compliant privacy policies</li>
|
|
558
|
+
</ul>
|
|
559
|
+
|
|
560
|
+
<div className="bg-blue-50 dark:bg-blue-900/20 p-4 rounded-md mt-6">
|
|
561
|
+
<h4 className="text-blue-800 dark:text-blue-200">Disclaimer</h4>
|
|
562
|
+
<p className="text-blue-700 dark:text-blue-300 text-sm">
|
|
563
|
+
While the NDPR Toolkit is designed to help organizations implement NDPR-compliant features, using this toolkit does not guarantee
|
|
564
|
+
full compliance with the NDPR. Organizations should consult with legal professionals to ensure their specific implementation
|
|
565
|
+
meets all regulatory requirements.
|
|
566
|
+
</p>
|
|
567
|
+
</div>
|
|
568
|
+
</div>
|
|
569
|
+
</section>
|
|
570
|
+
</DocLayout>
|
|
571
|
+
);
|
|
572
|
+
}
|
|
Binary file
|