@tantainnovative/ndpr-toolkit 1.0.9 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. package/README.md +295 -124
  2. package/dist/breach-BpSBPrdk.d.mts +185 -0
  3. package/dist/breach-BpSBPrdk.d.ts +185 -0
  4. package/dist/breach-D5zJYNph.d.mts +17 -0
  5. package/dist/breach-D7NgrdMX.d.ts +17 -0
  6. package/dist/breach.d.mts +275 -0
  7. package/dist/breach.d.ts +275 -0
  8. package/dist/breach.js +2 -0
  9. package/dist/breach.js.map +1 -0
  10. package/dist/breach.mjs +2 -0
  11. package/dist/breach.mjs.map +1 -0
  12. package/dist/chunk-2SYNHRP6.mjs +2 -0
  13. package/dist/chunk-2SYNHRP6.mjs.map +1 -0
  14. package/dist/chunk-2XHD22J7.mjs +7 -0
  15. package/dist/chunk-2XHD22J7.mjs.map +1 -0
  16. package/dist/chunk-4A354HL3.js +2 -0
  17. package/dist/chunk-4A354HL3.js.map +1 -0
  18. package/dist/chunk-4DKT6IB6.js +94 -0
  19. package/dist/chunk-4DKT6IB6.js.map +1 -0
  20. package/dist/chunk-5ZBO2UPH.js +2 -0
  21. package/dist/chunk-5ZBO2UPH.js.map +1 -0
  22. package/dist/chunk-6JFTAYXV.mjs +2 -0
  23. package/dist/chunk-6JFTAYXV.mjs.map +1 -0
  24. package/dist/chunk-6JVYYLS7.js +2 -0
  25. package/dist/chunk-6JVYYLS7.js.map +1 -0
  26. package/dist/chunk-6SGG6WPA.mjs +2 -0
  27. package/dist/chunk-6SGG6WPA.mjs.map +1 -0
  28. package/dist/chunk-AQEGDEQM.js +7 -0
  29. package/dist/chunk-AQEGDEQM.js.map +1 -0
  30. package/dist/chunk-C2IJWCZQ.mjs +2 -0
  31. package/dist/chunk-C2IJWCZQ.mjs.map +1 -0
  32. package/dist/chunk-CMZTI7SG.js +2 -0
  33. package/dist/chunk-CMZTI7SG.js.map +1 -0
  34. package/dist/chunk-DB3JH4DS.mjs +2 -0
  35. package/dist/chunk-DB3JH4DS.mjs.map +1 -0
  36. package/dist/chunk-EWOZKYLY.mjs +2 -0
  37. package/dist/chunk-EWOZKYLY.mjs.map +1 -0
  38. package/dist/chunk-FFW7RUAG.mjs +94 -0
  39. package/dist/chunk-FFW7RUAG.mjs.map +1 -0
  40. package/dist/chunk-FK3CSFLJ.js +2 -0
  41. package/dist/chunk-FK3CSFLJ.js.map +1 -0
  42. package/dist/chunk-GIV2OHE6.mjs +2 -0
  43. package/dist/chunk-GIV2OHE6.mjs.map +1 -0
  44. package/dist/chunk-GMLNWS2N.mjs +2 -0
  45. package/dist/chunk-GMLNWS2N.mjs.map +1 -0
  46. package/dist/chunk-IQF726GS.js +2 -0
  47. package/dist/chunk-IQF726GS.js.map +1 -0
  48. package/dist/chunk-IWUUVRLJ.js +2 -0
  49. package/dist/chunk-IWUUVRLJ.js.map +1 -0
  50. package/dist/chunk-JUN6YPLL.mjs +72 -0
  51. package/dist/chunk-JUN6YPLL.mjs.map +1 -0
  52. package/dist/chunk-L3FKTBGV.js +72 -0
  53. package/dist/chunk-L3FKTBGV.js.map +1 -0
  54. package/dist/chunk-L52PDW6O.mjs +2 -0
  55. package/dist/chunk-L52PDW6O.mjs.map +1 -0
  56. package/dist/chunk-LI6WJ3LZ.js +2 -0
  57. package/dist/chunk-LI6WJ3LZ.js.map +1 -0
  58. package/dist/chunk-LXRXDTPI.js +2 -0
  59. package/dist/chunk-LXRXDTPI.js.map +1 -0
  60. package/dist/chunk-MQFZHA2D.js +2 -0
  61. package/dist/chunk-MQFZHA2D.js.map +1 -0
  62. package/dist/chunk-OITITR6K.mjs +2 -0
  63. package/dist/chunk-OITITR6K.mjs.map +1 -0
  64. package/dist/chunk-PDJGTQMY.mjs +2 -0
  65. package/dist/chunk-PDJGTQMY.mjs.map +1 -0
  66. package/dist/chunk-PGSA2O5P.mjs +2 -0
  67. package/dist/chunk-PGSA2O5P.mjs.map +1 -0
  68. package/dist/chunk-PM7CMTMB.js +4 -0
  69. package/dist/chunk-PM7CMTMB.js.map +1 -0
  70. package/dist/chunk-PYEX7DFR.mjs +4 -0
  71. package/dist/chunk-PYEX7DFR.mjs.map +1 -0
  72. package/dist/chunk-QKK5S54L.mjs +2 -0
  73. package/dist/chunk-QKK5S54L.mjs.map +1 -0
  74. package/dist/chunk-RB26MIRI.js +2 -0
  75. package/dist/chunk-RB26MIRI.js.map +1 -0
  76. package/dist/chunk-RGYK4VAY.mjs +2 -0
  77. package/dist/chunk-RGYK4VAY.mjs.map +1 -0
  78. package/dist/chunk-RHWW5FDP.js +16 -0
  79. package/dist/chunk-RHWW5FDP.js.map +1 -0
  80. package/dist/chunk-RYZEIDNR.js +2 -0
  81. package/dist/chunk-RYZEIDNR.js.map +1 -0
  82. package/dist/chunk-SLNMKGQ2.mjs +2 -0
  83. package/dist/chunk-SLNMKGQ2.mjs.map +1 -0
  84. package/dist/chunk-SSGJREE3.js +2 -0
  85. package/dist/chunk-SSGJREE3.js.map +1 -0
  86. package/dist/chunk-SWF3YVE5.js +4 -0
  87. package/dist/chunk-SWF3YVE5.js.map +1 -0
  88. package/dist/chunk-T44JQT2O.mjs +2 -0
  89. package/dist/chunk-T44JQT2O.mjs.map +1 -0
  90. package/dist/chunk-TDDAYVKK.js +2 -0
  91. package/dist/chunk-TDDAYVKK.js.map +1 -0
  92. package/dist/chunk-TXBZPCGF.mjs +2 -0
  93. package/dist/chunk-TXBZPCGF.mjs.map +1 -0
  94. package/dist/chunk-U2CGMEWB.js +2 -0
  95. package/dist/chunk-U2CGMEWB.js.map +1 -0
  96. package/dist/chunk-UUWVBENC.js +2 -0
  97. package/dist/chunk-UUWVBENC.js.map +1 -0
  98. package/dist/chunk-UYP64PV7.mjs +4 -0
  99. package/dist/chunk-UYP64PV7.mjs.map +1 -0
  100. package/dist/chunk-VMJBW3EF.mjs +2 -0
  101. package/dist/chunk-VMJBW3EF.mjs.map +1 -0
  102. package/dist/chunk-WW3X3ELF.js +2 -0
  103. package/dist/chunk-WW3X3ELF.js.map +1 -0
  104. package/dist/chunk-WWT2ZSNU.mjs +2 -0
  105. package/dist/chunk-WWT2ZSNU.mjs.map +1 -0
  106. package/dist/chunk-XMKA6GVK.mjs +16 -0
  107. package/dist/chunk-XMKA6GVK.mjs.map +1 -0
  108. package/dist/chunk-Y34DQYS7.js +2 -0
  109. package/dist/chunk-Y34DQYS7.js.map +1 -0
  110. package/dist/chunk-ZU73VG3X.js +2 -0
  111. package/dist/chunk-ZU73VG3X.js.map +1 -0
  112. package/dist/consent-CmVzqZUk.d.mts +99 -0
  113. package/dist/consent-CmVzqZUk.d.ts +99 -0
  114. package/dist/consent-DCc5zjXI.d.mts +24 -0
  115. package/dist/consent-DLWb5ota.d.ts +24 -0
  116. package/dist/consent.d.mts +197 -0
  117. package/dist/consent.d.ts +197 -0
  118. package/dist/consent.js +2 -0
  119. package/dist/consent.js.map +1 -0
  120. package/dist/consent.mjs +2 -0
  121. package/dist/consent.mjs.map +1 -0
  122. package/dist/core.d.mts +14 -0
  123. package/dist/core.d.ts +14 -0
  124. package/dist/core.js +2 -0
  125. package/dist/core.js.map +1 -0
  126. package/dist/core.mjs +2 -0
  127. package/dist/core.mjs.map +1 -0
  128. package/dist/cross-border-BrIy1ieh.d.mts +192 -0
  129. package/dist/cross-border-BrIy1ieh.d.ts +192 -0
  130. package/dist/cross-border.d.mts +58 -0
  131. package/dist/cross-border.d.ts +58 -0
  132. package/dist/cross-border.js +2 -0
  133. package/dist/cross-border.js.map +1 -0
  134. package/dist/cross-border.mjs +2 -0
  135. package/dist/cross-border.mjs.map +1 -0
  136. package/dist/dpia-B9ZZJG5a.d.mts +15 -0
  137. package/dist/dpia-fdtTd2DI.d.ts +15 -0
  138. package/dist/dpia-vWfE_9bO.d.mts +137 -0
  139. package/dist/dpia-vWfE_9bO.d.ts +137 -0
  140. package/dist/dpia.d.mts +179 -0
  141. package/dist/dpia.d.ts +179 -0
  142. package/dist/dpia.js +2 -0
  143. package/dist/dpia.js.map +1 -0
  144. package/dist/dpia.mjs +2 -0
  145. package/dist/dpia.mjs.map +1 -0
  146. package/dist/dsr-jq5NUEdz.d.ts +14 -0
  147. package/dist/dsr-pQzQ3H1O.d.mts +128 -0
  148. package/dist/dsr-pQzQ3H1O.d.ts +128 -0
  149. package/dist/dsr-whPkiI0_.d.mts +14 -0
  150. package/dist/dsr.d.mts +192 -0
  151. package/dist/dsr.d.ts +192 -0
  152. package/dist/dsr.js +2 -0
  153. package/dist/dsr.js.map +1 -0
  154. package/dist/dsr.mjs +2 -0
  155. package/dist/dsr.mjs.map +1 -0
  156. package/dist/hooks.d.mts +17 -0
  157. package/dist/hooks.d.ts +17 -0
  158. package/dist/hooks.js +2 -0
  159. package/dist/hooks.js.map +1 -0
  160. package/dist/hooks.mjs +2 -0
  161. package/dist/hooks.mjs.map +1 -0
  162. package/dist/index.d.mts +31 -448
  163. package/dist/index.d.ts +31 -448
  164. package/dist/index.js +1 -190
  165. package/dist/index.js.map +1 -1
  166. package/dist/index.mjs +1 -190
  167. package/dist/index.mjs.map +1 -1
  168. package/dist/lawful-basis-CWtvDG1x.d.mts +112 -0
  169. package/dist/lawful-basis-CWtvDG1x.d.ts +112 -0
  170. package/dist/lawful-basis-D-oXFizg.d.mts +57 -0
  171. package/dist/lawful-basis-v04AhbK2.d.ts +57 -0
  172. package/dist/lawful-basis.d.mts +55 -0
  173. package/dist/lawful-basis.d.ts +55 -0
  174. package/dist/lawful-basis.js +2 -0
  175. package/dist/lawful-basis.js.map +1 -0
  176. package/dist/lawful-basis.mjs +2 -0
  177. package/dist/lawful-basis.mjs.map +1 -0
  178. package/dist/policy.d.mts +195 -0
  179. package/dist/policy.d.ts +195 -0
  180. package/dist/policy.js +2 -0
  181. package/dist/policy.js.map +1 -0
  182. package/dist/policy.mjs +2 -0
  183. package/dist/policy.mjs.map +1 -0
  184. package/dist/privacy-9FcJceMr.d.mts +15 -0
  185. package/dist/privacy-BXz7O2ej.d.ts +15 -0
  186. package/dist/privacy-Ca6te9Ir.d.mts +138 -0
  187. package/dist/privacy-Ca6te9Ir.d.ts +138 -0
  188. package/dist/ropa-BebGfqKQ.d.ts +200 -0
  189. package/dist/ropa-Rb4dsFSz.d.mts +200 -0
  190. package/dist/ropa.d.mts +45 -0
  191. package/dist/ropa.d.ts +45 -0
  192. package/dist/ropa.js +2 -0
  193. package/dist/ropa.js.map +1 -0
  194. package/dist/ropa.mjs +2 -0
  195. package/dist/ropa.mjs.map +1 -0
  196. package/dist/unstyled.d.mts +4 -4
  197. package/dist/unstyled.d.ts +4 -4
  198. package/dist/unstyled.js +1 -1
  199. package/dist/unstyled.js.map +1 -1
  200. package/dist/unstyled.mjs +1 -1
  201. package/dist/unstyled.mjs.map +1 -1
  202. package/dist/useBreach-DRKnexsk.d.mts +99 -0
  203. package/dist/useBreach-DuT0N0K1.d.ts +99 -0
  204. package/dist/useConsent-D0pAfTlb.d.ts +65 -0
  205. package/dist/useConsent-DOt2Njst.d.mts +65 -0
  206. package/dist/useCrossBorderTransfer-D4FQYfFt.d.ts +66 -0
  207. package/dist/useCrossBorderTransfer-TVnY8_UX.d.mts +66 -0
  208. package/dist/useDPIA-DFDHBLSa.d.ts +94 -0
  209. package/dist/useDPIA-FqPofFaV.d.mts +94 -0
  210. package/dist/useDSR-DAqqOBXb.d.ts +74 -0
  211. package/dist/useDSR-OXM5Q9rf.d.mts +74 -0
  212. package/dist/useLawfulBasis-DNQ8YszQ.d.mts +68 -0
  213. package/dist/useLawfulBasis-RILM_xsx.d.ts +68 -0
  214. package/dist/usePrivacyPolicy-CfySfBLS.d.ts +89 -0
  215. package/dist/usePrivacyPolicy-Dit2sFuV.d.mts +89 -0
  216. package/dist/useROPA-Bcs6cRdi.d.ts +64 -0
  217. package/dist/useROPA-nmcSiUYv.d.mts +64 -0
  218. package/package.json +162 -35
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Lawful Basis types aligned with NDPA 2023 Part III (Sections 24-28)
3
+ * Every processing activity must have a documented lawful basis
4
+ */
5
+ /**
6
+ * The six lawful bases for processing personal data per NDPA Section 25(1)
7
+ */
8
+ type LawfulBasis = 'consent' | 'contract' | 'legal_obligation' | 'vital_interests' | 'public_interest' | 'legitimate_interests';
9
+ /**
10
+ * Additional conditions required for processing sensitive personal data
11
+ * per NDPA Section 27
12
+ */
13
+ type SensitiveDataCondition = 'explicit_consent' | 'employment_law' | 'vital_interests_incapable' | 'nonprofit_legitimate' | 'publicly_available' | 'legal_claims' | 'substantial_public_interest' | 'health_purposes' | 'public_health' | 'archiving_research';
14
+ /**
15
+ * Represents a processing activity and its lawful basis
16
+ */
17
+ interface ProcessingActivity {
18
+ /** Unique identifier */
19
+ id: string;
20
+ /** Name of the processing activity */
21
+ name: string;
22
+ /** Description of what processing is performed */
23
+ description: string;
24
+ /** The lawful basis for this processing activity */
25
+ lawfulBasis: LawfulBasis;
26
+ /** Justification for why this lawful basis applies */
27
+ lawfulBasisJustification: string;
28
+ /** Categories of personal data being processed */
29
+ dataCategories: string[];
30
+ /** Whether sensitive personal data is involved */
31
+ involvesSensitiveData: boolean;
32
+ /** Condition for processing sensitive data (required if involvesSensitiveData is true) */
33
+ sensitiveDataCondition?: SensitiveDataCondition;
34
+ /** Categories of data subjects */
35
+ dataSubjectCategories: string[];
36
+ /** Purposes of the processing */
37
+ purposes: string[];
38
+ /** Data retention period */
39
+ retentionPeriod: string;
40
+ /** Justification for the retention period */
41
+ retentionJustification?: string;
42
+ /** Recipients or categories of recipients */
43
+ recipients?: string[];
44
+ /** Whether data is transferred outside Nigeria */
45
+ crossBorderTransfer: boolean;
46
+ /** Timestamp when the record was created */
47
+ createdAt: number;
48
+ /** Timestamp when the record was last updated */
49
+ updatedAt: number;
50
+ /** Next review date */
51
+ reviewDate?: number;
52
+ /** Status of the processing activity */
53
+ status: 'active' | 'inactive' | 'under_review' | 'archived';
54
+ /** DPO approval details */
55
+ dpoApproval?: {
56
+ approved: boolean;
57
+ approvedBy: string;
58
+ approvedAt: number;
59
+ notes?: string;
60
+ };
61
+ }
62
+ /**
63
+ * Represents a Legitimate Interest Assessment (LIA)
64
+ * Required when the lawful basis is 'legitimate_interests'
65
+ */
66
+ interface LegitimateInterestAssessment {
67
+ /** Unique identifier */
68
+ id: string;
69
+ /** ID of the associated processing activity */
70
+ processingActivityId: string;
71
+ /** Date the assessment was conducted */
72
+ assessmentDate: number;
73
+ /** Person who conducted the assessment */
74
+ assessor: {
75
+ name: string;
76
+ role: string;
77
+ email: string;
78
+ };
79
+ /** Description of the legitimate interest being pursued */
80
+ purposeTest: string;
81
+ /** Why the processing is necessary for this purpose */
82
+ necessityTest: string;
83
+ /** Balancing test: rights of data subject vs. legitimate interest */
84
+ balancingTest: string;
85
+ /** Safeguards applied to protect data subject rights */
86
+ safeguards: string[];
87
+ /** Overall conclusion */
88
+ conclusion: string;
89
+ /** Whether the assessment concluded the processing is justified */
90
+ approved: boolean;
91
+ }
92
+ /**
93
+ * Summary of all lawful basis documentation for compliance reporting
94
+ */
95
+ interface LawfulBasisSummary {
96
+ /** Total number of processing activities */
97
+ totalActivities: number;
98
+ /** Breakdown by lawful basis */
99
+ byBasis: Record<LawfulBasis, number>;
100
+ /** Number of activities involving sensitive data */
101
+ sensitiveDataActivities: number;
102
+ /** Number of activities involving cross-border transfers */
103
+ crossBorderActivities: number;
104
+ /** Activities due for review */
105
+ activitiesDueForReview: ProcessingActivity[];
106
+ /** Activities without DPO approval */
107
+ activitiesWithoutApproval: ProcessingActivity[];
108
+ /** Last updated timestamp */
109
+ lastUpdated: number;
110
+ }
111
+
112
+ export type { LawfulBasis as L, ProcessingActivity as P, SensitiveDataCondition as S, LegitimateInterestAssessment as a, LawfulBasisSummary as b };
@@ -0,0 +1,112 @@
1
+ /**
2
+ * Lawful Basis types aligned with NDPA 2023 Part III (Sections 24-28)
3
+ * Every processing activity must have a documented lawful basis
4
+ */
5
+ /**
6
+ * The six lawful bases for processing personal data per NDPA Section 25(1)
7
+ */
8
+ type LawfulBasis = 'consent' | 'contract' | 'legal_obligation' | 'vital_interests' | 'public_interest' | 'legitimate_interests';
9
+ /**
10
+ * Additional conditions required for processing sensitive personal data
11
+ * per NDPA Section 27
12
+ */
13
+ type SensitiveDataCondition = 'explicit_consent' | 'employment_law' | 'vital_interests_incapable' | 'nonprofit_legitimate' | 'publicly_available' | 'legal_claims' | 'substantial_public_interest' | 'health_purposes' | 'public_health' | 'archiving_research';
14
+ /**
15
+ * Represents a processing activity and its lawful basis
16
+ */
17
+ interface ProcessingActivity {
18
+ /** Unique identifier */
19
+ id: string;
20
+ /** Name of the processing activity */
21
+ name: string;
22
+ /** Description of what processing is performed */
23
+ description: string;
24
+ /** The lawful basis for this processing activity */
25
+ lawfulBasis: LawfulBasis;
26
+ /** Justification for why this lawful basis applies */
27
+ lawfulBasisJustification: string;
28
+ /** Categories of personal data being processed */
29
+ dataCategories: string[];
30
+ /** Whether sensitive personal data is involved */
31
+ involvesSensitiveData: boolean;
32
+ /** Condition for processing sensitive data (required if involvesSensitiveData is true) */
33
+ sensitiveDataCondition?: SensitiveDataCondition;
34
+ /** Categories of data subjects */
35
+ dataSubjectCategories: string[];
36
+ /** Purposes of the processing */
37
+ purposes: string[];
38
+ /** Data retention period */
39
+ retentionPeriod: string;
40
+ /** Justification for the retention period */
41
+ retentionJustification?: string;
42
+ /** Recipients or categories of recipients */
43
+ recipients?: string[];
44
+ /** Whether data is transferred outside Nigeria */
45
+ crossBorderTransfer: boolean;
46
+ /** Timestamp when the record was created */
47
+ createdAt: number;
48
+ /** Timestamp when the record was last updated */
49
+ updatedAt: number;
50
+ /** Next review date */
51
+ reviewDate?: number;
52
+ /** Status of the processing activity */
53
+ status: 'active' | 'inactive' | 'under_review' | 'archived';
54
+ /** DPO approval details */
55
+ dpoApproval?: {
56
+ approved: boolean;
57
+ approvedBy: string;
58
+ approvedAt: number;
59
+ notes?: string;
60
+ };
61
+ }
62
+ /**
63
+ * Represents a Legitimate Interest Assessment (LIA)
64
+ * Required when the lawful basis is 'legitimate_interests'
65
+ */
66
+ interface LegitimateInterestAssessment {
67
+ /** Unique identifier */
68
+ id: string;
69
+ /** ID of the associated processing activity */
70
+ processingActivityId: string;
71
+ /** Date the assessment was conducted */
72
+ assessmentDate: number;
73
+ /** Person who conducted the assessment */
74
+ assessor: {
75
+ name: string;
76
+ role: string;
77
+ email: string;
78
+ };
79
+ /** Description of the legitimate interest being pursued */
80
+ purposeTest: string;
81
+ /** Why the processing is necessary for this purpose */
82
+ necessityTest: string;
83
+ /** Balancing test: rights of data subject vs. legitimate interest */
84
+ balancingTest: string;
85
+ /** Safeguards applied to protect data subject rights */
86
+ safeguards: string[];
87
+ /** Overall conclusion */
88
+ conclusion: string;
89
+ /** Whether the assessment concluded the processing is justified */
90
+ approved: boolean;
91
+ }
92
+ /**
93
+ * Summary of all lawful basis documentation for compliance reporting
94
+ */
95
+ interface LawfulBasisSummary {
96
+ /** Total number of processing activities */
97
+ totalActivities: number;
98
+ /** Breakdown by lawful basis */
99
+ byBasis: Record<LawfulBasis, number>;
100
+ /** Number of activities involving sensitive data */
101
+ sensitiveDataActivities: number;
102
+ /** Number of activities involving cross-border transfers */
103
+ crossBorderActivities: number;
104
+ /** Activities due for review */
105
+ activitiesDueForReview: ProcessingActivity[];
106
+ /** Activities without DPO approval */
107
+ activitiesWithoutApproval: ProcessingActivity[];
108
+ /** Last updated timestamp */
109
+ lastUpdated: number;
110
+ }
111
+
112
+ export type { LawfulBasis as L, ProcessingActivity as P, SensitiveDataCondition as S, LegitimateInterestAssessment as a, LawfulBasisSummary as b };
@@ -0,0 +1,57 @@
1
+ import { P as ProcessingActivity, L as LawfulBasis, b as LawfulBasisSummary } from './lawful-basis-CWtvDG1x.mjs';
2
+
3
+ /**
4
+ * Validation result for a processing activity
5
+ */
6
+ interface LawfulBasisValidationResult {
7
+ isValid: boolean;
8
+ errors: string[];
9
+ warnings: string[];
10
+ }
11
+ /**
12
+ * Compliance gap identified across processing activities
13
+ */
14
+ interface LawfulBasisComplianceGap {
15
+ activityId: string;
16
+ activityName: string;
17
+ type: 'missing_approval' | 'overdue_review' | 'missing_justification' | 'missing_lia' | 'missing_sensitive_condition' | 'missing_retention' | 'missing_data_categories' | 'missing_purposes';
18
+ severity: 'high' | 'medium' | 'low';
19
+ description: string;
20
+ }
21
+ /**
22
+ * Validates that all required fields are present on a processing activity
23
+ * and that the lawful basis is properly documented.
24
+ *
25
+ * If lawfulBasis is 'legitimate_interests', ensures a LIA justification exists.
26
+ * If involvesSensitiveData is true, ensures sensitiveDataCondition is set.
27
+ *
28
+ * @param activity The processing activity to validate
29
+ * @returns Validation result with errors and warnings
30
+ */
31
+ declare function validateProcessingActivity(activity: ProcessingActivity): LawfulBasisValidationResult;
32
+ /**
33
+ * Returns a human-readable description of a lawful basis with the relevant
34
+ * NDPA section reference.
35
+ *
36
+ * @param basis The lawful basis to describe
37
+ * @returns Description string including NDPA section reference
38
+ */
39
+ declare function getLawfulBasisDescription(basis: LawfulBasis): string;
40
+ /**
41
+ * Analyzes all processing activities and returns compliance gaps including
42
+ * missing DPO approval, overdue reviews, undocumented justifications,
43
+ * missing LIA for legitimate interests, and other documentation issues.
44
+ *
45
+ * @param activities Array of processing activities to analyze
46
+ * @returns Array of identified compliance gaps
47
+ */
48
+ declare function assessComplianceGaps(activities: ProcessingActivity[]): LawfulBasisComplianceGap[];
49
+ /**
50
+ * Generates a summary of all lawful basis documentation across processing activities.
51
+ *
52
+ * @param activities Array of processing activities to summarize
53
+ * @returns LawfulBasisSummary with counts, breakdowns, and flagged activities
54
+ */
55
+ declare function generateLawfulBasisSummary(activities: ProcessingActivity[]): LawfulBasisSummary;
56
+
57
+ export { type LawfulBasisComplianceGap as L, assessComplianceGaps as a, generateLawfulBasisSummary as b, type LawfulBasisValidationResult as c, getLawfulBasisDescription as g, validateProcessingActivity as v };
@@ -0,0 +1,57 @@
1
+ import { P as ProcessingActivity, L as LawfulBasis, b as LawfulBasisSummary } from './lawful-basis-CWtvDG1x.js';
2
+
3
+ /**
4
+ * Validation result for a processing activity
5
+ */
6
+ interface LawfulBasisValidationResult {
7
+ isValid: boolean;
8
+ errors: string[];
9
+ warnings: string[];
10
+ }
11
+ /**
12
+ * Compliance gap identified across processing activities
13
+ */
14
+ interface LawfulBasisComplianceGap {
15
+ activityId: string;
16
+ activityName: string;
17
+ type: 'missing_approval' | 'overdue_review' | 'missing_justification' | 'missing_lia' | 'missing_sensitive_condition' | 'missing_retention' | 'missing_data_categories' | 'missing_purposes';
18
+ severity: 'high' | 'medium' | 'low';
19
+ description: string;
20
+ }
21
+ /**
22
+ * Validates that all required fields are present on a processing activity
23
+ * and that the lawful basis is properly documented.
24
+ *
25
+ * If lawfulBasis is 'legitimate_interests', ensures a LIA justification exists.
26
+ * If involvesSensitiveData is true, ensures sensitiveDataCondition is set.
27
+ *
28
+ * @param activity The processing activity to validate
29
+ * @returns Validation result with errors and warnings
30
+ */
31
+ declare function validateProcessingActivity(activity: ProcessingActivity): LawfulBasisValidationResult;
32
+ /**
33
+ * Returns a human-readable description of a lawful basis with the relevant
34
+ * NDPA section reference.
35
+ *
36
+ * @param basis The lawful basis to describe
37
+ * @returns Description string including NDPA section reference
38
+ */
39
+ declare function getLawfulBasisDescription(basis: LawfulBasis): string;
40
+ /**
41
+ * Analyzes all processing activities and returns compliance gaps including
42
+ * missing DPO approval, overdue reviews, undocumented justifications,
43
+ * missing LIA for legitimate interests, and other documentation issues.
44
+ *
45
+ * @param activities Array of processing activities to analyze
46
+ * @returns Array of identified compliance gaps
47
+ */
48
+ declare function assessComplianceGaps(activities: ProcessingActivity[]): LawfulBasisComplianceGap[];
49
+ /**
50
+ * Generates a summary of all lawful basis documentation across processing activities.
51
+ *
52
+ * @param activities Array of processing activities to summarize
53
+ * @returns LawfulBasisSummary with counts, breakdowns, and flagged activities
54
+ */
55
+ declare function generateLawfulBasisSummary(activities: ProcessingActivity[]): LawfulBasisSummary;
56
+
57
+ export { type LawfulBasisComplianceGap as L, assessComplianceGaps as a, generateLawfulBasisSummary as b, type LawfulBasisValidationResult as c, getLawfulBasisDescription as g, validateProcessingActivity as v };
@@ -0,0 +1,55 @@
1
+ import React from 'react';
2
+ import { P as ProcessingActivity } from './lawful-basis-CWtvDG1x.mjs';
3
+ export { L as LawfulBasis, b as LawfulBasisSummary, a as LegitimateInterestAssessment, S as SensitiveDataCondition } from './lawful-basis-CWtvDG1x.mjs';
4
+ export { u as useLawfulBasis } from './useLawfulBasis-DNQ8YszQ.mjs';
5
+ export { L as LawfulBasisComplianceGap, c as LawfulBasisValidationResult, a as assessComplianceGaps, b as generateLawfulBasisSummary, g as getLawfulBasisDescription, v as validateProcessingActivity } from './lawful-basis-D-oXFizg.mjs';
6
+
7
+ interface LawfulBasisTrackerProps {
8
+ /**
9
+ * List of processing activities to display
10
+ */
11
+ activities: ProcessingActivity[];
12
+ /**
13
+ * Callback when a new activity is created
14
+ */
15
+ onAddActivity?: (activity: Omit<ProcessingActivity, 'id' | 'createdAt' | 'updatedAt'>) => void;
16
+ /**
17
+ * Callback when an activity is updated
18
+ */
19
+ onUpdateActivity?: (id: string, updates: Partial<ProcessingActivity>) => void;
20
+ /**
21
+ * Callback when an activity is archived
22
+ */
23
+ onArchiveActivity?: (id: string) => void;
24
+ /**
25
+ * Title displayed on the tracker
26
+ * @default "Lawful Basis Tracker"
27
+ */
28
+ title?: string;
29
+ /**
30
+ * Description text displayed on the tracker
31
+ * @default "Document and track the lawful basis for each processing activity as required by NDPA 2023 Section 25."
32
+ */
33
+ description?: string;
34
+ /**
35
+ * Custom CSS class for the tracker container
36
+ */
37
+ className?: string;
38
+ /**
39
+ * Custom CSS class for buttons
40
+ */
41
+ buttonClassName?: string;
42
+ /**
43
+ * Whether to show the compliance summary at the top
44
+ * @default true
45
+ */
46
+ showSummary?: boolean;
47
+ /**
48
+ * Whether to show compliance gap alerts
49
+ * @default true
50
+ */
51
+ showComplianceGaps?: boolean;
52
+ }
53
+ declare const LawfulBasisTracker: React.FC<LawfulBasisTrackerProps>;
54
+
55
+ export { LawfulBasisTracker, ProcessingActivity };
@@ -0,0 +1,55 @@
1
+ import React from 'react';
2
+ import { P as ProcessingActivity } from './lawful-basis-CWtvDG1x.js';
3
+ export { L as LawfulBasis, b as LawfulBasisSummary, a as LegitimateInterestAssessment, S as SensitiveDataCondition } from './lawful-basis-CWtvDG1x.js';
4
+ export { u as useLawfulBasis } from './useLawfulBasis-RILM_xsx.js';
5
+ export { L as LawfulBasisComplianceGap, c as LawfulBasisValidationResult, a as assessComplianceGaps, b as generateLawfulBasisSummary, g as getLawfulBasisDescription, v as validateProcessingActivity } from './lawful-basis-v04AhbK2.js';
6
+
7
+ interface LawfulBasisTrackerProps {
8
+ /**
9
+ * List of processing activities to display
10
+ */
11
+ activities: ProcessingActivity[];
12
+ /**
13
+ * Callback when a new activity is created
14
+ */
15
+ onAddActivity?: (activity: Omit<ProcessingActivity, 'id' | 'createdAt' | 'updatedAt'>) => void;
16
+ /**
17
+ * Callback when an activity is updated
18
+ */
19
+ onUpdateActivity?: (id: string, updates: Partial<ProcessingActivity>) => void;
20
+ /**
21
+ * Callback when an activity is archived
22
+ */
23
+ onArchiveActivity?: (id: string) => void;
24
+ /**
25
+ * Title displayed on the tracker
26
+ * @default "Lawful Basis Tracker"
27
+ */
28
+ title?: string;
29
+ /**
30
+ * Description text displayed on the tracker
31
+ * @default "Document and track the lawful basis for each processing activity as required by NDPA 2023 Section 25."
32
+ */
33
+ description?: string;
34
+ /**
35
+ * Custom CSS class for the tracker container
36
+ */
37
+ className?: string;
38
+ /**
39
+ * Custom CSS class for buttons
40
+ */
41
+ buttonClassName?: string;
42
+ /**
43
+ * Whether to show the compliance summary at the top
44
+ * @default true
45
+ */
46
+ showSummary?: boolean;
47
+ /**
48
+ * Whether to show compliance gap alerts
49
+ * @default true
50
+ */
51
+ showComplianceGaps?: boolean;
52
+ }
53
+ declare const LawfulBasisTracker: React.FC<LawfulBasisTrackerProps>;
54
+
55
+ export { LawfulBasisTracker, ProcessingActivity };
@@ -0,0 +1,2 @@
1
+ 'use strict';var chunkRB26MIRI_js=require('./chunk-RB26MIRI.js'),chunkLXRXDTPI_js=require('./chunk-LXRXDTPI.js'),chunkTDDAYVKK_js=require('./chunk-TDDAYVKK.js');require('./chunk-MQFZHA2D.js');Object.defineProperty(exports,"LawfulBasisTracker",{enumerable:true,get:function(){return chunkRB26MIRI_js.a}});Object.defineProperty(exports,"useLawfulBasis",{enumerable:true,get:function(){return chunkLXRXDTPI_js.a}});Object.defineProperty(exports,"assessComplianceGaps",{enumerable:true,get:function(){return chunkTDDAYVKK_js.c}});Object.defineProperty(exports,"generateLawfulBasisSummary",{enumerable:true,get:function(){return chunkTDDAYVKK_js.d}});Object.defineProperty(exports,"getLawfulBasisDescription",{enumerable:true,get:function(){return chunkTDDAYVKK_js.b}});Object.defineProperty(exports,"validateProcessingActivity",{enumerable:true,get:function(){return chunkTDDAYVKK_js.a}});//# sourceMappingURL=lawful-basis.js.map
2
+ //# sourceMappingURL=lawful-basis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"lawful-basis.js"}
@@ -0,0 +1,2 @@
1
+ export{a as LawfulBasisTracker}from'./chunk-C2IJWCZQ.mjs';export{a as useLawfulBasis}from'./chunk-L52PDW6O.mjs';export{c as assessComplianceGaps,d as generateLawfulBasisSummary,b as getLawfulBasisDescription,a as validateProcessingActivity}from'./chunk-TXBZPCGF.mjs';import'./chunk-WWT2ZSNU.mjs';//# sourceMappingURL=lawful-basis.mjs.map
2
+ //# sourceMappingURL=lawful-basis.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"lawful-basis.mjs"}
@@ -0,0 +1,195 @@
1
+ import React from 'react';
2
+ import { P as PolicySection, b as PolicyVariable } from './privacy-Ca6te9Ir.mjs';
3
+ export { O as OrganizationInfo, a as PolicyTemplate, c as PrivacyPolicy } from './privacy-Ca6te9Ir.mjs';
4
+ export { u as usePrivacyPolicy } from './usePrivacyPolicy-Dit2sFuV.mjs';
5
+ export { g as generatePolicyText } from './privacy-9FcJceMr.mjs';
6
+
7
+ interface PolicyGeneratorProps {
8
+ /**
9
+ * List of policy sections
10
+ */
11
+ sections: PolicySection[];
12
+ /**
13
+ * List of policy variables
14
+ */
15
+ variables: PolicyVariable[];
16
+ /**
17
+ * Callback function called when the policy is generated
18
+ */
19
+ onGenerate: (policy: {
20
+ sections: PolicySection[];
21
+ variables: PolicyVariable[];
22
+ content: string;
23
+ }) => void;
24
+ /**
25
+ * Title displayed on the generator
26
+ * @default "NDPA Privacy Policy Generator"
27
+ */
28
+ title?: string;
29
+ /**
30
+ * Description text displayed on the generator
31
+ * @default "Generate an NDPA-compliant privacy policy for your organization."
32
+ */
33
+ description?: string;
34
+ /**
35
+ * Custom CSS class for the generator
36
+ */
37
+ className?: string;
38
+ /**
39
+ * Custom CSS class for the buttons
40
+ */
41
+ buttonClassName?: string;
42
+ /**
43
+ * Text for the generate button
44
+ * @default "Generate Policy"
45
+ */
46
+ generateButtonText?: string;
47
+ /**
48
+ * Whether to show a preview of the generated policy
49
+ * @default true
50
+ */
51
+ showPreview?: boolean;
52
+ /**
53
+ * Whether to allow editing the policy content
54
+ * @default true
55
+ */
56
+ allowEditing?: boolean;
57
+ }
58
+ declare const PolicyGenerator: React.FC<PolicyGeneratorProps>;
59
+
60
+ interface PolicyPreviewProps {
61
+ /**
62
+ * The policy content to preview
63
+ */
64
+ content: string;
65
+ /**
66
+ * The policy sections
67
+ */
68
+ sections?: PolicySection[];
69
+ /**
70
+ * The policy variables
71
+ */
72
+ variables?: PolicyVariable[];
73
+ /**
74
+ * Callback function called when the policy is exported
75
+ */
76
+ onExport?: (format: 'pdf' | 'html' | 'markdown' | 'docx') => void;
77
+ /**
78
+ * Callback function called when the policy is edited
79
+ */
80
+ onEdit?: () => void;
81
+ /**
82
+ * Title displayed on the preview
83
+ * @default "Privacy Policy Preview"
84
+ */
85
+ title?: string;
86
+ /**
87
+ * Description text displayed on the preview
88
+ * @default "Preview your NDPA-compliant privacy policy before exporting."
89
+ */
90
+ description?: string;
91
+ /**
92
+ * Custom CSS class for the preview
93
+ */
94
+ className?: string;
95
+ /**
96
+ * Custom CSS class for the buttons
97
+ */
98
+ buttonClassName?: string;
99
+ /**
100
+ * Whether to show the export options
101
+ * @default true
102
+ */
103
+ showExportOptions?: boolean;
104
+ /**
105
+ * Whether to show the edit button
106
+ * @default true
107
+ */
108
+ showEditButton?: boolean;
109
+ /**
110
+ * Whether to show the table of contents
111
+ * @default true
112
+ */
113
+ showTableOfContents?: boolean;
114
+ /**
115
+ * Whether to show the policy metadata
116
+ * @default true
117
+ */
118
+ showMetadata?: boolean;
119
+ /**
120
+ * The organization name to display in the policy
121
+ */
122
+ organizationName?: string;
123
+ /**
124
+ * The last updated date to display in the policy
125
+ */
126
+ lastUpdated?: Date;
127
+ }
128
+ declare const PolicyPreview: React.FC<PolicyPreviewProps>;
129
+
130
+ interface PolicyExporterProps {
131
+ /**
132
+ * The policy content to export
133
+ */
134
+ content: string;
135
+ /**
136
+ * The policy title
137
+ */
138
+ title?: string;
139
+ /**
140
+ * The organization name to include in the exported policy
141
+ */
142
+ organizationName?: string;
143
+ /**
144
+ * The last updated date to include in the exported policy
145
+ */
146
+ lastUpdated?: Date;
147
+ /**
148
+ * Callback function called when the export is complete
149
+ */
150
+ onExportComplete?: (format: string, url: string) => void;
151
+ /**
152
+ * Title displayed on the exporter
153
+ * @default "Export Privacy Policy"
154
+ */
155
+ componentTitle?: string;
156
+ /**
157
+ * Description text displayed on the exporter
158
+ * @default "Export your NDPA-compliant privacy policy in various formats."
159
+ */
160
+ description?: string;
161
+ /**
162
+ * Custom CSS class for the exporter
163
+ */
164
+ className?: string;
165
+ /**
166
+ * Custom CSS class for the buttons
167
+ */
168
+ buttonClassName?: string;
169
+ /**
170
+ * Whether to show the export history
171
+ * @default true
172
+ */
173
+ showExportHistory?: boolean;
174
+ /**
175
+ * Whether to include the NDPA compliance notice in the exported policy
176
+ * @default true
177
+ */
178
+ includeComplianceNotice?: boolean;
179
+ /**
180
+ * Whether to include the organization logo in the exported policy
181
+ * @default false
182
+ */
183
+ includeLogo?: boolean;
184
+ /**
185
+ * URL of the organization logo
186
+ */
187
+ logoUrl?: string;
188
+ /**
189
+ * Custom CSS styles for the exported policy
190
+ */
191
+ customStyles?: string;
192
+ }
193
+ declare const PolicyExporter: React.FC<PolicyExporterProps>;
194
+
195
+ export { PolicyExporter, PolicyGenerator, PolicyPreview, PolicySection, PolicyVariable };