@tantainnovative/ndpr-toolkit 3.3.1 → 3.4.1
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 +542 -0
- package/README.md +80 -38
- 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 +2 -1
- package/dist/breach.mjs +2 -1
- package/dist/chunk-2L7BSG7G.mjs +2 -0
- package/dist/chunk-3NQQSU4P.js +2 -0
- package/dist/chunk-3VQAYQR7.js +7 -0
- package/dist/chunk-4BOEFDDE.js +4 -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-ASLMPY54.js +3 -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-I557S566.mjs +15 -0
- package/dist/chunk-IZCWCE7W.mjs +2 -0
- package/dist/chunk-JBSCER34.js +2 -0
- package/dist/chunk-JFFOPHU3.mjs +318 -0
- package/dist/chunk-KF3EFJEF.mjs +3 -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-MLOWRZXO.mjs +4 -0
- package/dist/chunk-NFJ4CB63.mjs +3 -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-R5FW5XUQ.mjs +2 -0
- package/dist/chunk-RLYTX3MM.js +2 -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-UHTJ6UFW.js +2 -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-YPKUHSK4.js +15 -0
- package/dist/chunk-Z73T6MWY.js +318 -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 +2 -1
- package/dist/consent.mjs +2 -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 +2 -1
- package/dist/cross-border.mjs +2 -1
- package/dist/docx-4n8g4zul.d.mts +64 -0
- package/dist/docx-VvcTLYZM.d.ts +64 -0
- package/dist/dpia.js +2 -1
- package/dist/dpia.mjs +2 -1
- package/dist/dsr.js +2 -1
- package/dist/dsr.mjs +2 -1
- package/dist/hooks.d.mts +3 -3
- package/dist/hooks.d.ts +3 -3
- package/dist/hooks.js +2 -1
- package/dist/hooks.mjs +2 -1
- package/dist/index.d.mts +7 -5
- package/dist/index.d.ts +7 -5
- package/dist/index.js +2 -1
- package/dist/index.mjs +2 -1
- package/dist/lawful-basis.js +2 -1
- package/dist/lawful-basis.mjs +2 -1
- package/dist/locale-CxJx2tzn.d.mts +25 -0
- package/dist/locale-DSkrtf-c.d.ts +25 -0
- package/dist/{policy-engine-DefZcX3R.d.mts → policy-engine-5qTfp2z4.d.mts} +21 -1
- package/dist/{policy-engine-C6nC2t3a.d.ts → policy-engine-DzPxskOK.d.ts} +21 -1
- package/dist/{policy-sections-DFDPVCCg.d.ts → policy-sections-9tCb7VU7.d.ts} +4 -2
- package/dist/{policy-sections-Bylm31kZ.d.mts → policy-sections-CBWcJv-R.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 +2 -1
- package/dist/policy.mjs +2 -1
- package/dist/presets.d.mts +2 -2
- package/dist/presets.d.ts +2 -2
- package/dist/presets.js +2 -1
- package/dist/presets.mjs +2 -1
- package/dist/ropa.js +2 -1
- package/dist/ropa.mjs +2 -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 +2 -1
- package/dist/unstyled.mjs +2 -1
- package/dist/{useAdaptivePolicyWizard-A1PyOy6P.d.mts → useAdaptivePolicyWizard-BSLyltzZ.d.mts} +1 -1
- package/dist/{useAdaptivePolicyWizard-LVIKhAxw.d.ts → useAdaptivePolicyWizard-CL7C7MTZ.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/index.mjs
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
"use client";
|
|
2
|
+
export{c as PolicyExporter,a as PolicyGenerator,b as PolicyPreview}from'./chunk-DUY6F3GT.mjs';export{a as NDPRDashboard}from'./chunk-RRVKUCFR.mjs';export{a as LawfulBasisTracker}from'./chunk-CISJAQ6W.mjs';export{a as CrossBorderTransferManager}from'./chunk-SYMQJO2W.mjs';export{a as ROPAManager}from'./chunk-VTITKWGX.mjs';export{a as NDPRProvider,b as useNDPRConfig}from'./chunk-74Z23WUA.mjs';import'./chunk-XHROISIF.mjs';export{b as useDefaultPrivacyPolicy,a as usePrivacyPolicy}from'./chunk-2L7BSG7G.mjs';export{a as useLawfulBasis}from'./chunk-E4NCJ7RD.mjs';export{a as useCrossBorderTransfer}from'./chunk-Z6IIMLZU.mjs';export{a as useROPA}from'./chunk-2AW7KAZO.mjs';export{c as DEFAULT_POLICY_SECTIONS,d as DEFAULT_POLICY_VARIABLES,e as createBusinessPolicyTemplate,b as generatePolicyText}from'./chunk-LSCMXAPY.mjs';export{a as getComplianceScore}from'./chunk-ABDB7LEV.mjs';import'./chunk-ZLSWOFAY.mjs';export{c as assessComplianceGaps,d as generateLawfulBasisSummary,b as getLawfulBasisDescription,a as validateProcessingActivity}from'./chunk-TXBZPCGF.mjs';export{h as assessTransferRisk,f as getTransferMechanismDescription,e as isNDPCApprovalRequired,g as validateTransfer}from'./chunk-75TJPK2N.mjs';export{c as exportROPAToCSV,b as generateROPASummary,d as identifyComplianceGaps,a as validateProcessingRecord}from'./chunk-SHMJNRHO.mjs';export{a as ConsentStorage}from'./chunk-IZCWCE7W.mjs';export{a as ConsentManager}from'./chunk-EPT2K355.mjs';export{a as ConsentBanner}from'./chunk-BN77GP4W.mjs';export{c as appendAuditEntry,a as createAuditEntry,b as getAuditLog}from'./chunk-P3PULLYP.mjs';export{a as useConsent}from'./chunk-VWPGIES4.mjs';import'./chunk-R3OYAJI6.mjs';export{a as validateConsent,b as validateConsentOptions}from'./chunk-U62QYKVG.mjs';export{a as DSRDashboard,b as DSRTracker}from'./chunk-5X32J5IA.mjs';export{a as DSRRequestForm}from'./chunk-6HZL2WDU.mjs';export{a as useDSR}from'./chunk-DCJK5OZT.mjs';export{a as formatDSRRequest}from'./chunk-7D2OIPHH.mjs';export{a as DPIAReport,b as StepIndicator}from'./chunk-TCN22KYP.mjs';export{a as DPIAQuestionnaire}from'./chunk-LJNNPAFU.mjs';export{a as useDPIA}from'./chunk-6FGCGLH5.mjs';export{a as assessDPIARisk}from'./chunk-6TA2MVTU.mjs';export{b as BreachNotificationManager,a as BreachRiskAssessment,c as RegulatoryReportGenerator}from'./chunk-WH6ZMUOS.mjs';export{a as BreachReportForm}from'./chunk-KF3EFJEF.mjs';export{a as useBreach}from'./chunk-PATONNTZ.mjs';export{a as calculateBreachSeverity}from'./chunk-DJGS7SSN.mjs';export{a as sanitizeInput}from'./chunk-GKKAK6ES.mjs';export{a as resolveClass}from'./chunk-AYKLAEOU.mjs';import'./chunk-6WIP33TW.mjs';import'./chunk-WWT2ZSNU.mjs';//# sourceMappingURL=index.mjs.map
|
|
2
3
|
//# sourceMappingURL=index.mjs.map
|
package/dist/lawful-basis.js
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';var chunkLSNL4XR5_js=require('./chunk-LSNL4XR5.js'),chunk7AVN424U_js=require('./chunk-7AVN424U.js'),chunkTDDAYVKK_js=require('./chunk-TDDAYVKK.js');require('./chunk-E64TU6IU.js'),require('./chunk-ELKB2AFZ.js'),require('./chunk-MQFZHA2D.js');var react=require('react'),jsxRuntime=require('react/jsx-runtime');var r=react.createContext(null);function x(){let s=react.useContext(r);if(!s)throw new Error("LawfulBasis compound components must be wrapped in <LawfulBasis.Provider>. Example: <LawfulBasis.Provider><LawfulBasis.Tracker /></LawfulBasis.Provider>");return s}var e=({adapter:s,storageKey:t,useLocalStorage:i,initialActivities:u,onAdd:f,onUpdate:p,onRemove:l,children:n})=>{let m=chunk7AVN424U_js.a({adapter:s,storageKey:t,useLocalStorage:i,initialActivities:u,onAdd:f,onUpdate:p,onRemove:l});return jsxRuntime.jsx(r.Provider,{value:m,children:n})};var y={Provider:e,Tracker:chunkLSNL4XR5_js.a};Object.defineProperty(exports,"LawfulBasisTracker",{enumerable:true,get:function(){return chunkLSNL4XR5_js.a}});Object.defineProperty(exports,"useLawfulBasis",{enumerable:true,get:function(){return chunk7AVN424U_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}});exports.LawfulBasis=y;exports.LawfulBasisProvider=e;exports.useLawfulBasisCompound=x;//# sourceMappingURL=lawful-basis.js.map
|
|
2
3
|
//# sourceMappingURL=lawful-basis.js.map
|
package/dist/lawful-basis.mjs
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
"use client";
|
|
2
|
+
import {a}from'./chunk-CISJAQ6W.mjs';export{a as LawfulBasisTracker}from'./chunk-CISJAQ6W.mjs';import {a as a$1}from'./chunk-E4NCJ7RD.mjs';export{a as useLawfulBasis}from'./chunk-E4NCJ7RD.mjs';export{c as assessComplianceGaps,d as generateLawfulBasisSummary,b as getLawfulBasisDescription,a as validateProcessingActivity}from'./chunk-TXBZPCGF.mjs';import'./chunk-AYKLAEOU.mjs';import'./chunk-6WIP33TW.mjs';import'./chunk-WWT2ZSNU.mjs';import {createContext,useContext}from'react';import {jsx}from'react/jsx-runtime';var r=createContext(null);function x(){let s=useContext(r);if(!s)throw new Error("LawfulBasis compound components must be wrapped in <LawfulBasis.Provider>. Example: <LawfulBasis.Provider><LawfulBasis.Tracker /></LawfulBasis.Provider>");return s}var e=({adapter:s,storageKey:t,useLocalStorage:i,initialActivities:u,onAdd:f,onUpdate:p,onRemove:l,children:n})=>{let m=a$1({adapter:s,storageKey:t,useLocalStorage:i,initialActivities:u,onAdd:f,onUpdate:p,onRemove:l});return jsx(r.Provider,{value:m,children:n})};var y={Provider:e,Tracker:a};export{y as LawfulBasis,e as LawfulBasisProvider,x as useLawfulBasisCompound};//# sourceMappingURL=lawful-basis.mjs.map
|
|
2
3
|
//# sourceMappingURL=lawful-basis.mjs.map
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { N as NDPRLocale, d as defaultLocale } from './sanitize-CxxwKxAx.mjs';
|
|
2
|
+
|
|
3
|
+
declare const yorubaLocale: Required<{
|
|
4
|
+
[K in keyof NDPRLocale]: Required<NonNullable<NDPRLocale[K]>>;
|
|
5
|
+
}>;
|
|
6
|
+
|
|
7
|
+
declare const igboLocale: Required<{
|
|
8
|
+
[K in keyof NDPRLocale]: Required<NonNullable<NDPRLocale[K]>>;
|
|
9
|
+
}>;
|
|
10
|
+
|
|
11
|
+
declare const hausaLocale: Required<{
|
|
12
|
+
[K in keyof NDPRLocale]: Required<NonNullable<NDPRLocale[K]>>;
|
|
13
|
+
}>;
|
|
14
|
+
|
|
15
|
+
declare const pidginLocale: Required<{
|
|
16
|
+
[K in keyof NDPRLocale]: Required<NonNullable<NDPRLocale[K]>>;
|
|
17
|
+
}>;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Deep merges a partial locale with the default English locale.
|
|
21
|
+
* Any missing keys fall back to English.
|
|
22
|
+
*/
|
|
23
|
+
declare function mergeLocale(partial?: NDPRLocale): typeof defaultLocale;
|
|
24
|
+
|
|
25
|
+
export { hausaLocale as h, igboLocale as i, mergeLocale as m, pidginLocale as p, yorubaLocale as y };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { N as NDPRLocale, d as defaultLocale } from './sanitize-CxxwKxAx.js';
|
|
2
|
+
|
|
3
|
+
declare const yorubaLocale: Required<{
|
|
4
|
+
[K in keyof NDPRLocale]: Required<NonNullable<NDPRLocale[K]>>;
|
|
5
|
+
}>;
|
|
6
|
+
|
|
7
|
+
declare const igboLocale: Required<{
|
|
8
|
+
[K in keyof NDPRLocale]: Required<NonNullable<NDPRLocale[K]>>;
|
|
9
|
+
}>;
|
|
10
|
+
|
|
11
|
+
declare const hausaLocale: Required<{
|
|
12
|
+
[K in keyof NDPRLocale]: Required<NonNullable<NDPRLocale[K]>>;
|
|
13
|
+
}>;
|
|
14
|
+
|
|
15
|
+
declare const pidginLocale: Required<{
|
|
16
|
+
[K in keyof NDPRLocale]: Required<NonNullable<NDPRLocale[K]>>;
|
|
17
|
+
}>;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Deep merges a partial locale with the default English locale.
|
|
21
|
+
* Any missing keys fall back to English.
|
|
22
|
+
*/
|
|
23
|
+
declare function mergeLocale(partial?: NDPRLocale): typeof defaultLocale;
|
|
24
|
+
|
|
25
|
+
export { hausaLocale as h, igboLocale as i, mergeLocale as m, pidginLocale as p, yorubaLocale as y };
|
|
@@ -138,6 +138,26 @@ interface HTMLExportOptions {
|
|
|
138
138
|
includeStyles?: boolean;
|
|
139
139
|
includePrintCSS?: boolean;
|
|
140
140
|
customCSS?: string;
|
|
141
|
+
/**
|
|
142
|
+
* Theme controlling the embedded design tokens.
|
|
143
|
+
*
|
|
144
|
+
* - `'light'` (default): emits the light token palette only. No
|
|
145
|
+
* `prefers-color-scheme: dark` block is included, so a visitor's OS
|
|
146
|
+
* dark-mode setting will NOT recolour the policy. This is the right
|
|
147
|
+
* default for an embedded compliance widget — most consumer host sites
|
|
148
|
+
* are single-theme and Shadow DOM does not isolate `prefers-color-scheme`.
|
|
149
|
+
* - `'dark'`: emits the dark token palette as the primary style.
|
|
150
|
+
* - `'auto'`: emits light tokens plus a `@media (prefers-color-scheme: dark)`
|
|
151
|
+
* block that swaps to dark on the user's OS preference. Use this when
|
|
152
|
+
* your host site genuinely follows OS dark mode and you want the policy
|
|
153
|
+
* to match.
|
|
154
|
+
*
|
|
155
|
+
* Pre-3.4.1 the export effectively behaved like `'auto'` unconditionally,
|
|
156
|
+
* which leaked dark colours into light-only host sites via Shadow DOM.
|
|
157
|
+
*
|
|
158
|
+
* @default 'light'
|
|
159
|
+
*/
|
|
160
|
+
theme?: 'light' | 'dark' | 'auto';
|
|
141
161
|
}
|
|
142
162
|
/**
|
|
143
163
|
* Comprehensive set of 16 data categories spanning identity, financial,
|
|
@@ -151,4 +171,4 @@ declare const DEFAULT_DATA_CATEGORIES: DataCategory[];
|
|
|
151
171
|
*/
|
|
152
172
|
declare function createDefaultContext(): TemplateContext;
|
|
153
173
|
|
|
154
|
-
export { type ComplianceGap as C, type
|
|
174
|
+
export { type ComplianceGap as C, type DataCategory as D, type HTMLExportOptions as H, type Industry as I, type OrgSize as O, type PolicyDraft as P, type TemplateContext as T, type ComplianceResult as a, type CustomSection as b, type ThirdPartyProcessor as c, createDefaultContext as d, DEFAULT_DATA_CATEGORIES as e, type DOCXExportOptions as f, type PDFExportOptions as g, type ProcessingPurpose as h };
|
|
@@ -138,6 +138,26 @@ interface HTMLExportOptions {
|
|
|
138
138
|
includeStyles?: boolean;
|
|
139
139
|
includePrintCSS?: boolean;
|
|
140
140
|
customCSS?: string;
|
|
141
|
+
/**
|
|
142
|
+
* Theme controlling the embedded design tokens.
|
|
143
|
+
*
|
|
144
|
+
* - `'light'` (default): emits the light token palette only. No
|
|
145
|
+
* `prefers-color-scheme: dark` block is included, so a visitor's OS
|
|
146
|
+
* dark-mode setting will NOT recolour the policy. This is the right
|
|
147
|
+
* default for an embedded compliance widget — most consumer host sites
|
|
148
|
+
* are single-theme and Shadow DOM does not isolate `prefers-color-scheme`.
|
|
149
|
+
* - `'dark'`: emits the dark token palette as the primary style.
|
|
150
|
+
* - `'auto'`: emits light tokens plus a `@media (prefers-color-scheme: dark)`
|
|
151
|
+
* block that swaps to dark on the user's OS preference. Use this when
|
|
152
|
+
* your host site genuinely follows OS dark mode and you want the policy
|
|
153
|
+
* to match.
|
|
154
|
+
*
|
|
155
|
+
* Pre-3.4.1 the export effectively behaved like `'auto'` unconditionally,
|
|
156
|
+
* which leaked dark colours into light-only host sites via Shadow DOM.
|
|
157
|
+
*
|
|
158
|
+
* @default 'light'
|
|
159
|
+
*/
|
|
160
|
+
theme?: 'light' | 'dark' | 'auto';
|
|
141
161
|
}
|
|
142
162
|
/**
|
|
143
163
|
* Comprehensive set of 16 data categories spanning identity, financial,
|
|
@@ -151,4 +171,4 @@ declare const DEFAULT_DATA_CATEGORIES: DataCategory[];
|
|
|
151
171
|
*/
|
|
152
172
|
declare function createDefaultContext(): TemplateContext;
|
|
153
173
|
|
|
154
|
-
export { type ComplianceGap as C, type
|
|
174
|
+
export { type ComplianceGap as C, type DataCategory as D, type HTMLExportOptions as H, type Industry as I, type OrgSize as O, type PolicyDraft as P, type TemplateContext as T, type ComplianceResult as a, type CustomSection as b, type ThirdPartyProcessor as c, createDefaultContext as d, DEFAULT_DATA_CATEGORIES as e, type DOCXExportOptions as f, type PDFExportOptions as g, type ProcessingPurpose as h };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { c as PrivacyPolicy, P as PolicySection } from './privacy-Ca6te9Ir.js';
|
|
2
|
-
import { T as TemplateContext,
|
|
2
|
+
import { T as TemplateContext, a as ComplianceResult } from './policy-engine-DzPxskOK.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* NDPA policy compliance checker.
|
|
@@ -40,6 +40,8 @@ declare function evaluatePolicyCompliance(policy: PrivacyPolicy, context: Templa
|
|
|
40
40
|
* interface from `types/privacy.ts`.
|
|
41
41
|
*/
|
|
42
42
|
|
|
43
|
+
declare const UNFILLED_PREFIX = "\u00ABTODO: ";
|
|
44
|
+
declare const UNFILLED_SUFFIX = "\u00BB";
|
|
43
45
|
/**
|
|
44
46
|
* Assembles an ordered array of privacy policy sections based on the
|
|
45
47
|
* provided template context. Core sections are always included; conditional
|
|
@@ -51,4 +53,4 @@ declare function evaluatePolicyCompliance(policy: PrivacyPolicy, context: Templa
|
|
|
51
53
|
*/
|
|
52
54
|
declare function assemblePolicy(context: TemplateContext): PolicySection[];
|
|
53
55
|
|
|
54
|
-
export { assemblePolicy as a, evaluatePolicyCompliance as e };
|
|
56
|
+
export { UNFILLED_PREFIX as U, assemblePolicy as a, UNFILLED_SUFFIX as b, evaluatePolicyCompliance as e };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { c as PrivacyPolicy, P as PolicySection } from './privacy-Ca6te9Ir.mjs';
|
|
2
|
-
import { T as TemplateContext,
|
|
2
|
+
import { T as TemplateContext, a as ComplianceResult } from './policy-engine-5qTfp2z4.mjs';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* NDPA policy compliance checker.
|
|
@@ -40,6 +40,8 @@ declare function evaluatePolicyCompliance(policy: PrivacyPolicy, context: Templa
|
|
|
40
40
|
* interface from `types/privacy.ts`.
|
|
41
41
|
*/
|
|
42
42
|
|
|
43
|
+
declare const UNFILLED_PREFIX = "\u00ABTODO: ";
|
|
44
|
+
declare const UNFILLED_SUFFIX = "\u00BB";
|
|
43
45
|
/**
|
|
44
46
|
* Assembles an ordered array of privacy policy sections based on the
|
|
45
47
|
* provided template context. Core sections are always included; conditional
|
|
@@ -51,4 +53,4 @@ declare function evaluatePolicyCompliance(policy: PrivacyPolicy, context: Templa
|
|
|
51
53
|
*/
|
|
52
54
|
declare function assemblePolicy(context: TemplateContext): PolicySection[];
|
|
53
55
|
|
|
54
|
-
export { assemblePolicy as a, evaluatePolicyCompliance as e };
|
|
56
|
+
export { UNFILLED_PREFIX as U, assemblePolicy as a, UNFILLED_SUFFIX as b, evaluatePolicyCompliance as e };
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import { P as PolicySection, O as OrganizationInfo, b as PolicyVariable } from './privacy-Ca6te9Ir.js';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Scans rendered policy text for unfilled tokens. Returns the list of field
|
|
5
|
+
* names that were left unfilled (deduplicated). Use in CI to assert a
|
|
6
|
+
* canonical org-info fixture renders cleanly, or at runtime to surface
|
|
7
|
+
* "policy is missing X" errors before publishing.
|
|
8
|
+
*/
|
|
9
|
+
declare function findUnfilledTokens(rendered: string): string[];
|
|
3
10
|
/**
|
|
4
11
|
* Generates policy text by replacing variables in a template with organization-specific values
|
|
5
12
|
* @param sectionsOrTemplate The policy sections or template string to generate text for
|
|
@@ -33,4 +40,4 @@ declare function createBusinessPolicyTemplate(): {
|
|
|
33
40
|
variables: PolicyVariable[];
|
|
34
41
|
};
|
|
35
42
|
|
|
36
|
-
export { DEFAULT_POLICY_SECTIONS as D, DEFAULT_POLICY_VARIABLES as a, createBusinessPolicyTemplate as c, generatePolicyText as g };
|
|
43
|
+
export { DEFAULT_POLICY_SECTIONS as D, DEFAULT_POLICY_VARIABLES as a, createBusinessPolicyTemplate as c, findUnfilledTokens as f, generatePolicyText as g };
|
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import { P as PolicySection, O as OrganizationInfo, b as PolicyVariable } from './privacy-Ca6te9Ir.mjs';
|
|
2
2
|
|
|
3
|
+
/**
|
|
4
|
+
* Scans rendered policy text for unfilled tokens. Returns the list of field
|
|
5
|
+
* names that were left unfilled (deduplicated). Use in CI to assert a
|
|
6
|
+
* canonical org-info fixture renders cleanly, or at runtime to surface
|
|
7
|
+
* "policy is missing X" errors before publishing.
|
|
8
|
+
*/
|
|
9
|
+
declare function findUnfilledTokens(rendered: string): string[];
|
|
3
10
|
/**
|
|
4
11
|
* Generates policy text by replacing variables in a template with organization-specific values
|
|
5
12
|
* @param sectionsOrTemplate The policy sections or template string to generate text for
|
|
@@ -33,4 +40,4 @@ declare function createBusinessPolicyTemplate(): {
|
|
|
33
40
|
variables: PolicyVariable[];
|
|
34
41
|
};
|
|
35
42
|
|
|
36
|
-
export { DEFAULT_POLICY_SECTIONS as D, DEFAULT_POLICY_VARIABLES as a, createBusinessPolicyTemplate as c, generatePolicyText as g };
|
|
43
|
+
export { DEFAULT_POLICY_SECTIONS as D, DEFAULT_POLICY_VARIABLES as a, createBusinessPolicyTemplate as c, findUnfilledTokens as f, generatePolicyText as g };
|
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-5qTfp2z4.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-5qTfp2z4.mjs';
|
|
13
|
+
export { U as UseAdaptivePolicyWizardOptions, a as UseAdaptivePolicyWizardReturn, u as useAdaptivePolicyWizard } from './useAdaptivePolicyWizard-BSLyltzZ.mjs';
|
|
14
|
+
export { a as assemblePolicy, e as evaluatePolicyCompliance } from './policy-sections-CBWcJv-R.mjs';
|
|
15
|
+
export { e as exportDOCX, a as exportHTML, b as exportMarkdown, c as exportPDF } from './docx-4n8g4zul.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-DzPxskOK.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-DzPxskOK.js';
|
|
13
|
+
export { U as UseAdaptivePolicyWizardOptions, a as UseAdaptivePolicyWizardReturn, u as useAdaptivePolicyWizard } from './useAdaptivePolicyWizard-CL7C7MTZ.js';
|
|
14
|
+
export { a as assemblePolicy, e as evaluatePolicyCompliance } from './policy-sections-9tCb7VU7.js';
|
|
15
|
+
export { e as exportDOCX, a as exportHTML, b as exportMarkdown, c as exportPDF } from './docx-VvcTLYZM.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,3 @@
|
|
|
1
|
-
|
|
1
|
+
"use client";
|
|
2
|
+
'use strict';var chunkASLMPY54_js=require('./chunk-ASLMPY54.js'),chunkHQSU7LGM_js=require('./chunk-HQSU7LGM.js'),chunk4BOEFDDE_js=require('./chunk-4BOEFDDE.js'),chunkUHTJ6UFW_js=require('./chunk-UHTJ6UFW.js'),chunkZ73T6MWY_js=require('./chunk-Z73T6MWY.js'),chunkYPKUHSK4_js=require('./chunk-YPKUHSK4.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=chunkUHTJ6UFW_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=chunkZ73T6MWY_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=chunkZ73T6MWY_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 chunkASLMPY54_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 chunk4BOEFDDE_js.a}});Object.defineProperty(exports,"useDefaultPrivacyPolicy",{enumerable:true,get:function(){return chunkUHTJ6UFW_js.b}});Object.defineProperty(exports,"usePrivacyPolicy",{enumerable:true,get:function(){return chunkUHTJ6UFW_js.a}});Object.defineProperty(exports,"exportDOCX",{enumerable:true,get:function(){return chunkZ73T6MWY_js.d}});Object.defineProperty(exports,"exportHTML",{enumerable:true,get:function(){return chunkZ73T6MWY_js.a}});Object.defineProperty(exports,"exportMarkdown",{enumerable:true,get:function(){return chunkZ73T6MWY_js.b}});Object.defineProperty(exports,"exportPDF",{enumerable:true,get:function(){return chunkZ73T6MWY_js.c}});Object.defineProperty(exports,"DEFAULT_DATA_CATEGORIES",{enumerable:true,get:function(){return chunkYPKUHSK4_js.a}});Object.defineProperty(exports,"createDefaultContext",{enumerable:true,get:function(){return chunkYPKUHSK4_js.b}});Object.defineProperty(exports,"evaluatePolicyCompliance",{enumerable:true,get:function(){return chunkYPKUHSK4_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
3
|
//# sourceMappingURL=policy.js.map
|
package/dist/policy.mjs
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
"use client";
|
|
2
|
+
export{a as AdaptivePolicyWizard}from'./chunk-NFJ4CB63.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-MLOWRZXO.mjs';import {a as a$1}from'./chunk-2L7BSG7G.mjs';export{b as useDefaultPrivacyPolicy,a as usePrivacyPolicy}from'./chunk-2L7BSG7G.mjs';import {a as a$3}from'./chunk-JFFOPHU3.mjs';export{d as exportDOCX,a as exportHTML,b as exportMarkdown,c as exportPDF}from'./chunk-JFFOPHU3.mjs';export{a as DEFAULT_DATA_CATEGORIES,b as createDefaultContext,c as evaluatePolicyCompliance}from'./chunk-I557S566.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
3
|
//# 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-5qTfp2z4.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-DzPxskOK.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';
|