@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.
Files changed (212) hide show
  1. package/.claude/settings.local.json +20 -0
  2. package/.eslintrc.json +10 -0
  3. package/.github/workflows/ci.yml +36 -0
  4. package/.github/workflows/nextjs.yml +104 -0
  5. package/.husky/commit-msg +4 -0
  6. package/.husky/pre-commit +4 -0
  7. package/.lintstagedrc.js +4 -0
  8. package/.nvmrc +1 -0
  9. package/.versionrc +17 -0
  10. package/CHANGELOG.md +16 -0
  11. package/CLAUDE.md +90 -0
  12. package/CNAME +1 -0
  13. package/CONTRIBUTING.md +87 -0
  14. package/README.md +84 -431
  15. package/RELEASE-NOTES-v1.0.0.md +140 -0
  16. package/RELEASE-NOTES-v1.0.1.md +69 -0
  17. package/SECURITY.md +21 -0
  18. package/commitlint.config.js +36 -0
  19. package/components.json +21 -0
  20. package/eslint.config.mjs +16 -0
  21. package/jest.config.js +31 -0
  22. package/jest.setup.js +15 -0
  23. package/next.config.js +15 -0
  24. package/next.config.ts +62 -0
  25. package/package.json +70 -52
  26. package/packages/ndpr-toolkit/README.md +467 -0
  27. package/packages/ndpr-toolkit/jest.config.js +23 -0
  28. package/packages/ndpr-toolkit/package-lock.json +8197 -0
  29. package/packages/ndpr-toolkit/package.json +71 -0
  30. package/packages/ndpr-toolkit/rollup.config.js +34 -0
  31. package/packages/ndpr-toolkit/src/__tests__/components/consent/ConsentBanner.test.tsx +119 -0
  32. package/packages/ndpr-toolkit/src/__tests__/components/consent/ConsentManager.test.tsx +122 -0
  33. package/packages/ndpr-toolkit/src/__tests__/components/consent/ConsentStorage.test.tsx +270 -0
  34. package/packages/ndpr-toolkit/src/__tests__/components/dsr/DSRDashboard.test.tsx +199 -0
  35. package/packages/ndpr-toolkit/src/__tests__/components/dsr/DSRRequestForm.test.tsx +224 -0
  36. package/packages/ndpr-toolkit/src/__tests__/components/dsr/DSRTracker.test.tsx +104 -0
  37. package/packages/ndpr-toolkit/src/__tests__/hooks/useConsent.test.tsx +161 -0
  38. package/packages/ndpr-toolkit/src/__tests__/hooks/useDSR.test.tsx +330 -0
  39. package/packages/ndpr-toolkit/src/__tests__/utils/breach.test.ts +149 -0
  40. package/packages/ndpr-toolkit/src/__tests__/utils/consent.test.ts +88 -0
  41. package/packages/ndpr-toolkit/src/__tests__/utils/dpia.test.ts +160 -0
  42. package/packages/ndpr-toolkit/src/__tests__/utils/dsr.test.ts +110 -0
  43. package/packages/ndpr-toolkit/src/__tests__/utils/privacy.test.ts +97 -0
  44. package/packages/ndpr-toolkit/src/components/breach/BreachNotificationManager.tsx +701 -0
  45. package/packages/ndpr-toolkit/src/components/breach/BreachReportForm.tsx +631 -0
  46. package/packages/ndpr-toolkit/src/components/breach/BreachRiskAssessment.tsx +569 -0
  47. package/packages/ndpr-toolkit/src/components/breach/RegulatoryReportGenerator.tsx +496 -0
  48. package/packages/ndpr-toolkit/src/components/consent/ConsentBanner.tsx +270 -0
  49. package/packages/ndpr-toolkit/src/components/consent/ConsentManager.tsx +217 -0
  50. package/packages/ndpr-toolkit/src/components/consent/ConsentStorage.tsx +206 -0
  51. package/packages/ndpr-toolkit/src/components/dpia/DPIAQuestionnaire.tsx +342 -0
  52. package/packages/ndpr-toolkit/src/components/dpia/DPIAReport.tsx +373 -0
  53. package/packages/ndpr-toolkit/src/components/dpia/StepIndicator.tsx +174 -0
  54. package/packages/ndpr-toolkit/src/components/dsr/DSRDashboard.tsx +717 -0
  55. package/packages/ndpr-toolkit/src/components/dsr/DSRRequestForm.tsx +476 -0
  56. package/packages/ndpr-toolkit/src/components/dsr/DSRTracker.tsx +620 -0
  57. package/packages/ndpr-toolkit/src/components/policy/PolicyExporter.tsx +541 -0
  58. package/packages/ndpr-toolkit/src/components/policy/PolicyGenerator.tsx +454 -0
  59. package/packages/ndpr-toolkit/src/components/policy/PolicyPreview.tsx +333 -0
  60. package/packages/ndpr-toolkit/src/hooks/useBreach.ts +409 -0
  61. package/packages/ndpr-toolkit/src/hooks/useConsent.ts +263 -0
  62. package/packages/ndpr-toolkit/src/hooks/useDPIA.ts +457 -0
  63. package/packages/ndpr-toolkit/src/hooks/useDSR.ts +236 -0
  64. package/packages/ndpr-toolkit/src/hooks/usePrivacyPolicy.ts +428 -0
  65. package/{dist/index.d.ts → packages/ndpr-toolkit/src/index.ts} +14 -1
  66. package/packages/ndpr-toolkit/src/setupTests.ts +5 -0
  67. package/packages/ndpr-toolkit/src/types/breach.ts +283 -0
  68. package/packages/ndpr-toolkit/src/types/consent.ts +111 -0
  69. package/packages/ndpr-toolkit/src/types/dpia.ts +236 -0
  70. package/packages/ndpr-toolkit/src/types/dsr.ts +192 -0
  71. package/packages/ndpr-toolkit/src/types/index.ts +42 -0
  72. package/packages/ndpr-toolkit/src/types/privacy.ts +246 -0
  73. package/packages/ndpr-toolkit/src/utils/breach.ts +122 -0
  74. package/packages/ndpr-toolkit/src/utils/consent.ts +51 -0
  75. package/packages/ndpr-toolkit/src/utils/dpia.ts +104 -0
  76. package/packages/ndpr-toolkit/src/utils/dsr.ts +77 -0
  77. package/packages/ndpr-toolkit/src/utils/privacy.ts +100 -0
  78. package/packages/ndpr-toolkit/tsconfig.json +23 -0
  79. package/postcss.config.mjs +5 -0
  80. package/public/NDPR TOOLKIT.svg +1 -0
  81. package/public/favicon/android-chrome-192x192.png +0 -0
  82. package/public/favicon/android-chrome-512x512.png +0 -0
  83. package/public/favicon/apple-touch-icon.png +0 -0
  84. package/public/favicon/favicon-16x16.png +0 -0
  85. package/public/favicon/favicon-32x32.png +0 -0
  86. package/public/favicon/site.webmanifest +1 -0
  87. package/public/file.svg +1 -0
  88. package/public/globe.svg +1 -0
  89. package/public/ndpr-toolkit-logo.svg +108 -0
  90. package/public/next.svg +1 -0
  91. package/public/vercel.svg +1 -0
  92. package/public/window.svg +1 -0
  93. package/src/__tests__/example.test.ts +13 -0
  94. package/src/__tests__/requestService.test.ts +57 -0
  95. package/src/app/accessibility.css +70 -0
  96. package/src/app/docs/components/DocLayout.tsx +267 -0
  97. package/src/app/docs/components/breach-notification/page.tsx +797 -0
  98. package/src/app/docs/components/consent-management/page.tsx +576 -0
  99. package/src/app/docs/components/data-subject-rights/page.tsx +511 -0
  100. package/src/app/docs/components/dpia-questionnaire/layout.tsx +15 -0
  101. package/src/app/docs/components/dpia-questionnaire/metadata.ts +31 -0
  102. package/src/app/docs/components/dpia-questionnaire/page.tsx +666 -0
  103. package/src/app/docs/components/hooks/page.tsx +305 -0
  104. package/src/app/docs/components/page.tsx +84 -0
  105. package/src/app/docs/components/privacy-policy-generator/page.tsx +634 -0
  106. package/src/app/docs/guides/breach-notification-process/components/BestPractices.tsx +123 -0
  107. package/src/app/docs/guides/breach-notification-process/components/ImplementationSteps.tsx +328 -0
  108. package/src/app/docs/guides/breach-notification-process/components/Introduction.tsx +28 -0
  109. package/src/app/docs/guides/breach-notification-process/components/NotificationTimeline.tsx +91 -0
  110. package/src/app/docs/guides/breach-notification-process/components/Resources.tsx +118 -0
  111. package/src/app/docs/guides/breach-notification-process/page.tsx +39 -0
  112. package/src/app/docs/guides/conducting-dpia/page.tsx +593 -0
  113. package/src/app/docs/guides/data-subject-requests/page.tsx +666 -0
  114. package/src/app/docs/guides/managing-consent/page.tsx +738 -0
  115. package/src/app/docs/guides/ndpr-compliance-checklist/components/ComplianceChecklist.tsx +296 -0
  116. package/src/app/docs/guides/ndpr-compliance-checklist/components/ImplementationTools.tsx +145 -0
  117. package/src/app/docs/guides/ndpr-compliance-checklist/components/Introduction.tsx +33 -0
  118. package/src/app/docs/guides/ndpr-compliance-checklist/components/KeyRequirements.tsx +99 -0
  119. package/src/app/docs/guides/ndpr-compliance-checklist/components/Resources.tsx +159 -0
  120. package/src/app/docs/guides/ndpr-compliance-checklist/page.tsx +38 -0
  121. package/src/app/docs/guides/page.tsx +67 -0
  122. package/src/app/docs/layout.tsx +15 -0
  123. package/src/app/docs/metadata.ts +31 -0
  124. package/src/app/docs/page.tsx +572 -0
  125. package/src/app/favicon.ico +0 -0
  126. package/src/app/globals.css +123 -0
  127. package/src/app/layout.tsx +37 -0
  128. package/src/app/ndpr-demos/breach/page.tsx +354 -0
  129. package/src/app/ndpr-demos/consent/page.tsx +366 -0
  130. package/src/app/ndpr-demos/dpia/page.tsx +495 -0
  131. package/src/app/ndpr-demos/dsr/page.tsx +280 -0
  132. package/src/app/ndpr-demos/page.tsx +73 -0
  133. package/src/app/ndpr-demos/policy/page.tsx +771 -0
  134. package/src/app/page.tsx +452 -0
  135. package/src/components/ErrorBoundary.tsx +90 -0
  136. package/src/components/breach-notification/BreachNotificationForm.tsx +479 -0
  137. package/src/components/consent/ConsentBanner.tsx +159 -0
  138. package/src/components/data-subject-rights/DataSubjectRequestForm.tsx +419 -0
  139. package/src/components/docs/DocLayout.tsx +289 -0
  140. package/src/components/docs/index.ts +2 -0
  141. package/src/components/dpia/DPIAQuestionnaire.tsx +483 -0
  142. package/src/components/privacy-policy/PolicyGenerator.tsx +1062 -0
  143. package/src/components/privacy-policy/data.ts +98 -0
  144. package/src/components/privacy-policy/shared/CheckboxField.tsx +38 -0
  145. package/src/components/privacy-policy/shared/CheckboxGroup.tsx +85 -0
  146. package/src/components/privacy-policy/shared/FormField.tsx +79 -0
  147. package/src/components/privacy-policy/shared/StepIndicator.tsx +86 -0
  148. package/src/components/privacy-policy/steps/CustomSectionsStep.tsx +335 -0
  149. package/src/components/privacy-policy/steps/DataCollectionStep.tsx +231 -0
  150. package/src/components/privacy-policy/steps/DataSharingStep.tsx +418 -0
  151. package/src/components/privacy-policy/steps/OrganizationInfoStep.tsx +202 -0
  152. package/src/components/privacy-policy/steps/PolicyPreviewStep.tsx +172 -0
  153. package/src/components/ui/Badge.tsx +46 -0
  154. package/src/components/ui/Button.tsx +59 -0
  155. package/src/components/ui/Card.tsx +92 -0
  156. package/src/components/ui/Checkbox.tsx +57 -0
  157. package/src/components/ui/FormField.tsx +50 -0
  158. package/src/components/ui/Input.tsx +38 -0
  159. package/src/components/ui/Loading.tsx +201 -0
  160. package/src/components/ui/Select.tsx +42 -0
  161. package/src/components/ui/TextArea.tsx +38 -0
  162. package/src/components/ui/label.tsx +24 -0
  163. package/src/components/ui/switch.tsx +31 -0
  164. package/src/components/ui/tabs.tsx +66 -0
  165. package/src/hooks/useConsent.ts +64 -0
  166. package/src/hooks/useLoadingState.ts +85 -0
  167. package/src/lib/consentService.ts +137 -0
  168. package/src/lib/dpiaQuestions.ts +148 -0
  169. package/src/lib/requestService.ts +75 -0
  170. package/src/lib/sanitize.ts +108 -0
  171. package/src/lib/storage.ts +222 -0
  172. package/src/lib/utils.ts +6 -0
  173. package/src/types/html-to-docx.d.ts +30 -0
  174. package/src/types/index.ts +72 -0
  175. package/tailwind.config.ts +65 -0
  176. package/tsconfig.json +41 -0
  177. package/dist/components/breach/BreachNotificationManager.d.ts +0 -62
  178. package/dist/components/breach/BreachReportForm.d.ts +0 -66
  179. package/dist/components/breach/BreachRiskAssessment.d.ts +0 -50
  180. package/dist/components/breach/RegulatoryReportGenerator.d.ts +0 -94
  181. package/dist/components/consent/ConsentBanner.d.ts +0 -79
  182. package/dist/components/consent/ConsentManager.d.ts +0 -73
  183. package/dist/components/consent/ConsentStorage.d.ts +0 -41
  184. package/dist/components/dpia/DPIAQuestionnaire.d.ts +0 -70
  185. package/dist/components/dpia/DPIAReport.d.ts +0 -40
  186. package/dist/components/dpia/StepIndicator.d.ts +0 -64
  187. package/dist/components/dsr/DSRDashboard.d.ts +0 -58
  188. package/dist/components/dsr/DSRRequestForm.d.ts +0 -74
  189. package/dist/components/dsr/DSRTracker.d.ts +0 -56
  190. package/dist/components/policy/PolicyExporter.d.ts +0 -65
  191. package/dist/components/policy/PolicyGenerator.d.ts +0 -54
  192. package/dist/components/policy/PolicyPreview.d.ts +0 -71
  193. package/dist/hooks/useBreach.d.ts +0 -97
  194. package/dist/hooks/useConsent.d.ts +0 -63
  195. package/dist/hooks/useDPIA.d.ts +0 -92
  196. package/dist/hooks/useDSR.d.ts +0 -72
  197. package/dist/hooks/usePrivacyPolicy.d.ts +0 -87
  198. package/dist/index.esm.js +0 -2
  199. package/dist/index.esm.js.map +0 -1
  200. package/dist/index.js +0 -2
  201. package/dist/index.js.map +0 -1
  202. package/dist/setupTests.d.ts +0 -2
  203. package/dist/types/breach.d.ts +0 -239
  204. package/dist/types/consent.d.ts +0 -95
  205. package/dist/types/dpia.d.ts +0 -196
  206. package/dist/types/dsr.d.ts +0 -162
  207. package/dist/types/privacy.d.ts +0 -204
  208. package/dist/utils/breach.d.ts +0 -14
  209. package/dist/utils/consent.d.ts +0 -10
  210. package/dist/utils/dpia.d.ts +0 -12
  211. package/dist/utils/dsr.d.ts +0 -11
  212. 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&apos;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&apos;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