@tantainnovative/ndpr-toolkit 3.3.1 → 3.4.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.
- package/CHANGELOG.md +529 -0
- package/dist/{ConsentBanner-CDRT0o2k.d.mts → ConsentBanner-F5ayys5K.d.mts} +10 -0
- package/dist/{ConsentBanner-Vxyt8SCX.d.ts → ConsentBanner-VqIPophc.d.ts} +10 -0
- package/dist/{styling-B7CBzYG7.d.ts → ConsentManager-C7I3PDe8.d.mts} +2 -62
- package/dist/{styling-uJLsBbER.d.mts → ConsentManager-CQ2IZtUU.d.ts} +2 -62
- package/dist/{sanitize-B0AzEm1D.d.mts → NDPRProvider-DYFb8xEl.d.ts} +2 -94
- package/dist/{sanitize-B0AzEm1D.d.ts → NDPRProvider-U3QNu6MA.d.mts} +2 -94
- package/dist/adapters.js +1 -1
- package/dist/adapters.mjs +1 -1
- package/dist/breach.js +1 -1
- package/dist/breach.mjs +1 -1
- package/dist/chunk-2WH4DLV5.js +3 -0
- package/dist/chunk-3NQQSU4P.js +2 -0
- package/dist/chunk-3VQAYQR7.js +7 -0
- package/dist/chunk-4R42ZNO7.mjs +318 -0
- package/dist/chunk-5HL4UBFV.js +2 -0
- package/dist/chunk-6HZL2WDU.mjs +2 -0
- package/dist/chunk-6QPRDQZF.js +2 -0
- package/dist/chunk-74Z23WUA.mjs +2 -0
- package/dist/chunk-AHSMDPG5.js +132 -0
- package/dist/chunk-BN77GP4W.mjs +2 -0
- package/dist/chunk-C5QO3SX4.js +2 -0
- package/dist/chunk-CISJAQ6W.mjs +2 -0
- package/dist/chunk-DUY6F3GT.mjs +94 -0
- package/dist/chunk-EHAZIKDX.js +81 -0
- package/dist/chunk-EPT2K355.mjs +2 -0
- package/dist/chunk-HGGLW5TE.js +2 -0
- package/dist/chunk-HQSU7LGM.js +94 -0
- package/dist/chunk-IZCWCE7W.mjs +2 -0
- package/dist/chunk-JBSCER34.js +2 -0
- package/dist/chunk-KF3EFJEF.mjs +3 -0
- package/dist/chunk-KSERBMXW.mjs +4 -0
- package/dist/chunk-LJNNPAFU.mjs +2 -0
- package/dist/{chunk-UXMGBIX6.js → chunk-LSCMXAPY.mjs} +4 -4
- package/dist/chunk-LSNL4XR5.js +2 -0
- package/dist/chunk-MG73MOZC.mjs +15 -0
- package/dist/chunk-NCOZB2WU.mjs +2 -0
- package/dist/chunk-NQNFS3QI.js +7 -0
- package/dist/{chunk-ZEOQYWOE.mjs → chunk-P2YV6DR3.js} +4 -4
- package/dist/chunk-P6QAFBCV.js +2 -0
- package/dist/chunk-QVULSG6J.mjs +3 -0
- package/dist/chunk-R5FW5XUQ.mjs +2 -0
- package/dist/chunk-RGNP45VR.js +2 -0
- package/dist/chunk-RLYTX3MM.js +2 -0
- package/dist/chunk-RNTNHVKZ.js +15 -0
- package/dist/chunk-RRVKUCFR.mjs +2 -0
- package/dist/chunk-RXL6CZAI.js +2 -0
- package/dist/chunk-RY3PGVLZ.mjs +2 -0
- package/dist/chunk-SUEGUY35.js +2 -0
- package/dist/chunk-SYMQJO2W.mjs +7 -0
- package/dist/chunk-TCN22KYP.mjs +7 -0
- package/dist/chunk-UFPSUO52.js +318 -0
- package/dist/chunk-VTITKWGX.mjs +2 -0
- package/dist/chunk-WH6ZMUOS.mjs +81 -0
- package/dist/chunk-WTJGLNTB.js +3 -0
- package/dist/chunk-XHROISIF.mjs +2 -0
- package/dist/chunk-XMBSJJ5U.js +4 -0
- package/dist/chunk-ZLSWOFAY.mjs +132 -0
- package/dist/chunk-ZPKVLTSX.js +2 -0
- package/dist/consent.d.mts +6 -4
- package/dist/consent.d.ts +6 -4
- package/dist/consent.js +1 -1
- package/dist/consent.mjs +1 -1
- package/dist/core.d.mts +6 -29
- package/dist/core.d.ts +6 -29
- package/dist/core.js +1 -1
- package/dist/core.mjs +1 -1
- package/dist/cross-border.js +1 -1
- package/dist/cross-border.mjs +1 -1
- package/dist/docx-BxKascXN.d.ts +64 -0
- package/dist/docx-CV7Vsry_.d.mts +64 -0
- package/dist/dpia.js +1 -1
- package/dist/dpia.mjs +1 -1
- package/dist/dsr.js +1 -1
- package/dist/dsr.mjs +1 -1
- package/dist/hooks.d.mts +3 -3
- package/dist/hooks.d.ts +3 -3
- package/dist/hooks.js +1 -1
- package/dist/hooks.mjs +1 -1
- package/dist/index.d.mts +7 -5
- package/dist/index.d.ts +7 -5
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/dist/lawful-basis.js +1 -1
- package/dist/lawful-basis.mjs +1 -1
- package/dist/locale-CxJx2tzn.d.mts +25 -0
- package/dist/locale-DSkrtf-c.d.ts +25 -0
- package/dist/{policy-engine-C6nC2t3a.d.ts → policy-engine-CCUCud2T.d.ts} +1 -1
- package/dist/{policy-engine-DefZcX3R.d.mts → policy-engine-fYSqEqSW.d.mts} +1 -1
- package/dist/{policy-sections-DFDPVCCg.d.ts → policy-sections-BYx6fEFk.d.ts} +4 -2
- package/dist/{policy-sections-Bylm31kZ.d.mts → policy-sections-Dm97Nq8m.d.mts} +4 -2
- package/dist/{policy-templates-CIKcV0i1.d.ts → policy-templates-DhLwq4R-.d.ts} +8 -1
- package/dist/{policy-templates-DMsPwOSZ.d.mts → policy-templates-DwYl2329.d.mts} +8 -1
- package/dist/policy.d.mts +36 -71
- package/dist/policy.d.ts +36 -71
- package/dist/policy.js +1 -1
- package/dist/policy.mjs +1 -1
- package/dist/presets.d.mts +2 -2
- package/dist/presets.d.ts +2 -2
- package/dist/presets.js +1 -1
- package/dist/presets.mjs +1 -1
- package/dist/ropa.js +1 -1
- package/dist/ropa.mjs +1 -1
- package/dist/sanitize-CxxwKxAx.d.mts +94 -0
- package/dist/sanitize-CxxwKxAx.d.ts +94 -0
- package/dist/server.d.mts +24 -0
- package/dist/server.d.ts +24 -0
- package/dist/server.js +2 -0
- package/dist/server.mjs +2 -0
- package/dist/styles.css +1423 -31
- package/dist/styling-BMDGQDgS.d.mts +64 -0
- package/dist/styling-BaoQtV06.d.ts +64 -0
- package/dist/unstyled.d.mts +52 -19
- package/dist/unstyled.d.ts +52 -19
- package/dist/unstyled.js +1 -1
- package/dist/unstyled.mjs +1 -1
- package/dist/{useAdaptivePolicyWizard-A1PyOy6P.d.mts → useAdaptivePolicyWizard-BnjW4OR4.d.mts} +1 -1
- package/dist/{useAdaptivePolicyWizard-LVIKhAxw.d.ts → useAdaptivePolicyWizard-sb3m4-Zk.d.ts} +1 -1
- package/dist/{useDefaultPrivacyPolicy-ySWU7nc-.d.mts → useDefaultPrivacyPolicy-Cs2WQSYQ.d.mts} +30 -9
- package/dist/{useDefaultPrivacyPolicy-DvCbeEl1.d.ts → useDefaultPrivacyPolicy-DkOqMg2e.d.ts} +30 -9
- package/package.json +14 -2
- package/dist/chunk-25OOUES4.js +0 -2
- package/dist/chunk-4JKTIR33.mjs +0 -2
- package/dist/chunk-5BUS6AI7.js +0 -2
- package/dist/chunk-5ECDPRSZ.js +0 -7
- package/dist/chunk-6YN73KR7.mjs +0 -2
- package/dist/chunk-CDZDT2OS.mjs +0 -320
- package/dist/chunk-CWUPGY3M.mjs +0 -3
- package/dist/chunk-CYU6YUJQ.mjs +0 -81
- package/dist/chunk-EKHBORAH.js +0 -81
- package/dist/chunk-ENIMJ6SQ.js +0 -2
- package/dist/chunk-FLKJSGR7.mjs +0 -94
- package/dist/chunk-FWLPJ5YI.js +0 -94
- package/dist/chunk-GCQRHMTQ.mjs +0 -144
- package/dist/chunk-GMLCWGNJ.js +0 -7
- package/dist/chunk-GXLSOZCH.mjs +0 -2
- package/dist/chunk-LETEUS5X.mjs +0 -2
- package/dist/chunk-LU4PFST7.js +0 -144
- package/dist/chunk-NBSVFQ5G.js +0 -2
- package/dist/chunk-OYR3L4XS.mjs +0 -7
- package/dist/chunk-QF6XNKU6.mjs +0 -2
- package/dist/chunk-QJ3JNHO7.js +0 -2
- package/dist/chunk-QNCGRCAX.mjs +0 -2
- package/dist/chunk-SAA7UVI2.js +0 -3
- package/dist/chunk-TI2M7H6R.mjs +0 -7
- package/dist/chunk-TXXWCB5O.js +0 -320
- package/dist/chunk-UGY5ZYUG.js +0 -2
- package/dist/chunk-UO6QPJLH.js +0 -2
- package/dist/chunk-UX6ZZNEM.mjs +0 -3
- package/dist/chunk-XFUEZ3MP.mjs +0 -2
- package/dist/chunk-XHSHPB74.js +0 -2
- package/dist/chunk-YCX6BFOQ.js +0 -2
- package/dist/chunk-YURSF2YO.mjs +0 -2
- package/dist/chunk-YZXUAIYN.js +0 -3
- package/dist/chunk-ZT7KNFAU.mjs +0 -2
package/dist/policy.d.mts
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import { f as PolicyGeneratorProps, g as PolicyPreviewProps, h as PolicyExporterProps } from './PolicyExporter-Bgi6nz82.mjs';
|
|
2
2
|
export { P as PolicyExporter, b as PolicyGenerator, d as PolicyPreview } from './PolicyExporter-Bgi6nz82.mjs';
|
|
3
|
-
import { U as UsePrivacyPolicyReturn } from './useDefaultPrivacyPolicy-
|
|
4
|
-
export { u as useDefaultPrivacyPolicy, a as usePrivacyPolicy } from './useDefaultPrivacyPolicy-
|
|
5
|
-
export { D as DEFAULT_POLICY_SECTIONS, a as DEFAULT_POLICY_VARIABLES, c as createBusinessPolicyTemplate, g as generatePolicyText } from './policy-templates-
|
|
3
|
+
import { U as UsePrivacyPolicyReturn } from './useDefaultPrivacyPolicy-Cs2WQSYQ.mjs';
|
|
4
|
+
export { u as useDefaultPrivacyPolicy, a as usePrivacyPolicy } from './useDefaultPrivacyPolicy-Cs2WQSYQ.mjs';
|
|
5
|
+
export { D as DEFAULT_POLICY_SECTIONS, a as DEFAULT_POLICY_VARIABLES, c as createBusinessPolicyTemplate, f as findUnfilledTokens, g as generatePolicyText } from './policy-templates-DwYl2329.mjs';
|
|
6
6
|
import { a as PolicyTemplate, c as PrivacyPolicy } from './privacy-Ca6te9Ir.mjs';
|
|
7
7
|
export { O as OrganizationInfo, P as PolicySection, b as PolicyVariable } from './privacy-Ca6te9Ir.mjs';
|
|
8
8
|
import * as React from 'react';
|
|
9
9
|
import React__default from 'react';
|
|
10
10
|
import { S as StorageAdapter } from './types-DK2CoKOC.mjs';
|
|
11
|
-
import { P as PolicyDraft, H as HTMLExportOptions
|
|
12
|
-
export { C as ComplianceGap,
|
|
13
|
-
export { U as UseAdaptivePolicyWizardOptions, a as UseAdaptivePolicyWizardReturn, u as useAdaptivePolicyWizard } from './useAdaptivePolicyWizard-
|
|
14
|
-
export { a as assemblePolicy, e as evaluatePolicyCompliance } from './policy-sections-
|
|
11
|
+
import { P as PolicyDraft, H as HTMLExportOptions } from './policy-engine-fYSqEqSW.mjs';
|
|
12
|
+
export { C as ComplianceGap, a as ComplianceResult, b as CustomSection, e as DEFAULT_DATA_CATEGORIES, D as DataCategory, I as Industry, O as OrgSize, h as ProcessingPurpose, T as TemplateContext, c as ThirdPartyProcessor, d as createDefaultContext } from './policy-engine-fYSqEqSW.mjs';
|
|
13
|
+
export { U as UseAdaptivePolicyWizardOptions, a as UseAdaptivePolicyWizardReturn, u as useAdaptivePolicyWizard } from './useAdaptivePolicyWizard-BnjW4OR4.mjs';
|
|
14
|
+
export { a as assemblePolicy, e as evaluatePolicyCompliance } from './policy-sections-Dm97Nq8m.mjs';
|
|
15
|
+
export { e as exportDOCX, a as exportHTML, b as exportMarkdown, c as exportPDF } from './docx-CV7Vsry_.mjs';
|
|
15
16
|
|
|
16
17
|
interface PolicyProviderProps {
|
|
17
18
|
templates: PolicyTemplate[];
|
|
@@ -44,75 +45,39 @@ interface AdaptivePolicyWizardProps {
|
|
|
44
45
|
}
|
|
45
46
|
declare const AdaptivePolicyWizard: React__default.FC<AdaptivePolicyWizardProps>;
|
|
46
47
|
|
|
48
|
+
type PolicyPageMode = 'shadow' | 'inline';
|
|
47
49
|
interface PolicyPageProps {
|
|
48
50
|
policy: PrivacyPolicy;
|
|
49
51
|
className?: string;
|
|
52
|
+
/**
|
|
53
|
+
* Render mode.
|
|
54
|
+
*
|
|
55
|
+
* - `'shadow'` (default): mounts the rendered policy inside a Shadow DOM
|
|
56
|
+
* root, fully isolating the embedded `<style>` block from the host page.
|
|
57
|
+
* Use this for in-app embeds where you want the rich, opinionated
|
|
58
|
+
* default styling without polluting global CSS. Client-only.
|
|
59
|
+
*
|
|
60
|
+
* - `'inline'`: injects the policy markup directly into the host document.
|
|
61
|
+
* Defaults to `includeStyles: false` so bare element selectors don't
|
|
62
|
+
* leak. Pair with your own CSS / design tokens. SSR-safe.
|
|
63
|
+
*/
|
|
64
|
+
mode?: PolicyPageMode;
|
|
65
|
+
/**
|
|
66
|
+
* Pass-through to {@link exportHTML}. Lets you toggle `includeStyles`,
|
|
67
|
+
* `includePrintCSS`, or inject `customCSS`. Defaults differ by mode:
|
|
68
|
+
* shadow mode includes styles; inline mode omits them.
|
|
69
|
+
*/
|
|
70
|
+
options?: HTMLExportOptions;
|
|
50
71
|
}
|
|
51
72
|
/**
|
|
52
|
-
* PolicyPage renders a full
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
|
|
56
|
-
declare const PolicyPage: React__default.FC<PolicyPageProps>;
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* Export a PrivacyPolicy as a self-contained HTML string.
|
|
73
|
+
* PolicyPage renders a full privacy policy. By default uses Shadow DOM so the
|
|
74
|
+
* embedded stylesheet (bare selectors like `body`, `article`, `h1`) cannot
|
|
75
|
+
* leak into the host application's CSS. Pass `mode="inline"` for SSR/SEO
|
|
76
|
+
* scenarios where the policy text must appear in the host document.
|
|
60
77
|
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
* - An `<article>` wrapper with semantic markup
|
|
64
|
-
* - A `<nav>` table of contents with anchor links
|
|
65
|
-
* - A `<section>` for every included policy section
|
|
66
|
-
* - A metadata footer (org name, effective date, version, generator credit)
|
|
67
|
-
* - Optional custom CSS injection via `options.customCSS`
|
|
78
|
+
* HTML is generated internally by exportHTML from a typed PrivacyPolicy and
|
|
79
|
+
* never contains untrusted user input.
|
|
68
80
|
*/
|
|
69
|
-
declare
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* Export a PrivacyPolicy as a clean Markdown string.
|
|
73
|
-
*
|
|
74
|
-
* Structure:
|
|
75
|
-
* ```
|
|
76
|
-
* # Policy Title
|
|
77
|
-
* _Effective: date | Version: X | Org Name_
|
|
78
|
-
*
|
|
79
|
-
* ## Table of Contents
|
|
80
|
-
* - [Section Title](#anchor)
|
|
81
|
-
*
|
|
82
|
-
* ## 1. Section Title
|
|
83
|
-
* Section content...
|
|
84
|
-
* ```
|
|
85
|
-
*/
|
|
86
|
-
declare function exportMarkdown(policy: PrivacyPolicy): string;
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* Export a PrivacyPolicy to a PDF Blob using jspdf (optional peer dependency).
|
|
90
|
-
*
|
|
91
|
-
* Features:
|
|
92
|
-
* - Optional cover page with title, organisation, date, version and compliance badge
|
|
93
|
-
* - Optional table of contents page
|
|
94
|
-
* - One section per heading, content reflowed to fit the page
|
|
95
|
-
* - Automatic page breaks
|
|
96
|
-
* - Page header (org name) and footer (page X of Y) on every page
|
|
97
|
-
* - PDF metadata (title, author, subject, keywords)
|
|
98
|
-
*
|
|
99
|
-
* @throws {Error} if the `jspdf` package is not installed
|
|
100
|
-
*/
|
|
101
|
-
declare function exportPDF(policy: PrivacyPolicy, options?: PDFExportOptions): Promise<Blob>;
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* Export a PrivacyPolicy as a Word (.docx) Blob using the `docx` library
|
|
105
|
-
* (optional peer dependency).
|
|
106
|
-
*
|
|
107
|
-
* Features:
|
|
108
|
-
* - Title paragraph with large bold text
|
|
109
|
-
* - Organisation name + version subtitle
|
|
110
|
-
* - Optional table of contents placeholder heading
|
|
111
|
-
* - All included policy sections as Heading 1 + body paragraphs / bullet lists
|
|
112
|
-
* - Running header (org name) and page-number footer on every page
|
|
113
|
-
*
|
|
114
|
-
* @throws {Error} if the `docx` package is not installed
|
|
115
|
-
*/
|
|
116
|
-
declare function exportDOCX(policy: PrivacyPolicy, options?: DOCXExportOptions): Promise<Blob>;
|
|
81
|
+
declare const PolicyPage: React__default.FC<PolicyPageProps>;
|
|
117
82
|
|
|
118
|
-
export { AdaptivePolicyWizard, Policy, PolicyDraft, PolicyPage, PolicyProvider, type PolicyProviderProps, PolicyTemplate, PrivacyPolicy, StorageAdapter,
|
|
83
|
+
export { AdaptivePolicyWizard, Policy, PolicyDraft, PolicyPage, PolicyProvider, type PolicyProviderProps, PolicyTemplate, PrivacyPolicy, StorageAdapter, usePolicyCompound };
|
package/dist/policy.d.ts
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import { f as PolicyGeneratorProps, g as PolicyPreviewProps, h as PolicyExporterProps } from './PolicyExporter-BnvuFncj.js';
|
|
2
2
|
export { P as PolicyExporter, b as PolicyGenerator, d as PolicyPreview } from './PolicyExporter-BnvuFncj.js';
|
|
3
|
-
import { U as UsePrivacyPolicyReturn } from './useDefaultPrivacyPolicy-
|
|
4
|
-
export { u as useDefaultPrivacyPolicy, a as usePrivacyPolicy } from './useDefaultPrivacyPolicy-
|
|
5
|
-
export { D as DEFAULT_POLICY_SECTIONS, a as DEFAULT_POLICY_VARIABLES, c as createBusinessPolicyTemplate, g as generatePolicyText } from './policy-templates-
|
|
3
|
+
import { U as UsePrivacyPolicyReturn } from './useDefaultPrivacyPolicy-DkOqMg2e.js';
|
|
4
|
+
export { u as useDefaultPrivacyPolicy, a as usePrivacyPolicy } from './useDefaultPrivacyPolicy-DkOqMg2e.js';
|
|
5
|
+
export { D as DEFAULT_POLICY_SECTIONS, a as DEFAULT_POLICY_VARIABLES, c as createBusinessPolicyTemplate, f as findUnfilledTokens, g as generatePolicyText } from './policy-templates-DhLwq4R-.js';
|
|
6
6
|
import { a as PolicyTemplate, c as PrivacyPolicy } from './privacy-Ca6te9Ir.js';
|
|
7
7
|
export { O as OrganizationInfo, P as PolicySection, b as PolicyVariable } from './privacy-Ca6te9Ir.js';
|
|
8
8
|
import * as React from 'react';
|
|
9
9
|
import React__default from 'react';
|
|
10
10
|
import { S as StorageAdapter } from './types-DK2CoKOC.js';
|
|
11
|
-
import { P as PolicyDraft, H as HTMLExportOptions
|
|
12
|
-
export { C as ComplianceGap,
|
|
13
|
-
export { U as UseAdaptivePolicyWizardOptions, a as UseAdaptivePolicyWizardReturn, u as useAdaptivePolicyWizard } from './useAdaptivePolicyWizard-
|
|
14
|
-
export { a as assemblePolicy, e as evaluatePolicyCompliance } from './policy-sections-
|
|
11
|
+
import { P as PolicyDraft, H as HTMLExportOptions } from './policy-engine-CCUCud2T.js';
|
|
12
|
+
export { C as ComplianceGap, a as ComplianceResult, b as CustomSection, e as DEFAULT_DATA_CATEGORIES, D as DataCategory, I as Industry, O as OrgSize, h as ProcessingPurpose, T as TemplateContext, c as ThirdPartyProcessor, d as createDefaultContext } from './policy-engine-CCUCud2T.js';
|
|
13
|
+
export { U as UseAdaptivePolicyWizardOptions, a as UseAdaptivePolicyWizardReturn, u as useAdaptivePolicyWizard } from './useAdaptivePolicyWizard-sb3m4-Zk.js';
|
|
14
|
+
export { a as assemblePolicy, e as evaluatePolicyCompliance } from './policy-sections-BYx6fEFk.js';
|
|
15
|
+
export { e as exportDOCX, a as exportHTML, b as exportMarkdown, c as exportPDF } from './docx-BxKascXN.js';
|
|
15
16
|
|
|
16
17
|
interface PolicyProviderProps {
|
|
17
18
|
templates: PolicyTemplate[];
|
|
@@ -44,75 +45,39 @@ interface AdaptivePolicyWizardProps {
|
|
|
44
45
|
}
|
|
45
46
|
declare const AdaptivePolicyWizard: React__default.FC<AdaptivePolicyWizardProps>;
|
|
46
47
|
|
|
48
|
+
type PolicyPageMode = 'shadow' | 'inline';
|
|
47
49
|
interface PolicyPageProps {
|
|
48
50
|
policy: PrivacyPolicy;
|
|
49
51
|
className?: string;
|
|
52
|
+
/**
|
|
53
|
+
* Render mode.
|
|
54
|
+
*
|
|
55
|
+
* - `'shadow'` (default): mounts the rendered policy inside a Shadow DOM
|
|
56
|
+
* root, fully isolating the embedded `<style>` block from the host page.
|
|
57
|
+
* Use this for in-app embeds where you want the rich, opinionated
|
|
58
|
+
* default styling without polluting global CSS. Client-only.
|
|
59
|
+
*
|
|
60
|
+
* - `'inline'`: injects the policy markup directly into the host document.
|
|
61
|
+
* Defaults to `includeStyles: false` so bare element selectors don't
|
|
62
|
+
* leak. Pair with your own CSS / design tokens. SSR-safe.
|
|
63
|
+
*/
|
|
64
|
+
mode?: PolicyPageMode;
|
|
65
|
+
/**
|
|
66
|
+
* Pass-through to {@link exportHTML}. Lets you toggle `includeStyles`,
|
|
67
|
+
* `includePrintCSS`, or inject `customCSS`. Defaults differ by mode:
|
|
68
|
+
* shadow mode includes styles; inline mode omits them.
|
|
69
|
+
*/
|
|
70
|
+
options?: HTMLExportOptions;
|
|
50
71
|
}
|
|
51
72
|
/**
|
|
52
|
-
* PolicyPage renders a full
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
|
|
56
|
-
declare const PolicyPage: React__default.FC<PolicyPageProps>;
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* Export a PrivacyPolicy as a self-contained HTML string.
|
|
73
|
+
* PolicyPage renders a full privacy policy. By default uses Shadow DOM so the
|
|
74
|
+
* embedded stylesheet (bare selectors like `body`, `article`, `h1`) cannot
|
|
75
|
+
* leak into the host application's CSS. Pass `mode="inline"` for SSR/SEO
|
|
76
|
+
* scenarios where the policy text must appear in the host document.
|
|
60
77
|
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
* - An `<article>` wrapper with semantic markup
|
|
64
|
-
* - A `<nav>` table of contents with anchor links
|
|
65
|
-
* - A `<section>` for every included policy section
|
|
66
|
-
* - A metadata footer (org name, effective date, version, generator credit)
|
|
67
|
-
* - Optional custom CSS injection via `options.customCSS`
|
|
78
|
+
* HTML is generated internally by exportHTML from a typed PrivacyPolicy and
|
|
79
|
+
* never contains untrusted user input.
|
|
68
80
|
*/
|
|
69
|
-
declare
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* Export a PrivacyPolicy as a clean Markdown string.
|
|
73
|
-
*
|
|
74
|
-
* Structure:
|
|
75
|
-
* ```
|
|
76
|
-
* # Policy Title
|
|
77
|
-
* _Effective: date | Version: X | Org Name_
|
|
78
|
-
*
|
|
79
|
-
* ## Table of Contents
|
|
80
|
-
* - [Section Title](#anchor)
|
|
81
|
-
*
|
|
82
|
-
* ## 1. Section Title
|
|
83
|
-
* Section content...
|
|
84
|
-
* ```
|
|
85
|
-
*/
|
|
86
|
-
declare function exportMarkdown(policy: PrivacyPolicy): string;
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* Export a PrivacyPolicy to a PDF Blob using jspdf (optional peer dependency).
|
|
90
|
-
*
|
|
91
|
-
* Features:
|
|
92
|
-
* - Optional cover page with title, organisation, date, version and compliance badge
|
|
93
|
-
* - Optional table of contents page
|
|
94
|
-
* - One section per heading, content reflowed to fit the page
|
|
95
|
-
* - Automatic page breaks
|
|
96
|
-
* - Page header (org name) and footer (page X of Y) on every page
|
|
97
|
-
* - PDF metadata (title, author, subject, keywords)
|
|
98
|
-
*
|
|
99
|
-
* @throws {Error} if the `jspdf` package is not installed
|
|
100
|
-
*/
|
|
101
|
-
declare function exportPDF(policy: PrivacyPolicy, options?: PDFExportOptions): Promise<Blob>;
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* Export a PrivacyPolicy as a Word (.docx) Blob using the `docx` library
|
|
105
|
-
* (optional peer dependency).
|
|
106
|
-
*
|
|
107
|
-
* Features:
|
|
108
|
-
* - Title paragraph with large bold text
|
|
109
|
-
* - Organisation name + version subtitle
|
|
110
|
-
* - Optional table of contents placeholder heading
|
|
111
|
-
* - All included policy sections as Heading 1 + body paragraphs / bullet lists
|
|
112
|
-
* - Running header (org name) and page-number footer on every page
|
|
113
|
-
*
|
|
114
|
-
* @throws {Error} if the `docx` package is not installed
|
|
115
|
-
*/
|
|
116
|
-
declare function exportDOCX(policy: PrivacyPolicy, options?: DOCXExportOptions): Promise<Blob>;
|
|
81
|
+
declare const PolicyPage: React__default.FC<PolicyPageProps>;
|
|
117
82
|
|
|
118
|
-
export { AdaptivePolicyWizard, Policy, PolicyDraft, PolicyPage, PolicyProvider, type PolicyProviderProps, PolicyTemplate, PrivacyPolicy, StorageAdapter,
|
|
83
|
+
export { AdaptivePolicyWizard, Policy, PolicyDraft, PolicyPage, PolicyProvider, type PolicyProviderProps, PolicyTemplate, PrivacyPolicy, StorageAdapter, usePolicyCompound };
|
package/dist/policy.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var
|
|
1
|
+
'use strict';var chunk2WH4DLV5_js=require('./chunk-2WH4DLV5.js'),chunkHQSU7LGM_js=require('./chunk-HQSU7LGM.js'),chunkXMBSJJ5U_js=require('./chunk-XMBSJJ5U.js'),chunkRGNP45VR_js=require('./chunk-RGNP45VR.js'),chunkUFPSUO52_js=require('./chunk-UFPSUO52.js'),chunkRNTNHVKZ_js=require('./chunk-RNTNHVKZ.js'),chunkP2YV6DR3_js=require('./chunk-P2YV6DR3.js'),chunkAHSMDPG5_js=require('./chunk-AHSMDPG5.js');require('./chunk-E64TU6IU.js'),require('./chunk-ELKB2AFZ.js');var chunkMQFZHA2D_js=require('./chunk-MQFZHA2D.js'),react=require('react'),jsxRuntime=require('react/jsx-runtime');var x=react.createContext(null);function z(){let o=react.useContext(x);if(!o)throw new Error("Policy compound components must be wrapped in <Policy.Provider>. Example: <Policy.Provider templates={...}><Policy.Generator /></Policy.Provider>");return o}var n=({templates:o,adapter:p,storageKey:r,useLocalStorage:t,initialPolicy:c,onGenerate:s,children:e})=>{let m=chunkRGNP45VR_js.a({templates:o,adapter:p,storageKey:r,useLocalStorage:t,initialPolicy:c,onGenerate:s}),d=chunkMQFZHA2D_js.b(chunkMQFZHA2D_js.a({},m),{templates:o});return jsxRuntime.jsx(x.Provider,{value:d,children:e})};var N={Provider:n,Generator:chunkHQSU7LGM_js.a,Preview:chunkHQSU7LGM_js.b,Exporter:chunkHQSU7LGM_js.c};var b=({policy:o,className:p,mode:r="shadow",options:t})=>{let c=react.useRef(null);if(react.useEffect(()=>{var u;if(r!=="shadow")return;let e=c.current;if(!e)return;let m=chunkUFPSUO52_js.a(o,chunkMQFZHA2D_js.a({includeStyles:true,includePrintCSS:true},t)),d=(u=e.shadowRoot)!=null?u:e.attachShadow({mode:"open"});return d.innerHTML=m,()=>{e.shadowRoot&&(e.shadowRoot.innerHTML="");}},[o,t,r]),r==="shadow")return jsxRuntime.jsx("div",{ref:c,"data-ndpr-component":"policy-page",className:p});let s=chunkUFPSUO52_js.a(o,chunkMQFZHA2D_js.a({includeStyles:false},t));return jsxRuntime.jsx("div",{"data-ndpr-component":"policy-page",className:p,dangerouslySetInnerHTML:{__html:s}})};Object.defineProperty(exports,"AdaptivePolicyWizard",{enumerable:true,get:function(){return chunk2WH4DLV5_js.a}});Object.defineProperty(exports,"PolicyExporter",{enumerable:true,get:function(){return chunkHQSU7LGM_js.c}});Object.defineProperty(exports,"PolicyGenerator",{enumerable:true,get:function(){return chunkHQSU7LGM_js.a}});Object.defineProperty(exports,"PolicyPreview",{enumerable:true,get:function(){return chunkHQSU7LGM_js.b}});Object.defineProperty(exports,"useAdaptivePolicyWizard",{enumerable:true,get:function(){return chunkXMBSJJ5U_js.a}});Object.defineProperty(exports,"useDefaultPrivacyPolicy",{enumerable:true,get:function(){return chunkRGNP45VR_js.b}});Object.defineProperty(exports,"usePrivacyPolicy",{enumerable:true,get:function(){return chunkRGNP45VR_js.a}});Object.defineProperty(exports,"exportDOCX",{enumerable:true,get:function(){return chunkUFPSUO52_js.d}});Object.defineProperty(exports,"exportHTML",{enumerable:true,get:function(){return chunkUFPSUO52_js.a}});Object.defineProperty(exports,"exportMarkdown",{enumerable:true,get:function(){return chunkUFPSUO52_js.b}});Object.defineProperty(exports,"exportPDF",{enumerable:true,get:function(){return chunkUFPSUO52_js.c}});Object.defineProperty(exports,"DEFAULT_DATA_CATEGORIES",{enumerable:true,get:function(){return chunkRNTNHVKZ_js.a}});Object.defineProperty(exports,"createDefaultContext",{enumerable:true,get:function(){return chunkRNTNHVKZ_js.b}});Object.defineProperty(exports,"evaluatePolicyCompliance",{enumerable:true,get:function(){return chunkRNTNHVKZ_js.c}});Object.defineProperty(exports,"DEFAULT_POLICY_SECTIONS",{enumerable:true,get:function(){return chunkP2YV6DR3_js.c}});Object.defineProperty(exports,"DEFAULT_POLICY_VARIABLES",{enumerable:true,get:function(){return chunkP2YV6DR3_js.d}});Object.defineProperty(exports,"createBusinessPolicyTemplate",{enumerable:true,get:function(){return chunkP2YV6DR3_js.e}});Object.defineProperty(exports,"findUnfilledTokens",{enumerable:true,get:function(){return chunkP2YV6DR3_js.a}});Object.defineProperty(exports,"generatePolicyText",{enumerable:true,get:function(){return chunkP2YV6DR3_js.b}});Object.defineProperty(exports,"assemblePolicy",{enumerable:true,get:function(){return chunkAHSMDPG5_js.c}});exports.Policy=N;exports.PolicyPage=b;exports.PolicyProvider=n;exports.usePolicyCompound=z;//# sourceMappingURL=policy.js.map
|
|
2
2
|
//# sourceMappingURL=policy.js.map
|
package/dist/policy.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export{a as AdaptivePolicyWizard}from'./chunk-
|
|
1
|
+
export{a as AdaptivePolicyWizard}from'./chunk-QVULSG6J.mjs';import {c,b as b$1,a}from'./chunk-DUY6F3GT.mjs';export{c as PolicyExporter,a as PolicyGenerator,b as PolicyPreview}from'./chunk-DUY6F3GT.mjs';export{a as useAdaptivePolicyWizard}from'./chunk-KSERBMXW.mjs';import {a as a$1}from'./chunk-NCOZB2WU.mjs';export{b as useDefaultPrivacyPolicy,a as usePrivacyPolicy}from'./chunk-NCOZB2WU.mjs';import {a as a$3}from'./chunk-4R42ZNO7.mjs';export{d as exportDOCX,a as exportHTML,b as exportMarkdown,c as exportPDF}from'./chunk-4R42ZNO7.mjs';export{a as DEFAULT_DATA_CATEGORIES,b as createDefaultContext,c as evaluatePolicyCompliance}from'./chunk-MG73MOZC.mjs';export{c as DEFAULT_POLICY_SECTIONS,d as DEFAULT_POLICY_VARIABLES,e as createBusinessPolicyTemplate,a as findUnfilledTokens,b as generatePolicyText}from'./chunk-LSCMXAPY.mjs';export{c as assemblePolicy}from'./chunk-ZLSWOFAY.mjs';import'./chunk-AYKLAEOU.mjs';import'./chunk-6WIP33TW.mjs';import {b as b$2,a as a$2}from'./chunk-WWT2ZSNU.mjs';import {createContext,useContext,useRef,useEffect}from'react';import {jsx}from'react/jsx-runtime';var x=createContext(null);function z(){let o=useContext(x);if(!o)throw new Error("Policy compound components must be wrapped in <Policy.Provider>. Example: <Policy.Provider templates={...}><Policy.Generator /></Policy.Provider>");return o}var n=({templates:o,adapter:p,storageKey:r,useLocalStorage:t,initialPolicy:c,onGenerate:s,children:e})=>{let m=a$1({templates:o,adapter:p,storageKey:r,useLocalStorage:t,initialPolicy:c,onGenerate:s}),d=b$2(a$2({},m),{templates:o});return jsx(x.Provider,{value:d,children:e})};var N={Provider:n,Generator:a,Preview:b$1,Exporter:c};var b=({policy:o,className:p,mode:r="shadow",options:t})=>{let c=useRef(null);if(useEffect(()=>{var u;if(r!=="shadow")return;let e=c.current;if(!e)return;let m=a$3(o,a$2({includeStyles:true,includePrintCSS:true},t)),d=(u=e.shadowRoot)!=null?u:e.attachShadow({mode:"open"});return d.innerHTML=m,()=>{e.shadowRoot&&(e.shadowRoot.innerHTML="");}},[o,t,r]),r==="shadow")return jsx("div",{ref:c,"data-ndpr-component":"policy-page",className:p});let s=a$3(o,a$2({includeStyles:false},t));return jsx("div",{"data-ndpr-component":"policy-page",className:p,dangerouslySetInnerHTML:{__html:s}})};export{N as Policy,b as PolicyPage,n as PolicyProvider,z as usePolicyCompound};//# sourceMappingURL=policy.mjs.map
|
|
2
2
|
//# sourceMappingURL=policy.mjs.map
|
package/dist/presets.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React__default from 'react';
|
|
2
|
-
import { b as ConsentBannerClassNames } from './ConsentBanner-
|
|
2
|
+
import { b as ConsentBannerClassNames } from './ConsentBanner-F5ayys5K.mjs';
|
|
3
3
|
import { C as ConsentOption, a as ConsentSettings } from './consent-CmVzqZUk.mjs';
|
|
4
4
|
import { S as StorageAdapter } from './types-DK2CoKOC.mjs';
|
|
5
5
|
import { D as DSRFormSubmission, b as DSRRequestFormClassNames } from './DSRRequestForm-DRouEr9j.mjs';
|
|
@@ -7,7 +7,7 @@ import { c as RequestType } from './dsr-yKbqX531.mjs';
|
|
|
7
7
|
import { B as BreachFormSubmission, b as BreachReportFormClassNames } from './BreachReportForm-yJ2Zl6gz.mjs';
|
|
8
8
|
import { B as BreachCategory } from './breach-Eu9byel8.mjs';
|
|
9
9
|
import { c as PrivacyPolicy } from './privacy-Ca6te9Ir.mjs';
|
|
10
|
-
import { P as PolicyDraft } from './policy-engine-
|
|
10
|
+
import { P as PolicyDraft } from './policy-engine-fYSqEqSW.mjs';
|
|
11
11
|
import { a as DPIAQuestionnaireClassNames } from './DPIAQuestionnaire-jkt1Veb6.mjs';
|
|
12
12
|
import { c as DPIASection } from './dpia-c9GiiOq0.mjs';
|
|
13
13
|
import { a as LawfulBasisTrackerClassNames } from './LawfulBasisTracker-CBqOxX1D.mjs';
|
package/dist/presets.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React__default from 'react';
|
|
2
|
-
import { b as ConsentBannerClassNames } from './ConsentBanner-
|
|
2
|
+
import { b as ConsentBannerClassNames } from './ConsentBanner-VqIPophc.js';
|
|
3
3
|
import { C as ConsentOption, a as ConsentSettings } from './consent-CmVzqZUk.js';
|
|
4
4
|
import { S as StorageAdapter } from './types-DK2CoKOC.js';
|
|
5
5
|
import { D as DSRFormSubmission, b as DSRRequestFormClassNames } from './DSRRequestForm-D8rPTNmU.js';
|
|
@@ -7,7 +7,7 @@ import { c as RequestType } from './dsr-yKbqX531.js';
|
|
|
7
7
|
import { B as BreachFormSubmission, b as BreachReportFormClassNames } from './BreachReportForm-DpRrBoxU.js';
|
|
8
8
|
import { B as BreachCategory } from './breach-Eu9byel8.js';
|
|
9
9
|
import { c as PrivacyPolicy } from './privacy-Ca6te9Ir.js';
|
|
10
|
-
import { P as PolicyDraft } from './policy-engine-
|
|
10
|
+
import { P as PolicyDraft } from './policy-engine-CCUCud2T.js';
|
|
11
11
|
import { a as DPIAQuestionnaireClassNames } from './DPIAQuestionnaire-VXBoWFMC.js';
|
|
12
12
|
import { c as DPIASection } from './dpia-c9GiiOq0.js';
|
|
13
13
|
import { a as LawfulBasisTrackerClassNames } from './LawfulBasisTracker-Cg30NbDA.js';
|
package/dist/presets.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var chunk25OOUES4_js=require('./chunk-25OOUES4.js'),chunkUO6QPJLH_js=require('./chunk-UO6QPJLH.js'),chunkGMLCWGNJ_js=require('./chunk-GMLCWGNJ.js'),chunk5BUS6AI7_js=require('./chunk-5BUS6AI7.js'),chunkS4GRSNB4_js=require('./chunk-S4GRSNB4.js');require('./chunk-TDDAYVKK.js'),require('./chunk-C4YM4UMI.js'),require('./chunk-GOU6FU6Y.js');var chunkNBSVFQ5G_js=require('./chunk-NBSVFQ5G.js'),chunkYCX6BFOQ_js=require('./chunk-YCX6BFOQ.js'),chunkXHSHPB74_js=require('./chunk-XHSHPB74.js'),chunkSAA7UVI2_js=require('./chunk-SAA7UVI2.js');require('./chunk-I54CDQGN.js');var chunkYZXUAIYN_js=require('./chunk-YZXUAIYN.js');require('./chunk-TXXWCB5O.js'),require('./chunk-LU4PFST7.js'),require('./chunk-E64TU6IU.js'),require('./chunk-ELKB2AFZ.js');var chunkMQFZHA2D_js=require('./chunk-MQFZHA2D.js'),jsxRuntime=require('react/jsx-runtime'),react=require('react');var q=[{id:"essential",label:"Essential Cookies",description:"Required for basic site functionality. Cannot be disabled.",required:true,purpose:"Site operation"},{id:"analytics",label:"Analytics",description:"Help us understand how visitors use our site to improve the experience.",required:false,purpose:"Usage analytics"},{id:"marketing",label:"Marketing",description:"Used to deliver relevant advertisements and track campaign effectiveness.",required:false,purpose:"Targeted advertising"},{id:"preferences",label:"Preferences",description:"Remember your settings and preferences for a personalised experience.",required:false,purpose:"Personalisation"}],O=({extraOptions:d=[],options:t,adapter:p,position:l="bottom",classNames:s,unstyled:c,onSave:a})=>{let u=t!=null?t:[...q,...d];return jsxRuntime.jsx(chunkNBSVFQ5G_js.a,{options:u,onSave:f=>{p&&p.save(f),a==null||a(f);},position:l,classNames:s,unstyled:c,manageStorage:!p})};var I=[{id:"access",name:"Access My Data",description:"Request a copy of your personal data held by us",ndpaSection:"Section 30",estimatedCompletionTime:30,requiresAdditionalInfo:false},{id:"rectification",name:"Correct My Data",description:"Request corrections to inaccurate personal data",ndpaSection:"Section 31",estimatedCompletionTime:30,requiresAdditionalInfo:true,additionalFields:[{id:"correction_details",label:"What data needs to be corrected?",type:"textarea",required:true,placeholder:"Please describe the inaccurate data and what the correct information should be"}]},{id:"erasure",name:"Delete My Data",description:"Request deletion of your personal data",ndpaSection:"Section 32",estimatedCompletionTime:30,requiresAdditionalInfo:false},{id:"portability",name:"Export My Data",description:"Receive your data in a portable format",ndpaSection:"Section 34",estimatedCompletionTime:30,requiresAdditionalInfo:false},{id:"restrict",name:"Restrict Processing",description:"Request restriction of data processing",ndpaSection:"Section 33",estimatedCompletionTime:30,requiresAdditionalInfo:false},{id:"object",name:"Object to Processing",description:"Object to processing of your personal data",ndpaSection:"Section 35",estimatedCompletionTime:30,requiresAdditionalInfo:false}],k=({requestTypes:d=I,adapter:t,classNames:p,unstyled:l,onSubmit:s=()=>{}})=>jsxRuntime.jsx(chunkYCX6BFOQ_js.a,{requestTypes:d,onSubmit:a=>{t&&t.save(a),s(a);},classNames:p,unstyled:l});var _=[{id:"unauthorized_access",name:"Unauthorized Access",description:"Unauthorized access to personal data",defaultSeverity:"high"},{id:"data_loss",name:"Data Loss",description:"Loss of personal data",defaultSeverity:"high"},{id:"data_theft",name:"Data Theft",description:"Theft of personal data",defaultSeverity:"critical"},{id:"system_breach",name:"System Breach",description:"Breach of system containing personal data",defaultSeverity:"critical"},{id:"accidental_disclosure",name:"Accidental Disclosure",description:"Unintended disclosure of personal data",defaultSeverity:"medium"}],U=({categories:d=_,adapter:t,classNames:p,unstyled:l,onSubmit:s=()=>{}})=>jsxRuntime.jsx(chunkSAA7UVI2_js.a,{categories:d,onSubmit:a=>{t&&t.save(a),s(a);},classNames:p,unstyled:l});var E=d=>jsxRuntime.jsx(chunkYZXUAIYN_js.a,chunkMQFZHA2D_js.a({},d));var Y=[{id:"project_overview",title:"Project Overview",description:"Provide basic details about the processing activity being assessed.",order:0,questions:[{id:"project_name",text:"What is the name of the project or processing activity?",type:"text",required:true},{id:"project_description",text:"Describe the nature and purpose of the processing.",guidance:"Include what personal data will be collected, why it is needed, and how it will be used.",type:"textarea",required:true},{id:"data_controller",text:"Who is the data controller responsible for this processing?",type:"text",required:true}]},{id:"necessity",title:"Necessity & Proportionality",description:"Assess whether the processing is necessary and proportionate to the purposes.",order:1,questions:[{id:"lawful_basis",text:"What is the lawful basis for processing under the NDPA 2023?",type:"select",required:true,options:[{value:"consent",label:"Consent (Section 25(1)(a))"},{value:"contract",label:"Contract (Section 25(1)(b))"},{value:"legal_obligation",label:"Legal Obligation (Section 25(1)(c))"},{value:"vital_interests",label:"Vital Interests (Section 25(1)(d))"},{value:"public_task",label:"Public Task (Section 25(1)(e))"},{value:"legitimate_interests",label:"Legitimate Interests (Section 25(1)(f))"}]},{id:"data_minimisation",text:"Is the processing limited to what is necessary for the specified purpose?",type:"radio",required:true,options:[{value:"yes",label:"Yes \u2014 only minimum data is collected",riskLevel:"low"},{value:"partial",label:"Partially \u2014 some additional data may be collected",riskLevel:"medium"},{value:"no",label:"No \u2014 more data is collected than strictly necessary",riskLevel:"high"}]}]},{id:"risk_identification",title:"Risk Identification",description:"Identify and assess risks to data subjects arising from the processing.",order:2,questions:[{id:"sensitive_data",text:"Does the processing involve sensitive personal data (e.g., health, biometric, financial, children's data)?",type:"radio",required:true,options:[{value:"no",label:"No sensitive data",riskLevel:"low"},{value:"yes_protected",label:"Yes, with appropriate safeguards",riskLevel:"medium"},{value:"yes_unprotected",label:"Yes, without adequate safeguards",riskLevel:"high"}]},{id:"scale",text:"What is the scale of processing?",type:"radio",required:true,options:[{value:"small",label:"Small scale (fewer than 1,000 individuals)",riskLevel:"low"},{value:"medium",label:"Medium scale (1,000 to 100,000 individuals)",riskLevel:"medium"},{value:"large",label:"Large scale (over 100,000 individuals)",riskLevel:"high"}]},{id:"cross_border",text:"Will data be transferred outside Nigeria?",type:"radio",required:true,options:[{value:"no",label:"No international transfers",riskLevel:"low"},{value:"adequate",label:"Yes, to countries with adequate protection",riskLevel:"medium"},{value:"inadequate",label:"Yes, to countries without adequate protection",riskLevel:"high"}]}]},{id:"mitigation",title:"Risk Mitigation & Measures",description:"Document the measures taken to address identified risks.",order:3,questions:[{id:"security_measures",text:"What technical and organisational security measures are in place?",guidance:"Include encryption, access controls, pseudonymisation, staff training, etc.",type:"textarea",required:true},{id:"retention_period",text:"What is the data retention period?",guidance:"Specify how long data will be kept and the criteria used to determine this.",type:"text",required:true},{id:"dpo_consulted",text:"Has the Data Protection Officer (DPO) been consulted on this assessment?",type:"radio",required:false,options:[{value:"yes",label:"Yes",riskLevel:"low"},{value:"no",label:"No",riskLevel:"medium"},{value:"na",label:"Not applicable \u2014 no DPO appointed",riskLevel:"medium"}]}]}],z=({sections:d=Y,adapter:t,classNames:p,unstyled:l,onComplete:s=()=>{}})=>{let[c,a]=react.useState({}),[u,y]=react.useState(0),f=(i,T)=>{a(B=>chunkMQFZHA2D_js.b(chunkMQFZHA2D_js.a({},B),{[i]:T}));},e=()=>{u<d.length-1?y(i=>i+1):(t&&t.save(c),s(c));},r=()=>{u>0&&y(i=>i-1);},o=Math.round((u+1)/d.length*100);return jsxRuntime.jsx(chunkXHSHPB74_js.a,{sections:d,answers:c,onAnswerChange:f,currentSectionIndex:u,onNextSection:e,onPrevSection:r,progress:o,classNames:p,unstyled:l})};var H=({initialActivities:d=[],adapter:t,classNames:p,unstyled:l})=>{let[s,c]=react.useState(()=>{if(t){let e=t.load();if(e&&!(e instanceof Promise))return e}return d}),a=e=>{t&&t.save(e);};return jsxRuntime.jsx(chunkUO6QPJLH_js.a,{activities:s,onAddActivity:e=>{let r=Date.now(),o=chunkMQFZHA2D_js.b(chunkMQFZHA2D_js.a({},e),{id:`activity-${r}`,createdAt:r,updatedAt:r}),i=[...s,o];c(i),a(i);},onUpdateActivity:(e,r)=>{let o=s.map(i=>i.id===e?chunkMQFZHA2D_js.b(chunkMQFZHA2D_js.a(chunkMQFZHA2D_js.a({},i),r),{updatedAt:Date.now()}):i);c(o),a(o);},onArchiveActivity:e=>{let r=s.map(o=>o.id===e?chunkMQFZHA2D_js.b(chunkMQFZHA2D_js.a({},o),{status:"inactive",updatedAt:Date.now()}):o);c(r),a(r);},classNames:p,unstyled:l})};var V=({initialTransfers:d=[],adapter:t,classNames:p,unstyled:l})=>{let[s,c]=react.useState(()=>{if(t){let e=t.load();if(e&&!(e instanceof Promise))return e}return d}),a=e=>{t&&t.save(e);};return jsxRuntime.jsx(chunkGMLCWGNJ_js.a,{transfers:s,onAddTransfer:e=>{let r=Date.now(),o=chunkMQFZHA2D_js.b(chunkMQFZHA2D_js.a({},e),{id:`transfer-${r}`,createdAt:r,updatedAt:r}),i=[...s,o];c(i),a(i);},onUpdateTransfer:(e,r)=>{let o=s.map(i=>i.id===e?chunkMQFZHA2D_js.b(chunkMQFZHA2D_js.a(chunkMQFZHA2D_js.a({},i),r),{updatedAt:Date.now()}):i);c(o),a(o);},onRemoveTransfer:e=>{let r=s.filter(o=>o.id!==e);c(r),a(r);},classNames:p,unstyled:l})};var Z={id:"ndpr-ropa-default",organizationName:"Your Organisation",organizationContact:"",organizationAddress:"",records:[],lastUpdated:Date.now(),version:"1.0"},ee=({initialData:d,adapter:t,classNames:p,unstyled:l})=>{let[s,c]=react.useState(d!=null?d:Z);react.useEffect(()=>{if(!t)return;let e=false;return chunkMQFZHA2D_js.d(null,null,function*(){let o=yield t.load();!e&&o&&c(o);}),()=>{e=true;}},[t]);let a=e=>{t&&t.save(e);};return jsxRuntime.jsx(chunk5BUS6AI7_js.a,{ropa:s,onAddRecord:e=>{let r=chunkMQFZHA2D_js.b(chunkMQFZHA2D_js.a({},s),{records:[...s.records,e],lastUpdated:Date.now()});c(r),a(r);},onUpdateRecord:(e,r)=>{let o=chunkMQFZHA2D_js.b(chunkMQFZHA2D_js.a({},s),{records:s.records.map(i=>i.id===e?chunkMQFZHA2D_js.b(chunkMQFZHA2D_js.a(chunkMQFZHA2D_js.a({},i),r),{updatedAt:Date.now()}):i),lastUpdated:Date.now()});c(o),a(o);},onArchiveRecord:e=>{let r=chunkMQFZHA2D_js.b(chunkMQFZHA2D_js.a({},s),{records:s.records.map(o=>o.id===e?chunkMQFZHA2D_js.b(chunkMQFZHA2D_js.a({},o),{status:"archived",updatedAt:Date.now()}):o),lastUpdated:Date.now()});c(r),a(r);},classNames:p,unstyled:l})};var re=p=>{var l=p,{input:d}=l,t=chunkMQFZHA2D_js.c(l,["input"]);let s=chunkS4GRSNB4_js.a(d);return jsxRuntime.jsx(chunk25OOUES4_js.a,chunkMQFZHA2D_js.a({report:s},t))};exports.NDPRBreachReport=U;exports.NDPRComplianceDashboard=re;exports.NDPRConsent=O;exports.NDPRCrossBorder=V;exports.NDPRDPIA=z;exports.NDPRLawfulBasis=H;exports.NDPRPrivacyPolicy=E;exports.NDPRROPA=ee;exports.NDPRSubjectRights=k;//# sourceMappingURL=presets.js.map
|
|
1
|
+
'use strict';var chunk2WH4DLV5_js=require('./chunk-2WH4DLV5.js'),chunkHGGLW5TE_js=require('./chunk-HGGLW5TE.js'),chunkLSNL4XR5_js=require('./chunk-LSNL4XR5.js'),chunkNQNFS3QI_js=require('./chunk-NQNFS3QI.js'),chunkP6QAFBCV_js=require('./chunk-P6QAFBCV.js');require('./chunk-XMBSJJ5U.js'),require('./chunk-UFPSUO52.js'),require('./chunk-RNTNHVKZ.js');var chunkS4GRSNB4_js=require('./chunk-S4GRSNB4.js');require('./chunk-AHSMDPG5.js'),require('./chunk-TDDAYVKK.js'),require('./chunk-C4YM4UMI.js'),require('./chunk-GOU6FU6Y.js');var chunkSUEGUY35_js=require('./chunk-SUEGUY35.js'),chunkZPKVLTSX_js=require('./chunk-ZPKVLTSX.js'),chunk5HL4UBFV_js=require('./chunk-5HL4UBFV.js'),chunkWTJGLNTB_js=require('./chunk-WTJGLNTB.js');require('./chunk-I54CDQGN.js'),require('./chunk-E64TU6IU.js'),require('./chunk-ELKB2AFZ.js');var chunkMQFZHA2D_js=require('./chunk-MQFZHA2D.js'),jsxRuntime=require('react/jsx-runtime'),react=require('react');var q=[{id:"essential",label:"Essential Cookies",description:"Required for basic site functionality. Cannot be disabled.",required:true,purpose:"Site operation"},{id:"analytics",label:"Analytics",description:"Help us understand how visitors use our site to improve the experience.",required:false,purpose:"Usage analytics"},{id:"marketing",label:"Marketing",description:"Used to deliver relevant advertisements and track campaign effectiveness.",required:false,purpose:"Targeted advertising"},{id:"preferences",label:"Preferences",description:"Remember your settings and preferences for a personalised experience.",required:false,purpose:"Personalisation"}],O=({extraOptions:d=[],options:t,adapter:p,position:l="bottom",classNames:s,unstyled:c,onSave:a})=>{let u=t!=null?t:[...q,...d];return jsxRuntime.jsx(chunkSUEGUY35_js.a,{options:u,onSave:f=>{p&&p.save(f),a==null||a(f);},position:l,classNames:s,unstyled:c,manageStorage:!p})};var I=[{id:"access",name:"Access My Data",description:"Request a copy of your personal data held by us",ndpaSection:"Section 30",estimatedCompletionTime:30,requiresAdditionalInfo:false},{id:"rectification",name:"Correct My Data",description:"Request corrections to inaccurate personal data",ndpaSection:"Section 31",estimatedCompletionTime:30,requiresAdditionalInfo:true,additionalFields:[{id:"correction_details",label:"What data needs to be corrected?",type:"textarea",required:true,placeholder:"Please describe the inaccurate data and what the correct information should be"}]},{id:"erasure",name:"Delete My Data",description:"Request deletion of your personal data",ndpaSection:"Section 32",estimatedCompletionTime:30,requiresAdditionalInfo:false},{id:"portability",name:"Export My Data",description:"Receive your data in a portable format",ndpaSection:"Section 34",estimatedCompletionTime:30,requiresAdditionalInfo:false},{id:"restrict",name:"Restrict Processing",description:"Request restriction of data processing",ndpaSection:"Section 33",estimatedCompletionTime:30,requiresAdditionalInfo:false},{id:"object",name:"Object to Processing",description:"Object to processing of your personal data",ndpaSection:"Section 35",estimatedCompletionTime:30,requiresAdditionalInfo:false}],k=({requestTypes:d=I,adapter:t,classNames:p,unstyled:l,onSubmit:s=()=>{}})=>jsxRuntime.jsx(chunkZPKVLTSX_js.a,{requestTypes:d,onSubmit:a=>{t&&t.save(a),s(a);},classNames:p,unstyled:l});var _=[{id:"unauthorized_access",name:"Unauthorized Access",description:"Unauthorized access to personal data",defaultSeverity:"high"},{id:"data_loss",name:"Data Loss",description:"Loss of personal data",defaultSeverity:"high"},{id:"data_theft",name:"Data Theft",description:"Theft of personal data",defaultSeverity:"critical"},{id:"system_breach",name:"System Breach",description:"Breach of system containing personal data",defaultSeverity:"critical"},{id:"accidental_disclosure",name:"Accidental Disclosure",description:"Unintended disclosure of personal data",defaultSeverity:"medium"}],U=({categories:d=_,adapter:t,classNames:p,unstyled:l,onSubmit:s=()=>{}})=>jsxRuntime.jsx(chunkWTJGLNTB_js.a,{categories:d,onSubmit:a=>{t&&t.save(a),s(a);},classNames:p,unstyled:l});var E=d=>jsxRuntime.jsx(chunk2WH4DLV5_js.a,chunkMQFZHA2D_js.a({},d));var Y=[{id:"project_overview",title:"Project Overview",description:"Provide basic details about the processing activity being assessed.",order:0,questions:[{id:"project_name",text:"What is the name of the project or processing activity?",type:"text",required:true},{id:"project_description",text:"Describe the nature and purpose of the processing.",guidance:"Include what personal data will be collected, why it is needed, and how it will be used.",type:"textarea",required:true},{id:"data_controller",text:"Who is the data controller responsible for this processing?",type:"text",required:true}]},{id:"necessity",title:"Necessity & Proportionality",description:"Assess whether the processing is necessary and proportionate to the purposes.",order:1,questions:[{id:"lawful_basis",text:"What is the lawful basis for processing under the NDPA 2023?",type:"select",required:true,options:[{value:"consent",label:"Consent (Section 25(1)(a))"},{value:"contract",label:"Contract (Section 25(1)(b))"},{value:"legal_obligation",label:"Legal Obligation (Section 25(1)(c))"},{value:"vital_interests",label:"Vital Interests (Section 25(1)(d))"},{value:"public_task",label:"Public Task (Section 25(1)(e))"},{value:"legitimate_interests",label:"Legitimate Interests (Section 25(1)(f))"}]},{id:"data_minimisation",text:"Is the processing limited to what is necessary for the specified purpose?",type:"radio",required:true,options:[{value:"yes",label:"Yes \u2014 only minimum data is collected",riskLevel:"low"},{value:"partial",label:"Partially \u2014 some additional data may be collected",riskLevel:"medium"},{value:"no",label:"No \u2014 more data is collected than strictly necessary",riskLevel:"high"}]}]},{id:"risk_identification",title:"Risk Identification",description:"Identify and assess risks to data subjects arising from the processing.",order:2,questions:[{id:"sensitive_data",text:"Does the processing involve sensitive personal data (e.g., health, biometric, financial, children's data)?",type:"radio",required:true,options:[{value:"no",label:"No sensitive data",riskLevel:"low"},{value:"yes_protected",label:"Yes, with appropriate safeguards",riskLevel:"medium"},{value:"yes_unprotected",label:"Yes, without adequate safeguards",riskLevel:"high"}]},{id:"scale",text:"What is the scale of processing?",type:"radio",required:true,options:[{value:"small",label:"Small scale (fewer than 1,000 individuals)",riskLevel:"low"},{value:"medium",label:"Medium scale (1,000 to 100,000 individuals)",riskLevel:"medium"},{value:"large",label:"Large scale (over 100,000 individuals)",riskLevel:"high"}]},{id:"cross_border",text:"Will data be transferred outside Nigeria?",type:"radio",required:true,options:[{value:"no",label:"No international transfers",riskLevel:"low"},{value:"adequate",label:"Yes, to countries with adequate protection",riskLevel:"medium"},{value:"inadequate",label:"Yes, to countries without adequate protection",riskLevel:"high"}]}]},{id:"mitigation",title:"Risk Mitigation & Measures",description:"Document the measures taken to address identified risks.",order:3,questions:[{id:"security_measures",text:"What technical and organisational security measures are in place?",guidance:"Include encryption, access controls, pseudonymisation, staff training, etc.",type:"textarea",required:true},{id:"retention_period",text:"What is the data retention period?",guidance:"Specify how long data will be kept and the criteria used to determine this.",type:"text",required:true},{id:"dpo_consulted",text:"Has the Data Protection Officer (DPO) been consulted on this assessment?",type:"radio",required:false,options:[{value:"yes",label:"Yes",riskLevel:"low"},{value:"no",label:"No",riskLevel:"medium"},{value:"na",label:"Not applicable \u2014 no DPO appointed",riskLevel:"medium"}]}]}],z=({sections:d=Y,adapter:t,classNames:p,unstyled:l,onComplete:s=()=>{}})=>{let[c,a]=react.useState({}),[u,y]=react.useState(0),f=(i,T)=>{a(B=>chunkMQFZHA2D_js.b(chunkMQFZHA2D_js.a({},B),{[i]:T}));},e=()=>{u<d.length-1?y(i=>i+1):(t&&t.save(c),s(c));},r=()=>{u>0&&y(i=>i-1);},o=Math.round((u+1)/d.length*100);return jsxRuntime.jsx(chunk5HL4UBFV_js.a,{sections:d,answers:c,onAnswerChange:f,currentSectionIndex:u,onNextSection:e,onPrevSection:r,progress:o,classNames:p,unstyled:l})};var H=({initialActivities:d=[],adapter:t,classNames:p,unstyled:l})=>{let[s,c]=react.useState(()=>{if(t){let e=t.load();if(e&&!(e instanceof Promise))return e}return d}),a=e=>{t&&t.save(e);};return jsxRuntime.jsx(chunkLSNL4XR5_js.a,{activities:s,onAddActivity:e=>{let r=Date.now(),o=chunkMQFZHA2D_js.b(chunkMQFZHA2D_js.a({},e),{id:`activity-${r}`,createdAt:r,updatedAt:r}),i=[...s,o];c(i),a(i);},onUpdateActivity:(e,r)=>{let o=s.map(i=>i.id===e?chunkMQFZHA2D_js.b(chunkMQFZHA2D_js.a(chunkMQFZHA2D_js.a({},i),r),{updatedAt:Date.now()}):i);c(o),a(o);},onArchiveActivity:e=>{let r=s.map(o=>o.id===e?chunkMQFZHA2D_js.b(chunkMQFZHA2D_js.a({},o),{status:"inactive",updatedAt:Date.now()}):o);c(r),a(r);},classNames:p,unstyled:l})};var V=({initialTransfers:d=[],adapter:t,classNames:p,unstyled:l})=>{let[s,c]=react.useState(()=>{if(t){let e=t.load();if(e&&!(e instanceof Promise))return e}return d}),a=e=>{t&&t.save(e);};return jsxRuntime.jsx(chunkNQNFS3QI_js.a,{transfers:s,onAddTransfer:e=>{let r=Date.now(),o=chunkMQFZHA2D_js.b(chunkMQFZHA2D_js.a({},e),{id:`transfer-${r}`,createdAt:r,updatedAt:r}),i=[...s,o];c(i),a(i);},onUpdateTransfer:(e,r)=>{let o=s.map(i=>i.id===e?chunkMQFZHA2D_js.b(chunkMQFZHA2D_js.a(chunkMQFZHA2D_js.a({},i),r),{updatedAt:Date.now()}):i);c(o),a(o);},onRemoveTransfer:e=>{let r=s.filter(o=>o.id!==e);c(r),a(r);},classNames:p,unstyled:l})};var Z={id:"ndpr-ropa-default",organizationName:"Your Organisation",organizationContact:"",organizationAddress:"",records:[],lastUpdated:Date.now(),version:"1.0"},ee=({initialData:d,adapter:t,classNames:p,unstyled:l})=>{let[s,c]=react.useState(d!=null?d:Z);react.useEffect(()=>{if(!t)return;let e=false;return chunkMQFZHA2D_js.d(null,null,function*(){let o=yield t.load();!e&&o&&c(o);}),()=>{e=true;}},[t]);let a=e=>{t&&t.save(e);};return jsxRuntime.jsx(chunkP6QAFBCV_js.a,{ropa:s,onAddRecord:e=>{let r=chunkMQFZHA2D_js.b(chunkMQFZHA2D_js.a({},s),{records:[...s.records,e],lastUpdated:Date.now()});c(r),a(r);},onUpdateRecord:(e,r)=>{let o=chunkMQFZHA2D_js.b(chunkMQFZHA2D_js.a({},s),{records:s.records.map(i=>i.id===e?chunkMQFZHA2D_js.b(chunkMQFZHA2D_js.a(chunkMQFZHA2D_js.a({},i),r),{updatedAt:Date.now()}):i),lastUpdated:Date.now()});c(o),a(o);},onArchiveRecord:e=>{let r=chunkMQFZHA2D_js.b(chunkMQFZHA2D_js.a({},s),{records:s.records.map(o=>o.id===e?chunkMQFZHA2D_js.b(chunkMQFZHA2D_js.a({},o),{status:"archived",updatedAt:Date.now()}):o),lastUpdated:Date.now()});c(r),a(r);},classNames:p,unstyled:l})};var re=p=>{var l=p,{input:d}=l,t=chunkMQFZHA2D_js.c(l,["input"]);let s=chunkS4GRSNB4_js.a(d);return jsxRuntime.jsx(chunkHGGLW5TE_js.a,chunkMQFZHA2D_js.a({report:s},t))};exports.NDPRBreachReport=U;exports.NDPRComplianceDashboard=re;exports.NDPRConsent=O;exports.NDPRCrossBorder=V;exports.NDPRDPIA=z;exports.NDPRLawfulBasis=H;exports.NDPRPrivacyPolicy=E;exports.NDPRROPA=ee;exports.NDPRSubjectRights=k;//# sourceMappingURL=presets.js.map
|
|
2
2
|
//# sourceMappingURL=presets.js.map
|
package/dist/presets.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {a as a$a}from'./chunk-XFUEZ3MP.mjs';import {a as a$6}from'./chunk-ZT7KNFAU.mjs';import {a as a$7}from'./chunk-TI2M7H6R.mjs';import {a as a$8}from'./chunk-YURSF2YO.mjs';import {a as a$9}from'./chunk-ABDB7LEV.mjs';import'./chunk-TXBZPCGF.mjs';import'./chunk-75TJPK2N.mjs';import'./chunk-SHMJNRHO.mjs';import {a}from'./chunk-4JKTIR33.mjs';import {a as a$1}from'./chunk-6YN73KR7.mjs';import {a as a$5}from'./chunk-GXLSOZCH.mjs';import {a as a$2}from'./chunk-CWUPGY3M.mjs';import'./chunk-GKKAK6ES.mjs';import {a as a$3}from'./chunk-UX6ZZNEM.mjs';import'./chunk-CDZDT2OS.mjs';import'./chunk-GCQRHMTQ.mjs';import'./chunk-AYKLAEOU.mjs';import'./chunk-6WIP33TW.mjs';import {a as a$4,b,d,c}from'./chunk-WWT2ZSNU.mjs';import {jsx}from'react/jsx-runtime';import {useState,useEffect}from'react';var q=[{id:"essential",label:"Essential Cookies",description:"Required for basic site functionality. Cannot be disabled.",required:true,purpose:"Site operation"},{id:"analytics",label:"Analytics",description:"Help us understand how visitors use our site to improve the experience.",required:false,purpose:"Usage analytics"},{id:"marketing",label:"Marketing",description:"Used to deliver relevant advertisements and track campaign effectiveness.",required:false,purpose:"Targeted advertising"},{id:"preferences",label:"Preferences",description:"Remember your settings and preferences for a personalised experience.",required:false,purpose:"Personalisation"}],O=({extraOptions:d=[],options:t,adapter:p,position:l="bottom",classNames:s,unstyled:c,onSave:a$1})=>{let u=t!=null?t:[...q,...d];return jsx(a,{options:u,onSave:f=>{p&&p.save(f),a$1==null||a$1(f);},position:l,classNames:s,unstyled:c,manageStorage:!p})};var I=[{id:"access",name:"Access My Data",description:"Request a copy of your personal data held by us",ndpaSection:"Section 30",estimatedCompletionTime:30,requiresAdditionalInfo:false},{id:"rectification",name:"Correct My Data",description:"Request corrections to inaccurate personal data",ndpaSection:"Section 31",estimatedCompletionTime:30,requiresAdditionalInfo:true,additionalFields:[{id:"correction_details",label:"What data needs to be corrected?",type:"textarea",required:true,placeholder:"Please describe the inaccurate data and what the correct information should be"}]},{id:"erasure",name:"Delete My Data",description:"Request deletion of your personal data",ndpaSection:"Section 32",estimatedCompletionTime:30,requiresAdditionalInfo:false},{id:"portability",name:"Export My Data",description:"Receive your data in a portable format",ndpaSection:"Section 34",estimatedCompletionTime:30,requiresAdditionalInfo:false},{id:"restrict",name:"Restrict Processing",description:"Request restriction of data processing",ndpaSection:"Section 33",estimatedCompletionTime:30,requiresAdditionalInfo:false},{id:"object",name:"Object to Processing",description:"Object to processing of your personal data",ndpaSection:"Section 35",estimatedCompletionTime:30,requiresAdditionalInfo:false}],k=({requestTypes:d=I,adapter:t,classNames:p,unstyled:l,onSubmit:s=()=>{}})=>jsx(a$1,{requestTypes:d,onSubmit:a=>{t&&t.save(a),s(a);},classNames:p,unstyled:l});var _=[{id:"unauthorized_access",name:"Unauthorized Access",description:"Unauthorized access to personal data",defaultSeverity:"high"},{id:"data_loss",name:"Data Loss",description:"Loss of personal data",defaultSeverity:"high"},{id:"data_theft",name:"Data Theft",description:"Theft of personal data",defaultSeverity:"critical"},{id:"system_breach",name:"System Breach",description:"Breach of system containing personal data",defaultSeverity:"critical"},{id:"accidental_disclosure",name:"Accidental Disclosure",description:"Unintended disclosure of personal data",defaultSeverity:"medium"}],U=({categories:d=_,adapter:t,classNames:p,unstyled:l,onSubmit:s=()=>{}})=>jsx(a$2,{categories:d,onSubmit:a=>{t&&t.save(a),s(a);},classNames:p,unstyled:l});var E=d=>jsx(a$3,a$4({},d));var Y=[{id:"project_overview",title:"Project Overview",description:"Provide basic details about the processing activity being assessed.",order:0,questions:[{id:"project_name",text:"What is the name of the project or processing activity?",type:"text",required:true},{id:"project_description",text:"Describe the nature and purpose of the processing.",guidance:"Include what personal data will be collected, why it is needed, and how it will be used.",type:"textarea",required:true},{id:"data_controller",text:"Who is the data controller responsible for this processing?",type:"text",required:true}]},{id:"necessity",title:"Necessity & Proportionality",description:"Assess whether the processing is necessary and proportionate to the purposes.",order:1,questions:[{id:"lawful_basis",text:"What is the lawful basis for processing under the NDPA 2023?",type:"select",required:true,options:[{value:"consent",label:"Consent (Section 25(1)(a))"},{value:"contract",label:"Contract (Section 25(1)(b))"},{value:"legal_obligation",label:"Legal Obligation (Section 25(1)(c))"},{value:"vital_interests",label:"Vital Interests (Section 25(1)(d))"},{value:"public_task",label:"Public Task (Section 25(1)(e))"},{value:"legitimate_interests",label:"Legitimate Interests (Section 25(1)(f))"}]},{id:"data_minimisation",text:"Is the processing limited to what is necessary for the specified purpose?",type:"radio",required:true,options:[{value:"yes",label:"Yes \u2014 only minimum data is collected",riskLevel:"low"},{value:"partial",label:"Partially \u2014 some additional data may be collected",riskLevel:"medium"},{value:"no",label:"No \u2014 more data is collected than strictly necessary",riskLevel:"high"}]}]},{id:"risk_identification",title:"Risk Identification",description:"Identify and assess risks to data subjects arising from the processing.",order:2,questions:[{id:"sensitive_data",text:"Does the processing involve sensitive personal data (e.g., health, biometric, financial, children's data)?",type:"radio",required:true,options:[{value:"no",label:"No sensitive data",riskLevel:"low"},{value:"yes_protected",label:"Yes, with appropriate safeguards",riskLevel:"medium"},{value:"yes_unprotected",label:"Yes, without adequate safeguards",riskLevel:"high"}]},{id:"scale",text:"What is the scale of processing?",type:"radio",required:true,options:[{value:"small",label:"Small scale (fewer than 1,000 individuals)",riskLevel:"low"},{value:"medium",label:"Medium scale (1,000 to 100,000 individuals)",riskLevel:"medium"},{value:"large",label:"Large scale (over 100,000 individuals)",riskLevel:"high"}]},{id:"cross_border",text:"Will data be transferred outside Nigeria?",type:"radio",required:true,options:[{value:"no",label:"No international transfers",riskLevel:"low"},{value:"adequate",label:"Yes, to countries with adequate protection",riskLevel:"medium"},{value:"inadequate",label:"Yes, to countries without adequate protection",riskLevel:"high"}]}]},{id:"mitigation",title:"Risk Mitigation & Measures",description:"Document the measures taken to address identified risks.",order:3,questions:[{id:"security_measures",text:"What technical and organisational security measures are in place?",guidance:"Include encryption, access controls, pseudonymisation, staff training, etc.",type:"textarea",required:true},{id:"retention_period",text:"What is the data retention period?",guidance:"Specify how long data will be kept and the criteria used to determine this.",type:"text",required:true},{id:"dpo_consulted",text:"Has the Data Protection Officer (DPO) been consulted on this assessment?",type:"radio",required:false,options:[{value:"yes",label:"Yes",riskLevel:"low"},{value:"no",label:"No",riskLevel:"medium"},{value:"na",label:"Not applicable \u2014 no DPO appointed",riskLevel:"medium"}]}]}],z=({sections:d=Y,adapter:t,classNames:p,unstyled:l,onComplete:s=()=>{}})=>{let[c,a]=useState({}),[u,y]=useState(0),f=(i,T)=>{a(B=>b(a$4({},B),{[i]:T}));},e=()=>{u<d.length-1?y(i=>i+1):(t&&t.save(c),s(c));},r=()=>{u>0&&y(i=>i-1);},o=Math.round((u+1)/d.length*100);return jsx(a$5,{sections:d,answers:c,onAnswerChange:f,currentSectionIndex:u,onNextSection:e,onPrevSection:r,progress:o,classNames:p,unstyled:l})};var H=({initialActivities:d=[],adapter:t,classNames:p,unstyled:l})=>{let[s,c]=useState(()=>{if(t){let e=t.load();if(e&&!(e instanceof Promise))return e}return d}),a=e=>{t&&t.save(e);};return jsx(a$6,{activities:s,onAddActivity:e=>{let r=Date.now(),o=b(a$4({},e),{id:`activity-${r}`,createdAt:r,updatedAt:r}),i=[...s,o];c(i),a(i);},onUpdateActivity:(e,r)=>{let o=s.map(i=>i.id===e?b(a$4(a$4({},i),r),{updatedAt:Date.now()}):i);c(o),a(o);},onArchiveActivity:e=>{let r=s.map(o=>o.id===e?b(a$4({},o),{status:"inactive",updatedAt:Date.now()}):o);c(r),a(r);},classNames:p,unstyled:l})};var V=({initialTransfers:d=[],adapter:t,classNames:p,unstyled:l})=>{let[s,c]=useState(()=>{if(t){let e=t.load();if(e&&!(e instanceof Promise))return e}return d}),a=e=>{t&&t.save(e);};return jsx(a$7,{transfers:s,onAddTransfer:e=>{let r=Date.now(),o=b(a$4({},e),{id:`transfer-${r}`,createdAt:r,updatedAt:r}),i=[...s,o];c(i),a(i);},onUpdateTransfer:(e,r)=>{let o=s.map(i=>i.id===e?b(a$4(a$4({},i),r),{updatedAt:Date.now()}):i);c(o),a(o);},onRemoveTransfer:e=>{let r=s.filter(o=>o.id!==e);c(r),a(r);},classNames:p,unstyled:l})};var Z={id:"ndpr-ropa-default",organizationName:"Your Organisation",organizationContact:"",organizationAddress:"",records:[],lastUpdated:Date.now(),version:"1.0"},ee=({initialData:d$1,adapter:t,classNames:p,unstyled:l})=>{let[s,c]=useState(d$1!=null?d$1:Z);useEffect(()=>{if(!t)return;let e=false;return d(null,null,function*(){let o=yield t.load();!e&&o&&c(o);}),()=>{e=true;}},[t]);let a=e=>{t&&t.save(e);};return jsx(a$8,{ropa:s,onAddRecord:e=>{let r=b(a$4({},s),{records:[...s.records,e],lastUpdated:Date.now()});c(r),a(r);},onUpdateRecord:(e,r)=>{let o=b(a$4({},s),{records:s.records.map(i=>i.id===e?b(a$4(a$4({},i),r),{updatedAt:Date.now()}):i),lastUpdated:Date.now()});c(o),a(o);},onArchiveRecord:e=>{let r=b(a$4({},s),{records:s.records.map(o=>o.id===e?b(a$4({},o),{status:"archived",updatedAt:Date.now()}):o),lastUpdated:Date.now()});c(r),a(r);},classNames:p,unstyled:l})};var re=p=>{var l=p,{input:d}=l,t=c(l,["input"]);let s=a$9(d);return jsx(a$a,a$4({report:s},t))};export{U as NDPRBreachReport,re as NDPRComplianceDashboard,O as NDPRConsent,V as NDPRCrossBorder,z as NDPRDPIA,H as NDPRLawfulBasis,E as NDPRPrivacyPolicy,ee as NDPRROPA,k as NDPRSubjectRights};//# sourceMappingURL=presets.mjs.map
|
|
1
|
+
import {a as a$3}from'./chunk-QVULSG6J.mjs';import {a as a$a}from'./chunk-RRVKUCFR.mjs';import {a as a$6}from'./chunk-CISJAQ6W.mjs';import {a as a$7}from'./chunk-SYMQJO2W.mjs';import {a as a$8}from'./chunk-VTITKWGX.mjs';import'./chunk-KSERBMXW.mjs';import'./chunk-4R42ZNO7.mjs';import'./chunk-MG73MOZC.mjs';import {a as a$9}from'./chunk-ABDB7LEV.mjs';import'./chunk-ZLSWOFAY.mjs';import'./chunk-TXBZPCGF.mjs';import'./chunk-75TJPK2N.mjs';import'./chunk-SHMJNRHO.mjs';import {a}from'./chunk-BN77GP4W.mjs';import {a as a$1}from'./chunk-6HZL2WDU.mjs';import {a as a$5}from'./chunk-LJNNPAFU.mjs';import {a as a$2}from'./chunk-KF3EFJEF.mjs';import'./chunk-GKKAK6ES.mjs';import'./chunk-AYKLAEOU.mjs';import'./chunk-6WIP33TW.mjs';import {a as a$4,b,d,c}from'./chunk-WWT2ZSNU.mjs';import {jsx}from'react/jsx-runtime';import {useState,useEffect}from'react';var q=[{id:"essential",label:"Essential Cookies",description:"Required for basic site functionality. Cannot be disabled.",required:true,purpose:"Site operation"},{id:"analytics",label:"Analytics",description:"Help us understand how visitors use our site to improve the experience.",required:false,purpose:"Usage analytics"},{id:"marketing",label:"Marketing",description:"Used to deliver relevant advertisements and track campaign effectiveness.",required:false,purpose:"Targeted advertising"},{id:"preferences",label:"Preferences",description:"Remember your settings and preferences for a personalised experience.",required:false,purpose:"Personalisation"}],O=({extraOptions:d=[],options:t,adapter:p,position:l="bottom",classNames:s,unstyled:c,onSave:a$1})=>{let u=t!=null?t:[...q,...d];return jsx(a,{options:u,onSave:f=>{p&&p.save(f),a$1==null||a$1(f);},position:l,classNames:s,unstyled:c,manageStorage:!p})};var I=[{id:"access",name:"Access My Data",description:"Request a copy of your personal data held by us",ndpaSection:"Section 30",estimatedCompletionTime:30,requiresAdditionalInfo:false},{id:"rectification",name:"Correct My Data",description:"Request corrections to inaccurate personal data",ndpaSection:"Section 31",estimatedCompletionTime:30,requiresAdditionalInfo:true,additionalFields:[{id:"correction_details",label:"What data needs to be corrected?",type:"textarea",required:true,placeholder:"Please describe the inaccurate data and what the correct information should be"}]},{id:"erasure",name:"Delete My Data",description:"Request deletion of your personal data",ndpaSection:"Section 32",estimatedCompletionTime:30,requiresAdditionalInfo:false},{id:"portability",name:"Export My Data",description:"Receive your data in a portable format",ndpaSection:"Section 34",estimatedCompletionTime:30,requiresAdditionalInfo:false},{id:"restrict",name:"Restrict Processing",description:"Request restriction of data processing",ndpaSection:"Section 33",estimatedCompletionTime:30,requiresAdditionalInfo:false},{id:"object",name:"Object to Processing",description:"Object to processing of your personal data",ndpaSection:"Section 35",estimatedCompletionTime:30,requiresAdditionalInfo:false}],k=({requestTypes:d=I,adapter:t,classNames:p,unstyled:l,onSubmit:s=()=>{}})=>jsx(a$1,{requestTypes:d,onSubmit:a=>{t&&t.save(a),s(a);},classNames:p,unstyled:l});var _=[{id:"unauthorized_access",name:"Unauthorized Access",description:"Unauthorized access to personal data",defaultSeverity:"high"},{id:"data_loss",name:"Data Loss",description:"Loss of personal data",defaultSeverity:"high"},{id:"data_theft",name:"Data Theft",description:"Theft of personal data",defaultSeverity:"critical"},{id:"system_breach",name:"System Breach",description:"Breach of system containing personal data",defaultSeverity:"critical"},{id:"accidental_disclosure",name:"Accidental Disclosure",description:"Unintended disclosure of personal data",defaultSeverity:"medium"}],U=({categories:d=_,adapter:t,classNames:p,unstyled:l,onSubmit:s=()=>{}})=>jsx(a$2,{categories:d,onSubmit:a=>{t&&t.save(a),s(a);},classNames:p,unstyled:l});var E=d=>jsx(a$3,a$4({},d));var Y=[{id:"project_overview",title:"Project Overview",description:"Provide basic details about the processing activity being assessed.",order:0,questions:[{id:"project_name",text:"What is the name of the project or processing activity?",type:"text",required:true},{id:"project_description",text:"Describe the nature and purpose of the processing.",guidance:"Include what personal data will be collected, why it is needed, and how it will be used.",type:"textarea",required:true},{id:"data_controller",text:"Who is the data controller responsible for this processing?",type:"text",required:true}]},{id:"necessity",title:"Necessity & Proportionality",description:"Assess whether the processing is necessary and proportionate to the purposes.",order:1,questions:[{id:"lawful_basis",text:"What is the lawful basis for processing under the NDPA 2023?",type:"select",required:true,options:[{value:"consent",label:"Consent (Section 25(1)(a))"},{value:"contract",label:"Contract (Section 25(1)(b))"},{value:"legal_obligation",label:"Legal Obligation (Section 25(1)(c))"},{value:"vital_interests",label:"Vital Interests (Section 25(1)(d))"},{value:"public_task",label:"Public Task (Section 25(1)(e))"},{value:"legitimate_interests",label:"Legitimate Interests (Section 25(1)(f))"}]},{id:"data_minimisation",text:"Is the processing limited to what is necessary for the specified purpose?",type:"radio",required:true,options:[{value:"yes",label:"Yes \u2014 only minimum data is collected",riskLevel:"low"},{value:"partial",label:"Partially \u2014 some additional data may be collected",riskLevel:"medium"},{value:"no",label:"No \u2014 more data is collected than strictly necessary",riskLevel:"high"}]}]},{id:"risk_identification",title:"Risk Identification",description:"Identify and assess risks to data subjects arising from the processing.",order:2,questions:[{id:"sensitive_data",text:"Does the processing involve sensitive personal data (e.g., health, biometric, financial, children's data)?",type:"radio",required:true,options:[{value:"no",label:"No sensitive data",riskLevel:"low"},{value:"yes_protected",label:"Yes, with appropriate safeguards",riskLevel:"medium"},{value:"yes_unprotected",label:"Yes, without adequate safeguards",riskLevel:"high"}]},{id:"scale",text:"What is the scale of processing?",type:"radio",required:true,options:[{value:"small",label:"Small scale (fewer than 1,000 individuals)",riskLevel:"low"},{value:"medium",label:"Medium scale (1,000 to 100,000 individuals)",riskLevel:"medium"},{value:"large",label:"Large scale (over 100,000 individuals)",riskLevel:"high"}]},{id:"cross_border",text:"Will data be transferred outside Nigeria?",type:"radio",required:true,options:[{value:"no",label:"No international transfers",riskLevel:"low"},{value:"adequate",label:"Yes, to countries with adequate protection",riskLevel:"medium"},{value:"inadequate",label:"Yes, to countries without adequate protection",riskLevel:"high"}]}]},{id:"mitigation",title:"Risk Mitigation & Measures",description:"Document the measures taken to address identified risks.",order:3,questions:[{id:"security_measures",text:"What technical and organisational security measures are in place?",guidance:"Include encryption, access controls, pseudonymisation, staff training, etc.",type:"textarea",required:true},{id:"retention_period",text:"What is the data retention period?",guidance:"Specify how long data will be kept and the criteria used to determine this.",type:"text",required:true},{id:"dpo_consulted",text:"Has the Data Protection Officer (DPO) been consulted on this assessment?",type:"radio",required:false,options:[{value:"yes",label:"Yes",riskLevel:"low"},{value:"no",label:"No",riskLevel:"medium"},{value:"na",label:"Not applicable \u2014 no DPO appointed",riskLevel:"medium"}]}]}],z=({sections:d=Y,adapter:t,classNames:p,unstyled:l,onComplete:s=()=>{}})=>{let[c,a]=useState({}),[u,y]=useState(0),f=(i,T)=>{a(B=>b(a$4({},B),{[i]:T}));},e=()=>{u<d.length-1?y(i=>i+1):(t&&t.save(c),s(c));},r=()=>{u>0&&y(i=>i-1);},o=Math.round((u+1)/d.length*100);return jsx(a$5,{sections:d,answers:c,onAnswerChange:f,currentSectionIndex:u,onNextSection:e,onPrevSection:r,progress:o,classNames:p,unstyled:l})};var H=({initialActivities:d=[],adapter:t,classNames:p,unstyled:l})=>{let[s,c]=useState(()=>{if(t){let e=t.load();if(e&&!(e instanceof Promise))return e}return d}),a=e=>{t&&t.save(e);};return jsx(a$6,{activities:s,onAddActivity:e=>{let r=Date.now(),o=b(a$4({},e),{id:`activity-${r}`,createdAt:r,updatedAt:r}),i=[...s,o];c(i),a(i);},onUpdateActivity:(e,r)=>{let o=s.map(i=>i.id===e?b(a$4(a$4({},i),r),{updatedAt:Date.now()}):i);c(o),a(o);},onArchiveActivity:e=>{let r=s.map(o=>o.id===e?b(a$4({},o),{status:"inactive",updatedAt:Date.now()}):o);c(r),a(r);},classNames:p,unstyled:l})};var V=({initialTransfers:d=[],adapter:t,classNames:p,unstyled:l})=>{let[s,c]=useState(()=>{if(t){let e=t.load();if(e&&!(e instanceof Promise))return e}return d}),a=e=>{t&&t.save(e);};return jsx(a$7,{transfers:s,onAddTransfer:e=>{let r=Date.now(),o=b(a$4({},e),{id:`transfer-${r}`,createdAt:r,updatedAt:r}),i=[...s,o];c(i),a(i);},onUpdateTransfer:(e,r)=>{let o=s.map(i=>i.id===e?b(a$4(a$4({},i),r),{updatedAt:Date.now()}):i);c(o),a(o);},onRemoveTransfer:e=>{let r=s.filter(o=>o.id!==e);c(r),a(r);},classNames:p,unstyled:l})};var Z={id:"ndpr-ropa-default",organizationName:"Your Organisation",organizationContact:"",organizationAddress:"",records:[],lastUpdated:Date.now(),version:"1.0"},ee=({initialData:d$1,adapter:t,classNames:p,unstyled:l})=>{let[s,c]=useState(d$1!=null?d$1:Z);useEffect(()=>{if(!t)return;let e=false;return d(null,null,function*(){let o=yield t.load();!e&&o&&c(o);}),()=>{e=true;}},[t]);let a=e=>{t&&t.save(e);};return jsx(a$8,{ropa:s,onAddRecord:e=>{let r=b(a$4({},s),{records:[...s.records,e],lastUpdated:Date.now()});c(r),a(r);},onUpdateRecord:(e,r)=>{let o=b(a$4({},s),{records:s.records.map(i=>i.id===e?b(a$4(a$4({},i),r),{updatedAt:Date.now()}):i),lastUpdated:Date.now()});c(o),a(o);},onArchiveRecord:e=>{let r=b(a$4({},s),{records:s.records.map(o=>o.id===e?b(a$4({},o),{status:"archived",updatedAt:Date.now()}):o),lastUpdated:Date.now()});c(r),a(r);},classNames:p,unstyled:l})};var re=p=>{var l=p,{input:d}=l,t=c(l,["input"]);let s=a$9(d);return jsx(a$a,a$4({report:s},t))};export{U as NDPRBreachReport,re as NDPRComplianceDashboard,O as NDPRConsent,V as NDPRCrossBorder,z as NDPRDPIA,H as NDPRLawfulBasis,E as NDPRPrivacyPolicy,ee as NDPRROPA,k as NDPRSubjectRights};//# sourceMappingURL=presets.mjs.map
|
|
2
2
|
//# sourceMappingURL=presets.mjs.map
|
package/dist/ropa.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var
|
|
1
|
+
'use strict';var chunkP6QAFBCV_js=require('./chunk-P6QAFBCV.js'),chunkM2TPT5GB_js=require('./chunk-M2TPT5GB.js'),chunkGOU6FU6Y_js=require('./chunk-GOU6FU6Y.js');require('./chunk-E64TU6IU.js'),require('./chunk-MQFZHA2D.js');var react=require('react'),jsxRuntime=require('react/jsx-runtime');var p=react.createContext(null);function u(){let r=react.useContext(p);if(!r)throw new Error("ROPA compound components must be wrapped in <ROPA.Provider>. Example: <ROPA.Provider initialData={...}><ROPA.Manager /></ROPA.Provider>");return r}var e=({initialData:r,adapter:i,onRecordAdd:P,onRecordUpdate:n,onRecordArchive:a,children:s})=>{let R=chunkM2TPT5GB_js.a({initialData:r,adapter:i,onRecordAdd:P,onRecordUpdate:n,onRecordArchive:a});return jsxRuntime.jsx(p.Provider,{value:R,children:s})};var v={Provider:e,Manager:chunkP6QAFBCV_js.a};Object.defineProperty(exports,"ROPAManager",{enumerable:true,get:function(){return chunkP6QAFBCV_js.a}});Object.defineProperty(exports,"useROPA",{enumerable:true,get:function(){return chunkM2TPT5GB_js.a}});Object.defineProperty(exports,"exportROPAToCSV",{enumerable:true,get:function(){return chunkGOU6FU6Y_js.c}});Object.defineProperty(exports,"generateROPASummary",{enumerable:true,get:function(){return chunkGOU6FU6Y_js.b}});Object.defineProperty(exports,"identifyComplianceGaps",{enumerable:true,get:function(){return chunkGOU6FU6Y_js.d}});Object.defineProperty(exports,"validateProcessingRecord",{enumerable:true,get:function(){return chunkGOU6FU6Y_js.a}});exports.ROPA=v;exports.ROPAProvider=e;exports.useROPACompound=u;//# sourceMappingURL=ropa.js.map
|
|
2
2
|
//# sourceMappingURL=ropa.js.map
|
package/dist/ropa.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {a}from'./chunk-
|
|
1
|
+
import {a}from'./chunk-VTITKWGX.mjs';export{a as ROPAManager}from'./chunk-VTITKWGX.mjs';import {a as a$1}from'./chunk-2AW7KAZO.mjs';export{a as useROPA}from'./chunk-2AW7KAZO.mjs';export{c as exportROPAToCSV,b as generateROPASummary,d as identifyComplianceGaps,a as validateProcessingRecord}from'./chunk-SHMJNRHO.mjs';import'./chunk-AYKLAEOU.mjs';import'./chunk-WWT2ZSNU.mjs';import {createContext,useContext}from'react';import {jsx}from'react/jsx-runtime';var p=createContext(null);function u(){let r=useContext(p);if(!r)throw new Error("ROPA compound components must be wrapped in <ROPA.Provider>. Example: <ROPA.Provider initialData={...}><ROPA.Manager /></ROPA.Provider>");return r}var e=({initialData:r,adapter:i,onRecordAdd:P,onRecordUpdate:n,onRecordArchive:a,children:s})=>{let R=a$1({initialData:r,adapter:i,onRecordAdd:P,onRecordUpdate:n,onRecordArchive:a});return jsx(p.Provider,{value:R,children:s})};var v={Provider:e,Manager:a};export{v as ROPA,e as ROPAProvider,u as useROPACompound};//# sourceMappingURL=ropa.mjs.map
|
|
2
2
|
//# sourceMappingURL=ropa.mjs.map
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Locale strings for all toolkit components.
|
|
3
|
+
* Pass partial overrides — missing keys fall back to English defaults.
|
|
4
|
+
*/
|
|
5
|
+
interface NDPRLocale {
|
|
6
|
+
consent?: {
|
|
7
|
+
title?: string;
|
|
8
|
+
description?: string;
|
|
9
|
+
acceptAll?: string;
|
|
10
|
+
rejectAll?: string;
|
|
11
|
+
customize?: string;
|
|
12
|
+
savePreferences?: string;
|
|
13
|
+
selectAll?: string;
|
|
14
|
+
deselectAll?: string;
|
|
15
|
+
required?: string;
|
|
16
|
+
cookieNotice?: string;
|
|
17
|
+
};
|
|
18
|
+
dsr?: {
|
|
19
|
+
title?: string;
|
|
20
|
+
description?: string;
|
|
21
|
+
submitRequest?: string;
|
|
22
|
+
reset?: string;
|
|
23
|
+
fullName?: string;
|
|
24
|
+
email?: string;
|
|
25
|
+
phone?: string;
|
|
26
|
+
requestType?: string;
|
|
27
|
+
additionalInfo?: string;
|
|
28
|
+
identityVerification?: string;
|
|
29
|
+
identifierType?: string;
|
|
30
|
+
identifierValue?: string;
|
|
31
|
+
privacyNotice?: string;
|
|
32
|
+
successMessage?: string;
|
|
33
|
+
};
|
|
34
|
+
breach?: {
|
|
35
|
+
title?: string;
|
|
36
|
+
description?: string;
|
|
37
|
+
submitReport?: string;
|
|
38
|
+
breachTitle?: string;
|
|
39
|
+
category?: string;
|
|
40
|
+
discoveredAt?: string;
|
|
41
|
+
detailedDescription?: string;
|
|
42
|
+
};
|
|
43
|
+
dpia?: {
|
|
44
|
+
title?: string;
|
|
45
|
+
next?: string;
|
|
46
|
+
previous?: string;
|
|
47
|
+
complete?: string;
|
|
48
|
+
progress?: string;
|
|
49
|
+
};
|
|
50
|
+
policy?: {
|
|
51
|
+
title?: string;
|
|
52
|
+
generate?: string;
|
|
53
|
+
preview?: string;
|
|
54
|
+
export?: string;
|
|
55
|
+
sections?: string;
|
|
56
|
+
variables?: string;
|
|
57
|
+
};
|
|
58
|
+
compliance?: {
|
|
59
|
+
score?: string;
|
|
60
|
+
excellent?: string;
|
|
61
|
+
good?: string;
|
|
62
|
+
needsWork?: string;
|
|
63
|
+
critical?: string;
|
|
64
|
+
recommendations?: string;
|
|
65
|
+
passed?: string;
|
|
66
|
+
gaps?: string;
|
|
67
|
+
};
|
|
68
|
+
common?: {
|
|
69
|
+
loading?: string;
|
|
70
|
+
error?: string;
|
|
71
|
+
save?: string;
|
|
72
|
+
cancel?: string;
|
|
73
|
+
delete?: string;
|
|
74
|
+
edit?: string;
|
|
75
|
+
add?: string;
|
|
76
|
+
back?: string;
|
|
77
|
+
next?: string;
|
|
78
|
+
search?: string;
|
|
79
|
+
noResults?: string;
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
declare const defaultLocale: Required<{
|
|
84
|
+
[K in keyof NDPRLocale]: Required<NonNullable<NDPRLocale[K]>>;
|
|
85
|
+
}>;
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Sanitizes user input to prevent XSS attacks.
|
|
89
|
+
* Escapes HTML special characters so that data rendered in dashboards
|
|
90
|
+
* or other consumer UIs cannot execute embedded scripts.
|
|
91
|
+
*/
|
|
92
|
+
declare function sanitizeInput(input: string): string;
|
|
93
|
+
|
|
94
|
+
export { type NDPRLocale as N, defaultLocale as d, sanitizeInput as s };
|