@tantainnovative/ndpr-toolkit 1.0.5 → 1.0.7

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 (263) hide show
  1. package/README.md +88 -14
  2. package/dist/components/breach-notification/BreachNotificationForm.d.ts +18 -0
  3. package/dist/components/breach-notification/BreachNotificationForm.d.ts.map +1 -0
  4. package/dist/components/consent/ConsentBanner.d.ts +30 -0
  5. package/dist/components/consent/ConsentBanner.d.ts.map +1 -0
  6. package/dist/components/consent/ConsentManager.d.ts +51 -0
  7. package/dist/components/consent/ConsentManager.d.ts.map +1 -0
  8. package/dist/components/consent/ConsentSettings.d.ts +15 -0
  9. package/dist/components/consent/ConsentSettings.d.ts.map +1 -0
  10. package/dist/components/consent/unstyled/UnstyledConsentBanner.d.ts +7 -0
  11. package/dist/components/consent/unstyled/UnstyledConsentBanner.d.ts.map +1 -0
  12. package/dist/components/consent/unstyled/UnstyledConsentSettings.d.ts +7 -0
  13. package/dist/components/consent/unstyled/UnstyledConsentSettings.d.ts.map +1 -0
  14. package/dist/components/consent/unstyled/UnstyledConsentToggle.d.ts +8 -0
  15. package/dist/components/consent/unstyled/UnstyledConsentToggle.d.ts.map +1 -0
  16. package/dist/components/consent/unstyled/index.d.ts +4 -0
  17. package/dist/components/consent/unstyled/index.d.ts.map +1 -0
  18. package/dist/components/data-subject-rights/DataSubjectRequestForm.d.ts +14 -0
  19. package/dist/components/data-subject-rights/DataSubjectRequestForm.d.ts.map +1 -0
  20. package/dist/components/docs/DocLayout.d.ts +9 -0
  21. package/dist/components/docs/DocLayout.d.ts.map +1 -0
  22. package/dist/components/docs/index.d.ts +2 -0
  23. package/dist/components/docs/index.d.ts.map +1 -0
  24. package/dist/components/dpia/DPIAQuestionnaire.d.ts +9 -0
  25. package/dist/components/dpia/DPIAQuestionnaire.d.ts.map +1 -0
  26. package/dist/components/privacy-policy/PolicyGenerator.d.ts +12 -0
  27. package/dist/components/privacy-policy/PolicyGenerator.d.ts.map +1 -0
  28. package/dist/components/privacy-policy/data.d.ts +8 -0
  29. package/dist/components/privacy-policy/data.d.ts.map +1 -0
  30. package/dist/components/privacy-policy/shared/CheckboxField.d.ts +13 -0
  31. package/dist/components/privacy-policy/shared/CheckboxField.d.ts.map +1 -0
  32. package/dist/components/privacy-policy/shared/CheckboxGroup.d.ts +13 -0
  33. package/dist/components/privacy-policy/shared/CheckboxGroup.d.ts.map +1 -0
  34. package/dist/components/privacy-policy/shared/FormField.d.ts +13 -0
  35. package/dist/components/privacy-policy/shared/FormField.d.ts.map +1 -0
  36. package/dist/components/privacy-policy/shared/StepIndicator.d.ts +8 -0
  37. package/dist/components/privacy-policy/shared/StepIndicator.d.ts.map +1 -0
  38. package/dist/components/privacy-policy/steps/CustomSectionsStep.d.ts +15 -0
  39. package/dist/components/privacy-policy/steps/CustomSectionsStep.d.ts.map +1 -0
  40. package/dist/components/privacy-policy/steps/DataCollectionStep.d.ts +20 -0
  41. package/dist/components/privacy-policy/steps/DataCollectionStep.d.ts.map +1 -0
  42. package/dist/components/privacy-policy/steps/DataSharingStep.d.ts +34 -0
  43. package/dist/components/privacy-policy/steps/DataSharingStep.d.ts.map +1 -0
  44. package/dist/components/privacy-policy/steps/OrganizationInfoStep.d.ts +17 -0
  45. package/dist/components/privacy-policy/steps/OrganizationInfoStep.d.ts.map +1 -0
  46. package/dist/components/privacy-policy/steps/PolicyPreviewStep.d.ts +30 -0
  47. package/dist/components/privacy-policy/steps/PolicyPreviewStep.d.ts.map +1 -0
  48. package/dist/components/ui/Badge.d.ts +10 -0
  49. package/dist/components/ui/Badge.d.ts.map +1 -0
  50. package/dist/components/ui/Button.d.ts +11 -0
  51. package/dist/components/ui/Button.d.ts.map +1 -0
  52. package/dist/components/ui/Card.d.ts +10 -0
  53. package/dist/components/ui/Card.d.ts.map +1 -0
  54. package/dist/components/ui/Checkbox.d.ts +8 -0
  55. package/dist/components/ui/Checkbox.d.ts.map +1 -0
  56. package/dist/components/ui/FormField.d.ts +11 -0
  57. package/dist/components/ui/FormField.d.ts.map +1 -0
  58. package/dist/components/ui/Input.d.ts +6 -0
  59. package/dist/components/ui/Input.d.ts.map +1 -0
  60. package/dist/components/ui/Select.d.ts +6 -0
  61. package/dist/components/ui/Select.d.ts.map +1 -0
  62. package/dist/components/ui/TextArea.d.ts +6 -0
  63. package/dist/components/ui/TextArea.d.ts.map +1 -0
  64. package/dist/components/ui/dialog.d.ts +18 -0
  65. package/dist/components/ui/dialog.d.ts.map +1 -0
  66. package/dist/components/ui/label.d.ts +5 -0
  67. package/dist/components/ui/label.d.ts.map +1 -0
  68. package/dist/components/ui/switch.d.ts +5 -0
  69. package/dist/components/ui/switch.d.ts.map +1 -0
  70. package/dist/components/ui/tabs.d.ts +8 -0
  71. package/dist/components/ui/tabs.d.ts.map +1 -0
  72. package/dist/contexts/ConsentContext.d.ts +35 -0
  73. package/dist/contexts/ConsentContext.d.ts.map +1 -0
  74. package/dist/contexts/GenericConsentContext.d.ts +11 -0
  75. package/dist/contexts/GenericConsentContext.d.ts.map +1 -0
  76. package/dist/hooks/useConsent.d.ts +12 -0
  77. package/dist/hooks/useConsent.d.ts.map +1 -0
  78. package/dist/hooks/useConsentActions.d.ts +12 -0
  79. package/dist/hooks/useConsentActions.d.ts.map +1 -0
  80. package/dist/hooks/useConsentManager.d.ts +14 -0
  81. package/dist/hooks/useConsentManager.d.ts.map +1 -0
  82. package/dist/hooks/useConsentState.d.ts +10 -0
  83. package/dist/hooks/useConsentState.d.ts.map +1 -0
  84. package/dist/index.d.mts +256 -0
  85. package/dist/index.d.ts +24 -0
  86. package/dist/index.d.ts.map +1 -0
  87. package/dist/index.js +2 -0
  88. package/dist/index.js.map +1 -0
  89. package/dist/index.mjs +2 -0
  90. package/dist/index.mjs.map +1 -0
  91. package/dist/lib/consentService.d.ts +11 -0
  92. package/dist/lib/consentService.d.ts.map +1 -0
  93. package/dist/lib/dpiaQuestions.d.ts +3 -0
  94. package/dist/lib/dpiaQuestions.d.ts.map +1 -0
  95. package/dist/lib/requestService.d.ts +10 -0
  96. package/dist/lib/requestService.d.ts.map +1 -0
  97. package/dist/lib/utils.d.ts +3 -0
  98. package/dist/lib/utils.d.ts.map +1 -0
  99. package/dist/styles.css +38 -0
  100. package/dist/types/consent.d.ts +57 -0
  101. package/dist/types/consent.d.ts.map +1 -0
  102. package/dist/types/index.d.ts +91 -0
  103. package/dist/types/index.d.ts.map +1 -0
  104. package/dist/unstyled.d.mts +22 -0
  105. package/dist/unstyled.d.ts +2 -0
  106. package/dist/unstyled.d.ts.map +1 -0
  107. package/dist/unstyled.js +2 -0
  108. package/dist/unstyled.js.map +1 -0
  109. package/dist/unstyled.mjs +2 -0
  110. package/dist/unstyled.mjs.map +1 -0
  111. package/package.json +33 -5
  112. package/CHANGELOG.md +0 -16
  113. package/CNAME +0 -1
  114. package/CONTRIBUTING.md +0 -87
  115. package/RELEASE-NOTES-v1.0.0.md +0 -140
  116. package/RELEASE-NOTES-v1.0.1.md +0 -69
  117. package/SECURITY.md +0 -21
  118. package/components.json +0 -21
  119. package/eslint.config.mjs +0 -16
  120. package/next-env.d.ts +0 -5
  121. package/next.config.js +0 -15
  122. package/next.config.ts +0 -62
  123. package/packages/ndpr-toolkit/README.md +0 -467
  124. package/packages/ndpr-toolkit/dist/components/breach/BreachNotificationManager.d.ts +0 -62
  125. package/packages/ndpr-toolkit/dist/components/breach/BreachReportForm.d.ts +0 -66
  126. package/packages/ndpr-toolkit/dist/components/breach/BreachRiskAssessment.d.ts +0 -50
  127. package/packages/ndpr-toolkit/dist/components/breach/RegulatoryReportGenerator.d.ts +0 -94
  128. package/packages/ndpr-toolkit/dist/components/consent/ConsentBanner.d.ts +0 -79
  129. package/packages/ndpr-toolkit/dist/components/consent/ConsentManager.d.ts +0 -73
  130. package/packages/ndpr-toolkit/dist/components/consent/ConsentStorage.d.ts +0 -41
  131. package/packages/ndpr-toolkit/dist/components/dpia/DPIAQuestionnaire.d.ts +0 -70
  132. package/packages/ndpr-toolkit/dist/components/dpia/DPIAReport.d.ts +0 -40
  133. package/packages/ndpr-toolkit/dist/components/dpia/StepIndicator.d.ts +0 -64
  134. package/packages/ndpr-toolkit/dist/components/dsr/DSRDashboard.d.ts +0 -58
  135. package/packages/ndpr-toolkit/dist/components/dsr/DSRRequestForm.d.ts +0 -74
  136. package/packages/ndpr-toolkit/dist/components/dsr/DSRTracker.d.ts +0 -56
  137. package/packages/ndpr-toolkit/dist/components/policy/PolicyExporter.d.ts +0 -65
  138. package/packages/ndpr-toolkit/dist/components/policy/PolicyGenerator.d.ts +0 -54
  139. package/packages/ndpr-toolkit/dist/components/policy/PolicyPreview.d.ts +0 -71
  140. package/packages/ndpr-toolkit/dist/hooks/useBreach.d.ts +0 -97
  141. package/packages/ndpr-toolkit/dist/hooks/useConsent.d.ts +0 -63
  142. package/packages/ndpr-toolkit/dist/hooks/useDPIA.d.ts +0 -92
  143. package/packages/ndpr-toolkit/dist/hooks/useDSR.d.ts +0 -72
  144. package/packages/ndpr-toolkit/dist/hooks/usePrivacyPolicy.d.ts +0 -87
  145. package/packages/ndpr-toolkit/dist/index.d.ts +0 -31
  146. package/packages/ndpr-toolkit/dist/index.esm.js +0 -2
  147. package/packages/ndpr-toolkit/dist/index.esm.js.map +0 -1
  148. package/packages/ndpr-toolkit/dist/index.js +0 -2
  149. package/packages/ndpr-toolkit/dist/index.js.map +0 -1
  150. package/packages/ndpr-toolkit/dist/setupTests.d.ts +0 -2
  151. package/packages/ndpr-toolkit/dist/types/breach.d.ts +0 -239
  152. package/packages/ndpr-toolkit/dist/types/consent.d.ts +0 -95
  153. package/packages/ndpr-toolkit/dist/types/dpia.d.ts +0 -196
  154. package/packages/ndpr-toolkit/dist/types/dsr.d.ts +0 -162
  155. package/packages/ndpr-toolkit/dist/types/privacy.d.ts +0 -204
  156. package/packages/ndpr-toolkit/dist/utils/breach.d.ts +0 -14
  157. package/packages/ndpr-toolkit/dist/utils/consent.d.ts +0 -10
  158. package/packages/ndpr-toolkit/dist/utils/dpia.d.ts +0 -12
  159. package/packages/ndpr-toolkit/dist/utils/dsr.d.ts +0 -11
  160. package/packages/ndpr-toolkit/dist/utils/privacy.d.ts +0 -12
  161. package/packages/ndpr-toolkit/package-lock.json +0 -8197
  162. package/packages/ndpr-toolkit/package.json +0 -71
  163. package/packages/ndpr-toolkit/rollup.config.js +0 -34
  164. package/packages/ndpr-toolkit/src/components/breach/BreachNotificationManager.tsx +0 -701
  165. package/packages/ndpr-toolkit/src/components/breach/BreachReportForm.tsx +0 -631
  166. package/packages/ndpr-toolkit/src/components/breach/BreachRiskAssessment.tsx +0 -569
  167. package/packages/ndpr-toolkit/src/components/breach/RegulatoryReportGenerator.tsx +0 -496
  168. package/packages/ndpr-toolkit/src/components/consent/ConsentBanner.tsx +0 -270
  169. package/packages/ndpr-toolkit/src/components/consent/ConsentManager.tsx +0 -217
  170. package/packages/ndpr-toolkit/src/components/consent/ConsentStorage.tsx +0 -206
  171. package/packages/ndpr-toolkit/src/components/dpia/DPIAQuestionnaire.tsx +0 -342
  172. package/packages/ndpr-toolkit/src/components/dpia/DPIAReport.tsx +0 -373
  173. package/packages/ndpr-toolkit/src/components/dpia/StepIndicator.tsx +0 -174
  174. package/packages/ndpr-toolkit/src/components/dsr/DSRDashboard.tsx +0 -717
  175. package/packages/ndpr-toolkit/src/components/dsr/DSRRequestForm.tsx +0 -476
  176. package/packages/ndpr-toolkit/src/components/dsr/DSRTracker.tsx +0 -620
  177. package/packages/ndpr-toolkit/src/components/policy/PolicyExporter.tsx +0 -541
  178. package/packages/ndpr-toolkit/src/components/policy/PolicyGenerator.tsx +0 -454
  179. package/packages/ndpr-toolkit/src/components/policy/PolicyPreview.tsx +0 -333
  180. package/packages/ndpr-toolkit/src/hooks/useBreach.ts +0 -409
  181. package/packages/ndpr-toolkit/src/hooks/useConsent.ts +0 -263
  182. package/packages/ndpr-toolkit/src/hooks/useDPIA.ts +0 -457
  183. package/packages/ndpr-toolkit/src/hooks/useDSR.ts +0 -236
  184. package/packages/ndpr-toolkit/src/hooks/usePrivacyPolicy.ts +0 -428
  185. package/packages/ndpr-toolkit/src/index.ts +0 -44
  186. package/packages/ndpr-toolkit/src/setupTests.ts +0 -5
  187. package/packages/ndpr-toolkit/src/types/breach.ts +0 -283
  188. package/packages/ndpr-toolkit/src/types/consent.ts +0 -111
  189. package/packages/ndpr-toolkit/src/types/dpia.ts +0 -236
  190. package/packages/ndpr-toolkit/src/types/dsr.ts +0 -192
  191. package/packages/ndpr-toolkit/src/types/index.ts +0 -42
  192. package/packages/ndpr-toolkit/src/types/privacy.ts +0 -246
  193. package/packages/ndpr-toolkit/src/utils/breach.ts +0 -122
  194. package/packages/ndpr-toolkit/src/utils/consent.ts +0 -51
  195. package/packages/ndpr-toolkit/src/utils/dpia.ts +0 -104
  196. package/packages/ndpr-toolkit/src/utils/dsr.ts +0 -77
  197. package/packages/ndpr-toolkit/src/utils/privacy.ts +0 -100
  198. package/packages/ndpr-toolkit/tsconfig.json +0 -23
  199. package/postcss.config.mjs +0 -5
  200. package/public/NDPR TOOLKIT.svg +0 -1
  201. package/public/favicon/android-chrome-192x192.png +0 -0
  202. package/public/favicon/android-chrome-512x512.png +0 -0
  203. package/public/favicon/apple-touch-icon.png +0 -0
  204. package/public/favicon/favicon-16x16.png +0 -0
  205. package/public/favicon/favicon-32x32.png +0 -0
  206. package/public/favicon/site.webmanifest +0 -1
  207. package/public/file.svg +0 -1
  208. package/public/globe.svg +0 -1
  209. package/public/ndpr-toolkit-logo.svg +0 -108
  210. package/public/next.svg +0 -1
  211. package/public/vercel.svg +0 -1
  212. package/public/window.svg +0 -1
  213. package/src/app/accessibility.css +0 -70
  214. package/src/app/favicon.ico +0 -0
  215. package/src/app/globals.css +0 -123
  216. package/src/app/layout.tsx +0 -37
  217. package/src/app/ndpr-demos/breach/page.tsx +0 -354
  218. package/src/app/ndpr-demos/consent/page.tsx +0 -366
  219. package/src/app/ndpr-demos/dpia/page.tsx +0 -495
  220. package/src/app/ndpr-demos/dsr/page.tsx +0 -280
  221. package/src/app/ndpr-demos/page.tsx +0 -73
  222. package/src/app/ndpr-demos/policy/page.tsx +0 -771
  223. package/src/app/page.tsx +0 -452
  224. package/src/components/ErrorBoundary.tsx +0 -90
  225. package/src/components/breach-notification/BreachNotificationForm.tsx +0 -479
  226. package/src/components/consent/ConsentBanner.tsx +0 -193
  227. package/src/components/data-subject-rights/DataSubjectRequestForm.tsx +0 -530
  228. package/src/components/dpia/DPIAQuestionnaire.tsx +0 -523
  229. package/src/components/privacy-policy/PolicyGenerator.tsx +0 -1062
  230. package/src/components/privacy-policy/data.ts +0 -98
  231. package/src/components/privacy-policy/shared/CheckboxField.tsx +0 -38
  232. package/src/components/privacy-policy/shared/CheckboxGroup.tsx +0 -85
  233. package/src/components/privacy-policy/shared/FormField.tsx +0 -79
  234. package/src/components/privacy-policy/shared/StepIndicator.tsx +0 -86
  235. package/src/components/privacy-policy/steps/CustomSectionsStep.tsx +0 -361
  236. package/src/components/privacy-policy/steps/DataCollectionStep.tsx +0 -231
  237. package/src/components/privacy-policy/steps/DataSharingStep.tsx +0 -418
  238. package/src/components/privacy-policy/steps/OrganizationInfoStep.tsx +0 -202
  239. package/src/components/privacy-policy/steps/PolicyPreviewStep.tsx +0 -226
  240. package/src/components/ui/Badge.tsx +0 -46
  241. package/src/components/ui/Button.tsx +0 -59
  242. package/src/components/ui/Card.tsx +0 -92
  243. package/src/components/ui/Checkbox.tsx +0 -57
  244. package/src/components/ui/FormField.tsx +0 -50
  245. package/src/components/ui/Input.tsx +0 -38
  246. package/src/components/ui/Loading.tsx +0 -201
  247. package/src/components/ui/Select.tsx +0 -42
  248. package/src/components/ui/TextArea.tsx +0 -38
  249. package/src/components/ui/label.tsx +0 -24
  250. package/src/components/ui/switch.tsx +0 -31
  251. package/src/components/ui/tabs.tsx +0 -66
  252. package/src/hooks/useConsent.ts +0 -70
  253. package/src/hooks/useLoadingState.ts +0 -85
  254. package/src/lib/consentService.ts +0 -144
  255. package/src/lib/dpiaQuestions.ts +0 -188
  256. package/src/lib/requestService.ts +0 -79
  257. package/src/lib/sanitize.ts +0 -108
  258. package/src/lib/storage.ts +0 -222
  259. package/src/lib/utils.ts +0 -6
  260. package/src/types/html-to-docx.d.ts +0 -30
  261. package/src/types/index.ts +0 -77
  262. package/tailwind.config.ts +0 -65
  263. package/tsconfig.json +0 -41
@@ -1,226 +0,0 @@
1
- "use client";
2
-
3
- import React from "react";
4
- import { Card, CardContent } from "@/components/ui/Card";
5
-
6
- interface PolicyPreviewStepProps {
7
- formData: {
8
- organizationName: string;
9
- organizationContact: string;
10
- organizationWebsite: string;
11
- organizationAddress: string;
12
- dataCollectionPurposes: string[];
13
- dataRetentionPeriod: string;
14
- thirdPartySharing: boolean;
15
- thirdParties: string[];
16
- securityMeasures: string[];
17
- cookiesUsed: boolean;
18
- cookieTypes: string[];
19
- internationalTransfers: boolean;
20
- transferCountries: string[];
21
- customSections: { title: string; template: string }[];
22
- hasDPO: boolean;
23
- dpoContact: string;
24
- includeNDPRCompliance: boolean;
25
- policyEffectiveDate: string;
26
- };
27
- previewRef: React.RefObject<HTMLDivElement | null>;
28
- }
29
-
30
- export default function PolicyPreviewStep({
31
- formData,
32
- previewRef,
33
- }: PolicyPreviewStepProps) {
34
- return (
35
- <div className="space-y-8">
36
- <Card className="transition-all duration-200">
37
- <CardContent className="p-6">
38
- <div className="flex items-center justify-between mb-4 pb-3 border-b border-gray-200 dark:border-gray-700">
39
- <h3 className="text-lg font-medium text-gray-900 dark:text-white flex items-center">
40
- <svg
41
- xmlns="http://www.w3.org/2000/svg"
42
- className="h-5 w-5 mr-2 text-indigo-500"
43
- viewBox="0 0 20 20"
44
- fill="currentColor"
45
- aria-hidden="true"
46
- >
47
- <path
48
- fillRule="evenodd"
49
- d="M4 4a2 2 0 012-2h4.586A2 2 0 0112 2.586L15.414 6A2 2 0 0116 7.414V16a2 2 0 01-2 2H6a2 2 0 01-2-2V4zm2 6a1 1 0 011-1h6a1 1 0 110 2H7a1 1 0 01-1-1zm1 3a1 1 0 100 2h6a1 1 0 100-2H7z"
50
- clipRule="evenodd"
51
- />
52
- </svg>
53
- Privacy Policy Preview
54
- </h3>
55
- <span className="text-xs text-gray-500 dark:text-gray-400 bg-gray-100 dark:bg-gray-700 px-2 py-1 rounded-full">
56
- Preview Mode
57
- </span>
58
- </div>
59
-
60
- <div
61
- ref={previewRef}
62
- className="prose dark:prose-invert prose-indigo max-w-none text-base prose-headings:text-gray-800 dark:prose-headings:text-gray-100 prose-p:text-gray-600 dark:prose-p:text-gray-300 prose-li:text-gray-600 dark:prose-li:text-gray-300 prose-h1:text-2xl prose-h1:font-bold prose-h2:text-xl prose-h2:font-semibold prose-h2:border-b prose-h2:border-gray-200 dark:prose-h2:border-gray-700 prose-h2:pb-2 prose-h2:mt-8 overflow-auto"
63
- >
64
- <h1>{formData.organizationName} Privacy Policy</h1>
65
-
66
- <h2>Introduction</h2>
67
- <p>
68
- This Privacy Policy describes how {formData.organizationName}{" "}
69
- collects, uses, and discloses your personal information.
70
- {formData.includeNDPRCompliance &&
71
- " This policy is compliant with the Nigeria Data Protection Regulation (NDPR) and the Data Protection Act (DPA)."}
72
- </p>
73
-
74
- <h2>About Us</h2>
75
- <p>
76
- {formData.organizationName}
77
- {formData.organizationAddress &&
78
- ` is located at ${formData.organizationAddress}`}
79
- .
80
- {formData.organizationWebsite &&
81
- ` Our website is ${formData.organizationWebsite}.`}
82
- </p>
83
-
84
- <h2>Information We Collect</h2>
85
- <p>
86
- We collect and process your personal data for the following
87
- purposes:
88
- </p>
89
- <ul>
90
- {(formData.dataCollectionPurposes || []).map((purpose, index) => (
91
- <li key={`purpose-${index}`}>{purpose}</li>
92
- ))}
93
- </ul>
94
-
95
- <h2>Data Retention</h2>
96
- <p>
97
- We will retain your personal data for{" "}
98
- {formData.dataRetentionPeriod ||
99
- "a period appropriate to the purpose"}
100
- , or for as long as necessary to fulfill the purposes for which it
101
- was collected.
102
- </p>
103
-
104
- {formData.thirdPartySharing &&
105
- (formData.thirdParties || []).length > 0 && (
106
- <>
107
- <h2>Third-Party Sharing</h2>
108
- <p>
109
- We may share your personal information with the following
110
- third parties:
111
- </p>
112
- <ul>
113
- {(formData.thirdParties || []).map((party, index) => (
114
- <li key={`party-${index}`}>{party}</li>
115
- ))}
116
- </ul>
117
- </>
118
- )}
119
-
120
- {formData.cookiesUsed &&
121
- (formData.cookieTypes || []).length > 0 && (
122
- <>
123
- <h2>Cookies and Tracking Technologies</h2>
124
- <p>
125
- Our website uses cookies and similar tracking technologies.
126
- We use the following types of cookies:
127
- </p>
128
- <ul>
129
- {(formData.cookieTypes || []).map((type, index) => (
130
- <li key={`type-${index}`}>{type}</li>
131
- ))}
132
- </ul>
133
- </>
134
- )}
135
-
136
- {formData.internationalTransfers &&
137
- (formData.transferCountries || []).length > 0 && (
138
- <>
139
- <h2>International Data Transfers</h2>
140
- <p>
141
- We may transfer your personal data to the following
142
- countries outside Nigeria:
143
- </p>
144
- <ul>
145
- {(formData.transferCountries || []).map(
146
- (country, index) => (
147
- <li key={`country-${index}`}>{country}</li>
148
- ),
149
- )}
150
- </ul>
151
- <p>
152
- We ensure appropriate safeguards are in place to protect
153
- your data when transferred internationally.
154
- </p>
155
- </>
156
- )}
157
-
158
- {(formData.securityMeasures || []).length > 0 && (
159
- <>
160
- <h2>Security Measures</h2>
161
- <p>
162
- We implement the following security measures to protect your
163
- personal data:
164
- </p>
165
- <ul>
166
- {(formData.securityMeasures || []).map((measure, index) => (
167
- <li key={`measure-${index}`}>{measure}</li>
168
- ))}
169
- </ul>
170
- </>
171
- )}
172
-
173
- <h2>Your Rights</h2>
174
- <p>
175
- {formData.includeNDPRCompliance
176
- ? "Under the NDPR and DPA, you have the following rights:"
177
- : "You have the following rights regarding your personal data:"}
178
- </p>
179
- <ul>
180
- <li>Right to access your personal data</li>
181
- <li>Right to rectify inaccurate personal data</li>
182
- <li>Right to erasure (&quot;right to be forgotten&quot;)</li>
183
- <li>Right to restrict processing</li>
184
- <li>Right to object to processing</li>
185
- <li>Right to data portability</li>
186
- </ul>
187
- <p>
188
- To exercise these rights, please contact us at{" "}
189
- {formData.organizationContact}.
190
- </p>
191
-
192
- {(formData.customSections || []).length > 0 &&
193
- (formData.customSections || []).map((section, index) => (
194
- <div key={`section-${index}`}>
195
- <h2>{section.title}</h2>
196
- <p>{section.template}</p>
197
- </div>
198
- ))}
199
-
200
- {formData.hasDPO && formData.dpoContact && (
201
- <>
202
- <h2>Data Protection Officer</h2>
203
- <p>
204
- You can contact our Data Protection Officer at{" "}
205
- {formData.dpoContact}.
206
- </p>
207
- </>
208
- )}
209
-
210
- <h2>Contact Us</h2>
211
- <p>
212
- If you have any questions about this Privacy Policy, please
213
- contact us at {formData.organizationContact}.
214
- </p>
215
-
216
- <p className="text-gray-500 dark:text-gray-400 mt-4">
217
- Last Updated:{" "}
218
- {formData.policyEffectiveDate ||
219
- new Date().toISOString().split("T")[0]}
220
- </p>
221
- </div>
222
- </CardContent>
223
- </Card>
224
- </div>
225
- );
226
- }
@@ -1,46 +0,0 @@
1
- 'use client';
2
-
3
- import React from 'react';
4
- import { cva, type VariantProps } from 'class-variance-authority';
5
- import { cn } from '@/lib/utils';
6
-
7
- const badgeVariants = cva(
8
- "inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium transition-colors focus:outline-none focus:ring-2 focus:ring-offset-2",
9
- {
10
- variants: {
11
- variant: {
12
- default: "bg-gray-700 text-white dark:bg-gray-500 focus:ring-gray-500",
13
- primary: "bg-blue-700 text-white dark:bg-blue-600 focus:ring-blue-500",
14
- secondary: "bg-gray-600 text-white dark:bg-gray-400 focus:ring-gray-500",
15
- success: "bg-green-700 text-white dark:bg-green-600 focus:ring-green-500",
16
- danger: "bg-red-700 text-white dark:bg-red-600 focus:ring-red-500",
17
- warning: "bg-amber-700 text-white dark:bg-amber-600 focus:ring-amber-500",
18
- info: "bg-blue-700 text-white dark:bg-blue-600 focus:ring-blue-500",
19
- outline: "border-2 border-gray-700 dark:border-gray-300 text-gray-900 dark:text-gray-100 focus:ring-gray-500",
20
- },
21
- },
22
- defaultVariants: {
23
- variant: "default",
24
- },
25
- }
26
- );
27
-
28
- export interface BadgeProps
29
- extends React.HTMLAttributes<HTMLDivElement>,
30
- VariantProps<typeof badgeVariants> {}
31
-
32
- const Badge = React.forwardRef<HTMLDivElement, BadgeProps>(
33
- ({ className, variant, ...props }, ref) => {
34
- return (
35
- <div
36
- ref={ref}
37
- className={cn(badgeVariants({ variant }), className)}
38
- {...props}
39
- />
40
- );
41
- }
42
- );
43
-
44
- Badge.displayName = "Badge";
45
-
46
- export { Badge, badgeVariants };
@@ -1,59 +0,0 @@
1
- import * as React from "react"
2
- import { Slot } from "@radix-ui/react-slot"
3
- import { cva, type VariantProps } from "class-variance-authority"
4
-
5
- import { cn } from "@/lib/utils"
6
-
7
- const buttonVariants = cva(
8
- "inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",
9
- {
10
- variants: {
11
- variant: {
12
- default:
13
- "bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",
14
- destructive:
15
- "bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",
16
- outline:
17
- "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",
18
- secondary:
19
- "bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",
20
- ghost:
21
- "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
22
- link: "text-primary underline-offset-4 hover:underline",
23
- },
24
- size: {
25
- default: "h-9 px-4 py-2 has-[>svg]:px-3",
26
- sm: "h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",
27
- lg: "h-10 rounded-md px-6 has-[>svg]:px-4",
28
- icon: "size-9",
29
- },
30
- },
31
- defaultVariants: {
32
- variant: "default",
33
- size: "default",
34
- },
35
- }
36
- )
37
-
38
- function Button({
39
- className,
40
- variant,
41
- size,
42
- asChild = false,
43
- ...props
44
- }: React.ComponentProps<"button"> &
45
- VariantProps<typeof buttonVariants> & {
46
- asChild?: boolean
47
- }) {
48
- const Comp = asChild ? Slot : "button"
49
-
50
- return (
51
- <Comp
52
- data-slot="button"
53
- className={cn(buttonVariants({ variant, size, className }))}
54
- {...props}
55
- />
56
- )
57
- }
58
-
59
- export { Button, buttonVariants }
@@ -1,92 +0,0 @@
1
- import * as React from "react"
2
-
3
- import { cn } from "@/lib/utils"
4
-
5
- function Card({ className, ...props }: React.ComponentProps<"div">) {
6
- return (
7
- <div
8
- data-slot="card"
9
- className={cn(
10
- "bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",
11
- className
12
- )}
13
- {...props}
14
- />
15
- )
16
- }
17
-
18
- function CardHeader({ className, ...props }: React.ComponentProps<"div">) {
19
- return (
20
- <div
21
- data-slot="card-header"
22
- className={cn(
23
- "@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",
24
- className
25
- )}
26
- {...props}
27
- />
28
- )
29
- }
30
-
31
- function CardTitle({ className, ...props }: React.ComponentProps<"div">) {
32
- return (
33
- <div
34
- data-slot="card-title"
35
- className={cn("leading-none font-semibold", className)}
36
- {...props}
37
- />
38
- )
39
- }
40
-
41
- function CardDescription({ className, ...props }: React.ComponentProps<"div">) {
42
- return (
43
- <div
44
- data-slot="card-description"
45
- className={cn("text-muted-foreground text-sm", className)}
46
- {...props}
47
- />
48
- )
49
- }
50
-
51
- function CardAction({ className, ...props }: React.ComponentProps<"div">) {
52
- return (
53
- <div
54
- data-slot="card-action"
55
- className={cn(
56
- "col-start-2 row-span-2 row-start-1 self-start justify-self-end",
57
- className
58
- )}
59
- {...props}
60
- />
61
- )
62
- }
63
-
64
- function CardContent({ className, ...props }: React.ComponentProps<"div">) {
65
- return (
66
- <div
67
- data-slot="card-content"
68
- className={cn("px-6", className)}
69
- {...props}
70
- />
71
- )
72
- }
73
-
74
- function CardFooter({ className, ...props }: React.ComponentProps<"div">) {
75
- return (
76
- <div
77
- data-slot="card-footer"
78
- className={cn("flex items-center px-6 [.border-t]:pt-6", className)}
79
- {...props}
80
- />
81
- )
82
- }
83
-
84
- export {
85
- Card,
86
- CardHeader,
87
- CardFooter,
88
- CardTitle,
89
- CardAction,
90
- CardDescription,
91
- CardContent,
92
- }
@@ -1,57 +0,0 @@
1
- 'use client';
2
-
3
- import React from 'react';
4
- import { cn } from '@/lib/utils';
5
-
6
- export interface CheckboxProps extends React.InputHTMLAttributes<HTMLInputElement> {
7
- label?: string;
8
- description?: string;
9
- }
10
-
11
- const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(
12
- ({ className, label, description, ...props }, ref) => {
13
- const generatedId = React.useId();
14
- const id = props.id || generatedId;
15
-
16
- return (
17
- <div className="flex items-start">
18
- <div className="flex items-center h-5">
19
- <input
20
- type="checkbox"
21
- id={id}
22
- className={cn(
23
- "h-4 w-4 rounded border-gray-300 text-blue-600",
24
- "focus:ring-blue-500 focus:ring-offset-0",
25
- "disabled:opacity-70 disabled:cursor-not-allowed",
26
- className
27
- )}
28
- ref={ref}
29
- {...props}
30
- />
31
- </div>
32
- {(label || description) && (
33
- <div className="ml-3 text-sm">
34
- {label && (
35
- <label
36
- htmlFor={id}
37
- className={cn(
38
- "font-medium text-gray-900 dark:text-white",
39
- props.disabled && "text-gray-500 dark:text-gray-400"
40
- )}
41
- >
42
- {label}
43
- </label>
44
- )}
45
- {description && (
46
- <p className="text-gray-500 dark:text-gray-400">{description}</p>
47
- )}
48
- </div>
49
- )}
50
- </div>
51
- );
52
- }
53
- );
54
-
55
- Checkbox.displayName = "Checkbox";
56
-
57
- export { Checkbox };
@@ -1,50 +0,0 @@
1
- 'use client';
2
-
3
- import React from 'react';
4
- import { cn } from '@/lib/utils';
5
-
6
- interface FormFieldProps extends React.HTMLAttributes<HTMLDivElement> {
7
- id: string;
8
- label: string;
9
- description?: string;
10
- error?: string;
11
- required?: boolean;
12
- }
13
-
14
- const FormField = React.forwardRef<HTMLDivElement, FormFieldProps>(
15
- ({ id, label, description, error, required = false, className, children, ...props }, ref) => {
16
- return (
17
- <div ref={ref} className={cn("mb-4", className)} {...props}>
18
- <div className="mb-1.5">
19
- <label
20
- htmlFor={id}
21
- className="block text-sm font-medium text-gray-900 dark:text-gray-100"
22
- >
23
- {label}
24
- {required && <span className="ml-1 text-red-500">*</span>}
25
- </label>
26
-
27
- {description && (
28
- <p className="mt-1 text-xs text-gray-500 dark:text-gray-400">
29
- {description}
30
- </p>
31
- )}
32
- </div>
33
-
34
- <div className="mt-1">
35
- {children}
36
- </div>
37
-
38
- {error && (
39
- <p className="mt-1.5 text-xs text-red-600 dark:text-red-400">
40
- {error}
41
- </p>
42
- )}
43
- </div>
44
- );
45
- }
46
- );
47
-
48
- FormField.displayName = "FormField";
49
-
50
- export { FormField };
@@ -1,38 +0,0 @@
1
- 'use client';
2
-
3
- import * as React from "react"
4
-
5
- import { cn } from "@/lib/utils"
6
-
7
- // This interface extends the standard HTML input attributes
8
- // and allows for additional props to be added in the future
9
- /* eslint-disable-next-line @typescript-eslint/no-empty-object-type */
10
- export interface InputProps
11
- extends React.InputHTMLAttributes<HTMLInputElement> {
12
- // Custom props can be added here
13
- }
14
-
15
- const Input = React.forwardRef<HTMLInputElement, InputProps>(
16
- ({ className, type, ...props }, ref) => {
17
- return (
18
- <input
19
- type={type}
20
- className={cn(
21
- "block w-full px-3 py-2 text-base",
22
- "border border-gray-300 dark:border-gray-600 rounded-md shadow-sm",
23
- "bg-white dark:bg-gray-800 text-gray-900 dark:text-white",
24
- "placeholder:text-gray-400 dark:placeholder:text-gray-500",
25
- "focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500 dark:focus:ring-blue-400 dark:focus:border-blue-400",
26
- "disabled:cursor-not-allowed disabled:opacity-50 disabled:bg-gray-50 dark:disabled:bg-gray-900",
27
- className
28
- )}
29
- ref={ref}
30
- {...props}
31
- />
32
- );
33
- }
34
- );
35
-
36
- Input.displayName = "Input";
37
-
38
- export { Input };