@tantainnovative/ndpr-toolkit 4.0.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/CHANGELOG.md +123 -0
  2. package/dist/chunk-4FXRJH37.js +1 -0
  3. package/dist/{chunk-3XU6FL2I.js → chunk-6YFPDGNB.js} +1 -1
  4. package/dist/{chunk-WMISQDSV.js → chunk-ASEUTU45.js} +1 -1
  5. package/dist/chunk-BRJKIF7E.mjs +1 -0
  6. package/dist/{chunk-XYGGUGTO.js → chunk-CSE36REY.js} +4 -4
  7. package/dist/chunk-DKLJ5DYN.js +1 -0
  8. package/dist/chunk-FRMVSG4N.mjs +1 -0
  9. package/dist/chunk-MAD7QYRK.js +1 -0
  10. package/dist/chunk-NBOJ2KGN.mjs +1 -0
  11. package/dist/chunk-PQ5IPUJN.mjs +1 -0
  12. package/dist/{chunk-BGV2AKT7.mjs → chunk-PSPYIRIF.mjs} +1 -1
  13. package/dist/chunk-QKXGVT2Q.js +1 -0
  14. package/dist/chunk-R2ZZMATR.js +1 -0
  15. package/dist/chunk-R3ZKV2J7.mjs +1 -0
  16. package/dist/chunk-RRVML7CU.mjs +1 -0
  17. package/dist/{chunk-NB6SKG76.mjs → chunk-SBSYHCPK.mjs} +1 -1
  18. package/dist/chunk-TLIHFGIJ.js +1 -0
  19. package/dist/{chunk-5F2IAUWJ.js → chunk-TVA6D6S4.js} +1 -1
  20. package/dist/{chunk-42JPSNVV.mjs → chunk-WPH6CJDL.mjs} +4 -4
  21. package/dist/{chunk-GUERZD4O.mjs → chunk-ZSRO4L3C.mjs} +1 -1
  22. package/dist/consent.d.mts +59 -19
  23. package/dist/consent.d.ts +59 -19
  24. package/dist/consent.js +1 -1
  25. package/dist/consent.mjs +1 -1
  26. package/dist/core.d.mts +124 -69
  27. package/dist/core.d.ts +124 -69
  28. package/dist/core.js +1 -1
  29. package/dist/core.mjs +1 -1
  30. package/dist/cross-border.d.mts +7 -6
  31. package/dist/cross-border.d.ts +7 -6
  32. package/dist/cross-border.js +1 -1
  33. package/dist/cross-border.mjs +1 -1
  34. package/dist/dsr.d.mts +86 -54
  35. package/dist/dsr.d.ts +86 -54
  36. package/dist/dsr.js +1 -1
  37. package/dist/dsr.mjs +1 -1
  38. package/dist/headless.d.mts +23 -9
  39. package/dist/headless.d.ts +23 -9
  40. package/dist/headless.js +1 -1
  41. package/dist/headless.mjs +1 -1
  42. package/dist/hooks.d.mts +23 -9
  43. package/dist/hooks.d.ts +23 -9
  44. package/dist/hooks.js +1 -1
  45. package/dist/hooks.mjs +1 -1
  46. package/dist/index.d.mts +144 -95
  47. package/dist/index.d.ts +144 -95
  48. package/dist/index.js +1 -1
  49. package/dist/index.mjs +1 -1
  50. package/dist/lawful-basis.d.mts +6 -6
  51. package/dist/lawful-basis.d.ts +6 -6
  52. package/dist/lawful-basis.js +1 -1
  53. package/dist/lawful-basis.mjs +1 -1
  54. package/dist/presets.d.mts +87 -2
  55. package/dist/presets.d.ts +87 -2
  56. package/dist/presets.js +1 -1
  57. package/dist/presets.mjs +1 -1
  58. package/dist/ropa-lite.d.mts +4 -1
  59. package/dist/ropa-lite.d.ts +4 -1
  60. package/dist/ropa-lite.js +1 -1
  61. package/dist/ropa-lite.mjs +1 -1
  62. package/dist/ropa.d.mts +16 -16
  63. package/dist/ropa.d.ts +16 -16
  64. package/dist/ropa.js +1 -1
  65. package/dist/ropa.mjs +1 -1
  66. package/dist/server.d.mts +123 -68
  67. package/dist/server.d.ts +123 -68
  68. package/dist/server.js +1 -1
  69. package/dist/server.mjs +1 -1
  70. package/dist/styles.css +18 -16
  71. package/package.json +1 -1
  72. package/dist/chunk-7FXNGGMO.js +0 -1
  73. package/dist/chunk-B46SJB5V.js +0 -1
  74. package/dist/chunk-BL5W472Q.js +0 -1
  75. package/dist/chunk-HOAC5VUF.js +0 -1
  76. package/dist/chunk-IHNAFXDM.mjs +0 -1
  77. package/dist/chunk-O2WEABB3.js +0 -1
  78. package/dist/chunk-OZHUINWS.js +0 -1
  79. package/dist/chunk-PJNKQPQP.mjs +0 -1
  80. package/dist/chunk-RBKFNCGO.mjs +0 -1
  81. package/dist/chunk-VPNK7OID.mjs +0 -1
  82. package/dist/chunk-WKUC65HL.mjs +0 -1
  83. package/dist/chunk-Z2M5VJX2.mjs +0 -1
package/dist/index.d.ts CHANGED
@@ -1329,17 +1329,18 @@ export declare interface CrossBorderTransferManagerProps {
1329
1329
  */
1330
1330
  transfers: CrossBorderTransfer[];
1331
1331
  /**
1332
- * Callback when a new transfer is added
1332
+ * Callback when a new transfer is added.
1333
1333
  */
1334
- onAddTransfer?: (transfer: Omit<CrossBorderTransfer, 'id' | 'createdAt' | 'updatedAt'>) => void;
1334
+ onAdd?: (transfer: Omit<CrossBorderTransfer, 'id' | 'createdAt' | 'updatedAt'>) => void;
1335
1335
  /**
1336
- * Callback when a transfer is updated
1336
+ * Callback when a transfer is updated.
1337
1337
  */
1338
- onUpdateTransfer?: (id: string, updates: Partial<CrossBorderTransfer>) => void;
1338
+ onUpdate?: (id: string, updates: Partial<CrossBorderTransfer>) => void;
1339
1339
  /**
1340
- * Callback when a transfer is removed
1340
+ * Callback when a transfer is archived. NDPA preference is soft-delete
1341
+ * over hard-delete; consumers should treat this as an archive signal.
1341
1342
  */
1342
- onRemoveTransfer?: (id: string) => void;
1343
+ onArchive?: (id: string) => void;
1343
1344
  /**
1344
1345
  * Compliance summary data
1345
1346
  */
@@ -2077,7 +2078,7 @@ export declare type DSRStatus = 'pending' | 'awaitingVerification' | 'inProgress
2077
2078
  /**
2078
2079
  * Validated DSR submission shape — matches what `<DSRRequestForm onSubmit>`
2079
2080
  * emits client-side. Use this as the typed parameter for your server-side
2080
- * handler after `validateDsrSubmission` returns `valid: true`.
2081
+ * handler after `validateDsrSubmissionStructured` returns `valid: true`.
2081
2082
  */
2082
2083
  export declare interface DsrSubmissionPayload {
2083
2084
  requestType: string;
@@ -2092,16 +2093,6 @@ export declare interface DsrSubmissionPayload {
2092
2093
  submittedAt: number;
2093
2094
  }
2094
2095
 
2095
- /** Result of validating a raw DSR submission payload. */
2096
- export declare interface DsrSubmissionValidationResult {
2097
- /** True when the payload conforms to the DSR submission contract. */
2098
- valid: boolean;
2099
- /** Field-keyed error messages. Empty when `valid` is true. */
2100
- errors: Record<string, string>;
2101
- /** The narrowed, typed payload — only populated when `valid` is true. */
2102
- data?: DsrSubmissionPayload;
2103
- }
2104
-
2105
2096
  /**
2106
2097
  * DSR tracking and analytics component. Supports compliance with NDPA Part IV,
2107
2098
  * providing summary statistics, deadline tracking, and compliance metrics for data subject requests.
@@ -2216,15 +2207,29 @@ export declare type EffortLevel = 'low' | 'medium' | 'high';
2216
2207
  export declare function exportROPAToCSV(ropa: RecordOfProcessingActivities): string;
2217
2208
 
2218
2209
  /**
2219
- * Formats a DSR request for display or submission
2220
- * @param request The DSR request to format
2221
- * @returns Formatted request data
2210
+ * Format a DSR request for display or submission. Returns the formatted
2211
+ * payload plus a typed `errors` array of `{ field, code, message }` for any
2212
+ * required fields missing from the source request.
2213
+ *
2214
+ * Codes emitted:
2215
+ * - `request_id_required`
2216
+ * - `request_type_required`
2217
+ * - `request_status_required`
2218
+ * - `created_at_required`
2219
+ * - `subject_name_required`
2220
+ * - `subject_email_required`
2222
2221
  */
2223
- export declare function formatDSRRequest(request: DSRRequest): {
2222
+ export declare function formatDSRRequestStructured(request: DSRRequest): FormatDSRRequestStructuredResult;
2223
+
2224
+ /** Result of {@link formatDSRRequestStructured}. */
2225
+ export declare interface FormatDSRRequestStructuredResult {
2226
+ valid: boolean;
2227
+ errors: StructuredValidationError[];
2228
+ /** Formatted request payload — always populated regardless of `valid`. */
2224
2229
  formattedRequest: Record<string, unknown>;
2225
- isValid: boolean;
2226
- validationErrors: string[];
2227
- };
2230
+ /** Narrowed input — populated only on `valid: true`. */
2231
+ data?: DSRRequest;
2232
+ }
2228
2233
 
2229
2234
  /**
2230
2235
  * Generates a summary of all lawful basis documentation across processing activities.
@@ -2417,17 +2422,17 @@ export declare interface LawfulBasisTrackerProps {
2417
2422
  */
2418
2423
  activities: ProcessingActivity[];
2419
2424
  /**
2420
- * Callback when a new activity is created
2425
+ * Callback when a new activity is created.
2421
2426
  */
2422
- onAddActivity?: (activity: Omit<ProcessingActivity, 'id' | 'createdAt' | 'updatedAt'>) => void;
2427
+ onAdd?: (activity: Omit<ProcessingActivity, 'id' | 'createdAt' | 'updatedAt'>) => void;
2423
2428
  /**
2424
- * Callback when an activity is updated
2429
+ * Callback when an activity is updated.
2425
2430
  */
2426
- onUpdateActivity?: (id: string, updates: Partial<ProcessingActivity>) => void;
2431
+ onUpdate?: (id: string, updates: Partial<ProcessingActivity>) => void;
2427
2432
  /**
2428
- * Callback when an activity is archived
2433
+ * Callback when an activity is archived.
2429
2434
  */
2430
- onArchiveActivity?: (id: string) => void;
2435
+ onArchive?: (id: string) => void;
2431
2436
  /**
2432
2437
  * Title displayed on the tracker
2433
2438
  * @default "Lawful Basis Tracker"
@@ -3924,17 +3929,17 @@ export declare interface ROPAManagerProps {
3924
3929
  */
3925
3930
  ropa: RecordOfProcessingActivities;
3926
3931
  /**
3927
- * Callback when a new record is added
3932
+ * Callback when a new record is added.
3928
3933
  */
3929
- onAddRecord?: (record: ProcessingRecord) => void;
3934
+ onAdd?: (record: ProcessingRecord) => void;
3930
3935
  /**
3931
- * Callback when a record is updated
3936
+ * Callback when a record is updated.
3932
3937
  */
3933
- onUpdateRecord?: (id: string, updates: Partial<ProcessingRecord>) => void;
3938
+ onUpdate?: (id: string, updates: Partial<ProcessingRecord>) => void;
3934
3939
  /**
3935
- * Callback when a record is archived
3940
+ * Callback when a record is archived.
3936
3941
  */
3937
- onArchiveRecord?: (id: string) => void;
3942
+ onArchive?: (id: string) => void;
3938
3943
  /**
3939
3944
  * Title displayed on the manager
3940
3945
  * @default "Record of Processing Activities (ROPA)"
@@ -4117,6 +4122,30 @@ export declare interface StorageAdapter<T = unknown> {
4117
4122
  remove(): void | Promise<void>;
4118
4123
  }
4119
4124
 
4125
+ /**
4126
+ * Single structured validation error with a stable, locale-independent
4127
+ * `code` consumers can switch on programmatically.
4128
+ */
4129
+ export declare interface StructuredValidationError {
4130
+ /** Dot-path of the offending field (e.g. `'timestamp'`, `'dataSubject.email'`, `'options[0].purpose'`). */
4131
+ field: string;
4132
+ /** Stable, snake_case error code — safe to switch on across locales. */
4133
+ code: string;
4134
+ /** Human-readable English message — informational only; do not regex-match. */
4135
+ message: string;
4136
+ }
4137
+
4138
+ /**
4139
+ * Result of a structured validator. `errors` is an array (one entry per
4140
+ * failed rule). `data` is the narrowed, typed payload, only populated on
4141
+ * `valid: true`.
4142
+ */
4143
+ export declare interface StructuredValidationResult<T> {
4144
+ valid: boolean;
4145
+ errors: StructuredValidationError[];
4146
+ data?: T;
4147
+ }
4148
+
4120
4149
  /** Full context used to generate an adaptive privacy policy. */
4121
4150
  declare interface TemplateContext {
4122
4151
  /** Organisation details, extended with industry and size. */
@@ -4544,9 +4573,10 @@ declare interface UseConsentReturn {
4544
4573
  */
4545
4574
  isValid: boolean;
4546
4575
  /**
4547
- * Validation errors (if any)
4576
+ * Validation errors (if any). Each entry is a structured `{ field, code,
4577
+ * message }` so consumers can switch on `code` across locales.
4548
4578
  */
4549
- validationErrors: string[];
4579
+ validationErrors: StructuredValidationError[];
4550
4580
  /**
4551
4581
  * Reset consent settings (clear from storage)
4552
4582
  */
@@ -5221,7 +5251,7 @@ declare interface UsePrivacyPolicyReturn {
5221
5251
  * }
5222
5252
  * ```
5223
5253
  */
5224
- export declare function useROPA({ initialData, adapter, onRecordAdd, onRecordUpdate, onRecordArchive, }: UseROPAOptions): UseROPAReturn;
5254
+ export declare function useROPA({ initialData, adapter, onAdd, onUpdate, onArchive, }: UseROPAOptions): UseROPAReturn;
5225
5255
 
5226
5256
  export declare interface UseROPAOptions {
5227
5257
  /**
@@ -5235,17 +5265,17 @@ export declare interface UseROPAOptions {
5235
5265
  */
5236
5266
  adapter?: StorageAdapter<RecordOfProcessingActivities>;
5237
5267
  /**
5238
- * Callback when a record is added
5268
+ * Callback when a record is added.
5239
5269
  */
5240
- onRecordAdd?: (record: ProcessingRecord) => void;
5270
+ onAdd?: (record: ProcessingRecord) => void;
5241
5271
  /**
5242
- * Callback when a record is updated
5272
+ * Callback when a record is updated.
5243
5273
  */
5244
- onRecordUpdate?: (id: string, updates: Partial<ProcessingRecord>) => void;
5274
+ onUpdate?: (id: string, updates: Partial<ProcessingRecord>) => void;
5245
5275
  /**
5246
- * Callback when a record is archived
5276
+ * Callback when a record is archived.
5247
5277
  */
5248
- onRecordArchive?: (id: string) => void;
5278
+ onArchive?: (id: string) => void;
5249
5279
  }
5250
5280
 
5251
5281
  export declare interface UseROPAReturn {
@@ -5309,66 +5339,43 @@ export declare interface UseROPAReturn {
5309
5339
  }
5310
5340
 
5311
5341
  /**
5312
- * Validates consent settings to ensure they meet NDPA requirements
5313
- * @param settings The consent settings to validate
5314
- * @returns An object containing validation result and any error messages
5315
- */
5316
- export declare function validateConsent(settings: ConsentSettings): {
5317
- valid: boolean;
5318
- errors: string[];
5319
- };
5320
-
5321
- /**
5322
- * Validates that consent options meet NDPA Section 26 requirements.
5323
- * Each consent option must specify a purpose for which data will be processed,
5324
- * as consent must be specific and informed per the Nigeria Data Protection Act.
5325
- * @param options The consent options to validate
5326
- * @returns An object containing validation result and any error messages
5342
+ * Validates consent options against NDPA Section 26 requirements. Each option
5343
+ * is checked for a non-empty `purpose`. Failing options are reported with
5344
+ * `field: 'options[i].purpose'` so consumers can map errors back to the
5345
+ * originating option index.
5346
+ *
5347
+ * Codes emitted:
5348
+ * - `options_required` — empty / missing options array
5349
+ * - `purpose_required` — single option missing a purpose
5327
5350
  */
5328
- export declare function validateConsentOptions(options: ConsentOption[]): {
5329
- valid: boolean;
5330
- errors: string[];
5331
- };
5351
+ export declare function validateConsentOptionsStructured(options: ConsentOption[]): StructuredValidationResult<ConsentOption[]>;
5332
5352
 
5333
5353
  /**
5334
- * Validate a raw DSR submission payload against the same rules
5335
- * `<DSRRequestForm />` enforces client-side. Designed to be called from a
5336
- * server-side handler (Next.js Route Handler, NestJS controller, Express
5337
- * middleware, Cloudflare Worker) so client and server stay in sync without
5338
- * the consumer hand-rolling zod / class-validator schemas.
5354
+ * Validates consent settings against NDPA requirements. Returns structured
5355
+ * `{ field, code, message }[]` errors so consumers can switch on `code`
5356
+ * across locales without regex-matching English strings.
5339
5357
  *
5340
- * Defensive — accepts `unknown` and narrows. Safe to call directly on
5341
- * `await request.json()`.
5358
+ * Codes emitted:
5359
+ * - `consents_required`
5360
+ * - `timestamp_required`
5361
+ * - `timestamp_invalid`
5362
+ * - `version_required`
5363
+ * - `method_required`
5364
+ * - `has_interacted_required`
5365
+ * - `consent_stale`
5342
5366
  *
5343
- * @example **Next.js Route Handler**
5367
+ * @example
5344
5368
  * ```ts
5345
- * // app/api/dsr/route.ts
5346
- * import { validateDsrSubmission } from '@tantainnovative/ndpr-toolkit/server';
5347
- *
5348
- * export async function POST(req: Request) {
5349
- * const { valid, errors, data } = validateDsrSubmission(await req.json());
5350
- * if (!valid) return Response.json({ errors }, { status: 422 });
5351
- * // `data` is the typed DsrSubmissionPayload
5352
- * await dsrStore.create(data);
5353
- * return Response.json({ ok: true }, { status: 201 });
5369
+ * const { valid, errors, data } = validateConsentStructured(settings);
5370
+ * if (!valid) {
5371
+ * const stale = errors.find((e) => e.code === 'consent_stale');
5372
+ * if (stale) showRefreshBanner();
5354
5373
  * }
5355
5374
  * ```
5356
- *
5357
- * @example **Lock to specific request types**
5358
- * ```ts
5359
- * validateDsrSubmission(payload, {
5360
- * allowedRequestTypes: ['access', 'erasure', 'rectification'],
5361
- * });
5362
- * ```
5363
- *
5364
- * @example **Skip identity verification (e.g. authenticated session)**
5365
- * ```ts
5366
- * validateDsrSubmission(payload, { requireIdentityVerification: false });
5367
- * ```
5368
5375
  */
5369
- export declare function validateDsrSubmission(payload: unknown, options?: ValidateDsrSubmissionOptions): DsrSubmissionValidationResult;
5376
+ export declare function validateConsentStructured(settings: ConsentSettings): StructuredValidationResult<ConsentSettings>;
5370
5377
 
5371
- /** Options for {@link validateDsrSubmission}. */
5378
+ /** Options for {@link validateDsrSubmissionStructured}. */
5372
5379
  export declare interface ValidateDsrSubmissionOptions {
5373
5380
  /**
5374
5381
  * Whether the data subject is required to provide an identifier
@@ -5385,6 +5392,48 @@ export declare interface ValidateDsrSubmissionOptions {
5385
5392
  allowedRequestTypes?: string[];
5386
5393
  }
5387
5394
 
5395
+ /**
5396
+ * Validate a raw DSR submission payload against the same rules
5397
+ * `<DSRRequestForm />` enforces client-side. Designed to be called from a
5398
+ * server-side handler (Next.js Route Handler, NestJS controller, Express
5399
+ * middleware, Cloudflare Worker) so client and server stay in sync without
5400
+ * the consumer hand-rolling zod / class-validator schemas.
5401
+ *
5402
+ * Defensive — accepts `unknown` and narrows. Safe to call directly on
5403
+ * `await request.json()`. Returns `{ field, code, message }[]` errors so
5404
+ * callers can switch on `code` programmatically across locales.
5405
+ *
5406
+ * Codes emitted:
5407
+ * - `payload_not_object`
5408
+ * - `request_type_required`
5409
+ * - `request_type_not_allowed`
5410
+ * - `data_subject_required`
5411
+ * - `full_name_required`
5412
+ * - `email_required`
5413
+ * - `email_invalid_format`
5414
+ * - `phone_invalid_type`
5415
+ * - `identifier_type_required`
5416
+ * - `identifier_value_required`
5417
+ * - `submitted_at_invalid`
5418
+ * - `additional_info_invalid_type`
5419
+ * - `payload_final_narrowing_failed`
5420
+ *
5421
+ * @example **Next.js Route Handler**
5422
+ * ```ts
5423
+ * import { validateDsrSubmissionStructured } from '@tantainnovative/ndpr-toolkit/server';
5424
+ *
5425
+ * export async function POST(req: Request) {
5426
+ * const { valid, errors, data } = validateDsrSubmissionStructured(await req.json());
5427
+ * if (!valid) {
5428
+ * return Response.json({ errors }, { status: 422 });
5429
+ * }
5430
+ * await dsrStore.create(data);
5431
+ * return Response.json({ ok: true }, { status: 201 });
5432
+ * }
5433
+ * ```
5434
+ */
5435
+ export declare function validateDsrSubmissionStructured(payload: unknown, options?: ValidateDsrSubmissionOptions): StructuredValidationResult<DsrSubmissionPayload>;
5436
+
5388
5437
  /**
5389
5438
  * Validates that all required fields are present on a processing activity
5390
5439
  * and that the lawful basis is properly documented.
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- 'use strict';var chunkNUWVPRNI_js=require('./chunk-NUWVPRNI.js'),chunk3I6FYA5C_js=require('./chunk-3I6FYA5C.js'),chunkD2UWB5OI_js=require('./chunk-D2UWB5OI.js'),chunk3SIYRGJF_js=require('./chunk-3SIYRGJF.js'),chunk7FXNGGMO_js=require('./chunk-7FXNGGMO.js'),chunkXYGGUGTO_js=require('./chunk-XYGGUGTO.js'),chunkBL5W472Q_js=require('./chunk-BL5W472Q.js'),chunkFC3PTJFL_js=require('./chunk-FC3PTJFL.js'),chunkEHQVTFYO_js=require('./chunk-EHQVTFYO.js'),chunkRC3XFXTJ_js=require('./chunk-RC3XFXTJ.js'),chunkQHW4UKGJ_js=require('./chunk-QHW4UKGJ.js'),chunkIRRUYR6M_js=require('./chunk-IRRUYR6M.js'),chunkHHK5LHEG_js=require('./chunk-HHK5LHEG.js'),chunkO2WEABB3_js=require('./chunk-O2WEABB3.js');require('./chunk-JS7SYL5P.js');var chunkRDALAH3Y_js=require('./chunk-RDALAH3Y.js'),chunk3YTAOT5O_js=require('./chunk-3YTAOT5O.js'),chunkD2ZKDQVL_js=require('./chunk-D2ZKDQVL.js');require('./chunk-6LJHLE6G.js');var chunkYFBDJ4FH_js=require('./chunk-YFBDJ4FH.js'),chunkWZYCBW2R_js=require('./chunk-WZYCBW2R.js'),chunk4CVBQC66_js=require('./chunk-4CVBQC66.js'),chunkSJDDNB6M_js=require('./chunk-SJDDNB6M.js'),chunk42UJFTII_js=require('./chunk-42UJFTII.js'),chunkZD2W3YU2_js=require('./chunk-ZD2W3YU2.js'),chunk3IA3KDII_js=require('./chunk-3IA3KDII.js'),chunkHOAC5VUF_js=require('./chunk-HOAC5VUF.js'),chunkL2VO3MEJ_js=require('./chunk-L2VO3MEJ.js');require('./chunk-C2KEXHRX.js');var chunkB46SJB5V_js=require('./chunk-B46SJB5V.js'),chunkWMISQDSV_js=require('./chunk-WMISQDSV.js'),chunkUZNWXJ2W_js=require('./chunk-UZNWXJ2W.js'),chunkUXUMYP4L_js=require('./chunk-UXUMYP4L.js'),chunk5F2IAUWJ_js=require('./chunk-5F2IAUWJ.js'),chunkOZHUINWS_js=require('./chunk-OZHUINWS.js'),chunk37VFK5SR_js=require('./chunk-37VFK5SR.js'),chunkWCTFED27_js=require('./chunk-WCTFED27.js'),chunkJLQT3W3E_js=require('./chunk-JLQT3W3E.js'),chunkTQZWJGJ2_js=require('./chunk-TQZWJGJ2.js'),chunkZVOIR4QH_js=require('./chunk-ZVOIR4QH.js'),chunkAME4HJR4_js=require('./chunk-AME4HJR4.js'),chunkYDKWD6MQ_js=require('./chunk-YDKWD6MQ.js');require('./chunk-TTMGFC6C.js'),require('./chunk-VWED6UTN.js'),require('./chunk-RFPLZDIO.js');var react=require('react'),jsxRuntime=require('react/jsx-runtime');var xe=({theme:o,className:t,children:s})=>{let n=react.useMemo(()=>{if(!o)return;let r={};if(o.colors){let e=o.colors;e.primary!==void 0&&(r["--ndpr-primary"]=e.primary),e.primaryHover!==void 0&&(r["--ndpr-primary-hover"]=e.primaryHover),e.primaryForeground!==void 0&&(r["--ndpr-primary-foreground"]=e.primaryForeground),e.background!==void 0&&(r["--ndpr-background"]=e.background),e.surface!==void 0&&(r["--ndpr-surface"]=e.surface),e.foreground!==void 0&&(r["--ndpr-foreground"]=e.foreground),e.muted!==void 0&&(r["--ndpr-muted"]=e.muted),e.mutedForeground!==void 0&&(r["--ndpr-muted-foreground"]=e.mutedForeground),e.border!==void 0&&(r["--ndpr-border"]=e.border),e.input!==void 0&&(r["--ndpr-input"]=e.input),e.ring!==void 0&&(r["--ndpr-ring"]=e.ring),e.success!==void 0&&(r["--ndpr-success"]=e.success),e.destructive!==void 0&&(r["--ndpr-destructive"]=e.destructive),e.warning!==void 0&&(r["--ndpr-warning"]=e.warning);}if(o.radius){let e=o.radius;e.sm!==void 0&&(r["--ndpr-radius-sm"]=e.sm),e.base!==void 0&&(r["--ndpr-radius"]=e.base),e.lg!==void 0&&(r["--ndpr-radius-lg"]=e.lg),e.full!==void 0&&(r["--ndpr-radius-full"]=e.full);}if(o.spacing){let e=o.spacing;e[1]!==void 0&&(r["--ndpr-space-1"]=e[1]),e[2]!==void 0&&(r["--ndpr-space-2"]=e[2]),e[3]!==void 0&&(r["--ndpr-space-3"]=e[3]),e[4]!==void 0&&(r["--ndpr-space-4"]=e[4]),e[5]!==void 0&&(r["--ndpr-space-5"]=e[5]),e[6]!==void 0&&(r["--ndpr-space-6"]=e[6]),e[8]!==void 0&&(r["--ndpr-space-8"]=e[8]);}if(o.shadow){let e=o.shadow;e.sm!==void 0&&(r["--ndpr-shadow-sm"]=e.sm),e.base!==void 0&&(r["--ndpr-shadow"]=e.base),e.lg!==void 0&&(r["--ndpr-shadow-lg"]=e.lg);}if(o.font){let e=o.font;e.sans!==void 0&&(r["--ndpr-font-sans"]=e.sans),e.sizeXs!==void 0&&(r["--ndpr-font-size-xs"]=e.sizeXs),e.sizeSm!==void 0&&(r["--ndpr-font-size-sm"]=e.sizeSm),e.sizeBase!==void 0&&(r["--ndpr-font-size-base"]=e.sizeBase),e.sizeLg!==void 0&&(r["--ndpr-font-size-lg"]=e.sizeLg),e.sizeXl!==void 0&&(r["--ndpr-font-size-xl"]=e.sizeXl),e.lineHeight!==void 0&&(r["--ndpr-line-height"]=e.lineHeight),e.lineHeightTight!==void 0&&(r["--ndpr-line-height-tight"]=e.lineHeightTight);}if(o.transition){let e=o.transition;e.base!==void 0&&(r["--ndpr-transition"]=e.base),e.slow!==void 0&&(r["--ndpr-transition-slow"]=e.slow);}if(o.z){let e=o.z;e.banner!==void 0&&(r["--ndpr-z-banner"]=String(e.banner)),e.modal!==void 0&&(r["--ndpr-z-modal"]=String(e.modal));}return Object.keys(r).length>0?r:void 0},[o]),p=o==null?void 0:o.mode;return jsxRuntime.jsx("div",{"data-ndpr-theme":"","data-theme":p,className:t,style:n,children:s})};var De=({variant:o="short",className:t,hidden:s})=>{if(s)return null;let n=o==="long"?chunkZVOIR4QH_js.b:chunkZVOIR4QH_js.a;return jsxRuntime.jsx("p",{role:"note",className:t!=null?t:"ndpr-legal-notice","data-ndpr-legal-notice":o,children:n})};Object.defineProperty(exports,"NDPRDashboard",{enumerable:true,get:function(){return chunkNUWVPRNI_js.a}});Object.defineProperty(exports,"BreachNotificationManager",{enumerable:true,get:function(){return chunk3I6FYA5C_js.b}});Object.defineProperty(exports,"BreachRiskAssessment",{enumerable:true,get:function(){return chunk3I6FYA5C_js.a}});Object.defineProperty(exports,"RegulatoryReportGenerator",{enumerable:true,get:function(){return chunk3I6FYA5C_js.c}});Object.defineProperty(exports,"BreachReportForm",{enumerable:true,get:function(){return chunkD2UWB5OI_js.a}});Object.defineProperty(exports,"PolicyExporter",{enumerable:true,get:function(){return chunk3SIYRGJF_js.c}});Object.defineProperty(exports,"PolicyGenerator",{enumerable:true,get:function(){return chunk3SIYRGJF_js.a}});Object.defineProperty(exports,"PolicyPreview",{enumerable:true,get:function(){return chunk3SIYRGJF_js.b}});Object.defineProperty(exports,"LawfulBasisTracker",{enumerable:true,get:function(){return chunk7FXNGGMO_js.a}});Object.defineProperty(exports,"CrossBorderTransferManager",{enumerable:true,get:function(){return chunkXYGGUGTO_js.a}});Object.defineProperty(exports,"ROPAManager",{enumerable:true,get:function(){return chunkBL5W472Q_js.a}});Object.defineProperty(exports,"useComplianceScore",{enumerable:true,get:function(){return chunkFC3PTJFL_js.a}});Object.defineProperty(exports,"useBreach",{enumerable:true,get:function(){return chunkEHQVTFYO_js.a}});Object.defineProperty(exports,"useDefaultPrivacyPolicy",{enumerable:true,get:function(){return chunkRC3XFXTJ_js.b}});Object.defineProperty(exports,"usePrivacyPolicy",{enumerable:true,get:function(){return chunkRC3XFXTJ_js.a}});Object.defineProperty(exports,"useAdaptivePolicyWizard",{enumerable:true,get:function(){return chunkQHW4UKGJ_js.a}});Object.defineProperty(exports,"useLawfulBasis",{enumerable:true,get:function(){return chunkIRRUYR6M_js.a}});Object.defineProperty(exports,"useCrossBorderTransfer",{enumerable:true,get:function(){return chunkHHK5LHEG_js.a}});Object.defineProperty(exports,"useROPA",{enumerable:true,get:function(){return chunkO2WEABB3_js.a}});Object.defineProperty(exports,"getComplianceScore",{enumerable:true,get:function(){return chunkRDALAH3Y_js.a}});Object.defineProperty(exports,"calculateBreachSeverity",{enumerable:true,get:function(){return chunk3YTAOT5O_js.a}});Object.defineProperty(exports,"DEFAULT_POLICY_SECTIONS",{enumerable:true,get:function(){return chunkD2ZKDQVL_js.c}});Object.defineProperty(exports,"DEFAULT_POLICY_VARIABLES",{enumerable:true,get:function(){return chunkD2ZKDQVL_js.d}});Object.defineProperty(exports,"createBusinessPolicyTemplate",{enumerable:true,get:function(){return chunkD2ZKDQVL_js.e}});Object.defineProperty(exports,"generatePolicyText",{enumerable:true,get:function(){return chunkD2ZKDQVL_js.b}});Object.defineProperty(exports,"assessTransferRisk",{enumerable:true,get:function(){return chunkYFBDJ4FH_js.h}});Object.defineProperty(exports,"getTransferMechanismDescription",{enumerable:true,get:function(){return chunkYFBDJ4FH_js.f}});Object.defineProperty(exports,"isNDPCApprovalRequired",{enumerable:true,get:function(){return chunkYFBDJ4FH_js.e}});Object.defineProperty(exports,"validateTransfer",{enumerable:true,get:function(){return chunkYFBDJ4FH_js.g}});Object.defineProperty(exports,"assessComplianceGaps",{enumerable:true,get:function(){return chunkWZYCBW2R_js.c}});Object.defineProperty(exports,"generateLawfulBasisSummary",{enumerable:true,get:function(){return chunkWZYCBW2R_js.d}});Object.defineProperty(exports,"getLawfulBasisDescription",{enumerable:true,get:function(){return chunkWZYCBW2R_js.b}});Object.defineProperty(exports,"validateProcessingActivity",{enumerable:true,get:function(){return chunkWZYCBW2R_js.a}});Object.defineProperty(exports,"exportROPAToCSV",{enumerable:true,get:function(){return chunk4CVBQC66_js.c}});Object.defineProperty(exports,"generateROPASummary",{enumerable:true,get:function(){return chunk4CVBQC66_js.b}});Object.defineProperty(exports,"identifyComplianceGaps",{enumerable:true,get:function(){return chunk4CVBQC66_js.d}});Object.defineProperty(exports,"validateProcessingRecord",{enumerable:true,get:function(){return chunk4CVBQC66_js.a}});Object.defineProperty(exports,"ConsentStorage",{enumerable:true,get:function(){return chunkSJDDNB6M_js.a}});Object.defineProperty(exports,"ConsentManager",{enumerable:true,get:function(){return chunk42UJFTII_js.a}});Object.defineProperty(exports,"ConsentBanner",{enumerable:true,get:function(){return chunkZD2W3YU2_js.a}});Object.defineProperty(exports,"appendAuditEntry",{enumerable:true,get:function(){return chunk3IA3KDII_js.c}});Object.defineProperty(exports,"createAuditEntry",{enumerable:true,get:function(){return chunk3IA3KDII_js.a}});Object.defineProperty(exports,"getAuditLog",{enumerable:true,get:function(){return chunk3IA3KDII_js.b}});Object.defineProperty(exports,"useConsent",{enumerable:true,get:function(){return chunkHOAC5VUF_js.a}});Object.defineProperty(exports,"useFocusTrap",{enumerable:true,get:function(){return chunkL2VO3MEJ_js.a}});Object.defineProperty(exports,"validateConsent",{enumerable:true,get:function(){return chunkB46SJB5V_js.a}});Object.defineProperty(exports,"validateConsentOptions",{enumerable:true,get:function(){return chunkB46SJB5V_js.b}});Object.defineProperty(exports,"DSRDashboard",{enumerable:true,get:function(){return chunkWMISQDSV_js.a}});Object.defineProperty(exports,"DSRTracker",{enumerable:true,get:function(){return chunkWMISQDSV_js.b}});Object.defineProperty(exports,"DSRRequestForm",{enumerable:true,get:function(){return chunkUZNWXJ2W_js.a}});Object.defineProperty(exports,"sanitizeInput",{enumerable:true,get:function(){return chunkUXUMYP4L_js.a}});Object.defineProperty(exports,"useDSR",{enumerable:true,get:function(){return chunk5F2IAUWJ_js.a}});Object.defineProperty(exports,"formatDSRRequest",{enumerable:true,get:function(){return chunkOZHUINWS_js.b}});Object.defineProperty(exports,"validateDsrSubmission",{enumerable:true,get:function(){return chunkOZHUINWS_js.a}});Object.defineProperty(exports,"DPIAReport",{enumerable:true,get:function(){return chunk37VFK5SR_js.a}});Object.defineProperty(exports,"StepIndicator",{enumerable:true,get:function(){return chunk37VFK5SR_js.b}});Object.defineProperty(exports,"DPIAQuestionnaire",{enumerable:true,get:function(){return chunkWCTFED27_js.a}});Object.defineProperty(exports,"useDPIA",{enumerable:true,get:function(){return chunkJLQT3W3E_js.a}});Object.defineProperty(exports,"assessDPIARisk",{enumerable:true,get:function(){return chunkTQZWJGJ2_js.a}});Object.defineProperty(exports,"LEGAL_DISCLAIMER_LONG",{enumerable:true,get:function(){return chunkZVOIR4QH_js.b}});Object.defineProperty(exports,"LEGAL_DISCLAIMER_SHORT",{enumerable:true,get:function(){return chunkZVOIR4QH_js.a}});Object.defineProperty(exports,"legalDisclaimerBlock",{enumerable:true,get:function(){return chunkZVOIR4QH_js.c}});Object.defineProperty(exports,"resolveClass",{enumerable:true,get:function(){return chunkAME4HJR4_js.a}});Object.defineProperty(exports,"NDPRProvider",{enumerable:true,get:function(){return chunkYDKWD6MQ_js.a}});Object.defineProperty(exports,"useNDPRConfig",{enumerable:true,get:function(){return chunkYDKWD6MQ_js.b}});exports.LegalNotice=De;exports.NDPRThemeProvider=xe;
2
+ 'use strict';var chunkNUWVPRNI_js=require('./chunk-NUWVPRNI.js'),chunk3I6FYA5C_js=require('./chunk-3I6FYA5C.js'),chunkD2UWB5OI_js=require('./chunk-D2UWB5OI.js'),chunk3SIYRGJF_js=require('./chunk-3SIYRGJF.js'),chunk4FXRJH37_js=require('./chunk-4FXRJH37.js'),chunkCSE36REY_js=require('./chunk-CSE36REY.js'),chunkMAD7QYRK_js=require('./chunk-MAD7QYRK.js'),chunkFC3PTJFL_js=require('./chunk-FC3PTJFL.js'),chunkEHQVTFYO_js=require('./chunk-EHQVTFYO.js'),chunkRC3XFXTJ_js=require('./chunk-RC3XFXTJ.js'),chunkQHW4UKGJ_js=require('./chunk-QHW4UKGJ.js'),chunkIRRUYR6M_js=require('./chunk-IRRUYR6M.js'),chunkHHK5LHEG_js=require('./chunk-HHK5LHEG.js'),chunkTLIHFGIJ_js=require('./chunk-TLIHFGIJ.js');require('./chunk-JS7SYL5P.js');var chunkRDALAH3Y_js=require('./chunk-RDALAH3Y.js'),chunk3YTAOT5O_js=require('./chunk-3YTAOT5O.js'),chunkD2ZKDQVL_js=require('./chunk-D2ZKDQVL.js');require('./chunk-6LJHLE6G.js');var chunkYFBDJ4FH_js=require('./chunk-YFBDJ4FH.js'),chunkWZYCBW2R_js=require('./chunk-WZYCBW2R.js'),chunk4CVBQC66_js=require('./chunk-4CVBQC66.js'),chunkSJDDNB6M_js=require('./chunk-SJDDNB6M.js'),chunk42UJFTII_js=require('./chunk-42UJFTII.js'),chunkZD2W3YU2_js=require('./chunk-ZD2W3YU2.js'),chunk3IA3KDII_js=require('./chunk-3IA3KDII.js'),chunkQKXGVT2Q_js=require('./chunk-QKXGVT2Q.js'),chunkL2VO3MEJ_js=require('./chunk-L2VO3MEJ.js');require('./chunk-C2KEXHRX.js');var chunkDKLJ5DYN_js=require('./chunk-DKLJ5DYN.js'),chunkASEUTU45_js=require('./chunk-ASEUTU45.js'),chunkUZNWXJ2W_js=require('./chunk-UZNWXJ2W.js'),chunkUXUMYP4L_js=require('./chunk-UXUMYP4L.js'),chunkTVA6D6S4_js=require('./chunk-TVA6D6S4.js'),chunkR2ZZMATR_js=require('./chunk-R2ZZMATR.js'),chunk37VFK5SR_js=require('./chunk-37VFK5SR.js'),chunkWCTFED27_js=require('./chunk-WCTFED27.js'),chunkJLQT3W3E_js=require('./chunk-JLQT3W3E.js'),chunkTQZWJGJ2_js=require('./chunk-TQZWJGJ2.js'),chunkZVOIR4QH_js=require('./chunk-ZVOIR4QH.js'),chunkAME4HJR4_js=require('./chunk-AME4HJR4.js'),chunkYDKWD6MQ_js=require('./chunk-YDKWD6MQ.js');require('./chunk-TTMGFC6C.js'),require('./chunk-VWED6UTN.js'),require('./chunk-RFPLZDIO.js');var react=require('react'),jsxRuntime=require('react/jsx-runtime');var xe=({theme:o,className:t,children:s})=>{let n=react.useMemo(()=>{if(!o)return;let r={};if(o.colors){let e=o.colors;e.primary!==void 0&&(r["--ndpr-primary"]=e.primary),e.primaryHover!==void 0&&(r["--ndpr-primary-hover"]=e.primaryHover),e.primaryForeground!==void 0&&(r["--ndpr-primary-foreground"]=e.primaryForeground),e.background!==void 0&&(r["--ndpr-background"]=e.background),e.surface!==void 0&&(r["--ndpr-surface"]=e.surface),e.foreground!==void 0&&(r["--ndpr-foreground"]=e.foreground),e.muted!==void 0&&(r["--ndpr-muted"]=e.muted),e.mutedForeground!==void 0&&(r["--ndpr-muted-foreground"]=e.mutedForeground),e.border!==void 0&&(r["--ndpr-border"]=e.border),e.input!==void 0&&(r["--ndpr-input"]=e.input),e.ring!==void 0&&(r["--ndpr-ring"]=e.ring),e.success!==void 0&&(r["--ndpr-success"]=e.success),e.destructive!==void 0&&(r["--ndpr-destructive"]=e.destructive),e.warning!==void 0&&(r["--ndpr-warning"]=e.warning);}if(o.radius){let e=o.radius;e.sm!==void 0&&(r["--ndpr-radius-sm"]=e.sm),e.base!==void 0&&(r["--ndpr-radius"]=e.base),e.lg!==void 0&&(r["--ndpr-radius-lg"]=e.lg),e.full!==void 0&&(r["--ndpr-radius-full"]=e.full);}if(o.spacing){let e=o.spacing;e[1]!==void 0&&(r["--ndpr-space-1"]=e[1]),e[2]!==void 0&&(r["--ndpr-space-2"]=e[2]),e[3]!==void 0&&(r["--ndpr-space-3"]=e[3]),e[4]!==void 0&&(r["--ndpr-space-4"]=e[4]),e[5]!==void 0&&(r["--ndpr-space-5"]=e[5]),e[6]!==void 0&&(r["--ndpr-space-6"]=e[6]),e[8]!==void 0&&(r["--ndpr-space-8"]=e[8]);}if(o.shadow){let e=o.shadow;e.sm!==void 0&&(r["--ndpr-shadow-sm"]=e.sm),e.base!==void 0&&(r["--ndpr-shadow"]=e.base),e.lg!==void 0&&(r["--ndpr-shadow-lg"]=e.lg);}if(o.font){let e=o.font;e.sans!==void 0&&(r["--ndpr-font-sans"]=e.sans),e.sizeXs!==void 0&&(r["--ndpr-font-size-xs"]=e.sizeXs),e.sizeSm!==void 0&&(r["--ndpr-font-size-sm"]=e.sizeSm),e.sizeBase!==void 0&&(r["--ndpr-font-size-base"]=e.sizeBase),e.sizeLg!==void 0&&(r["--ndpr-font-size-lg"]=e.sizeLg),e.sizeXl!==void 0&&(r["--ndpr-font-size-xl"]=e.sizeXl),e.lineHeight!==void 0&&(r["--ndpr-line-height"]=e.lineHeight),e.lineHeightTight!==void 0&&(r["--ndpr-line-height-tight"]=e.lineHeightTight);}if(o.transition){let e=o.transition;e.base!==void 0&&(r["--ndpr-transition"]=e.base),e.slow!==void 0&&(r["--ndpr-transition-slow"]=e.slow);}if(o.z){let e=o.z;e.banner!==void 0&&(r["--ndpr-z-banner"]=String(e.banner)),e.modal!==void 0&&(r["--ndpr-z-modal"]=String(e.modal));}return Object.keys(r).length>0?r:void 0},[o]),p=o==null?void 0:o.mode;return jsxRuntime.jsx("div",{"data-ndpr-theme":"","data-theme":p,className:t,style:n,children:s})};var De=({variant:o="short",className:t,hidden:s})=>{if(s)return null;let n=o==="long"?chunkZVOIR4QH_js.b:chunkZVOIR4QH_js.a;return jsxRuntime.jsx("p",{role:"note",className:t!=null?t:"ndpr-legal-notice","data-ndpr-legal-notice":o,children:n})};Object.defineProperty(exports,"NDPRDashboard",{enumerable:true,get:function(){return chunkNUWVPRNI_js.a}});Object.defineProperty(exports,"BreachNotificationManager",{enumerable:true,get:function(){return chunk3I6FYA5C_js.b}});Object.defineProperty(exports,"BreachRiskAssessment",{enumerable:true,get:function(){return chunk3I6FYA5C_js.a}});Object.defineProperty(exports,"RegulatoryReportGenerator",{enumerable:true,get:function(){return chunk3I6FYA5C_js.c}});Object.defineProperty(exports,"BreachReportForm",{enumerable:true,get:function(){return chunkD2UWB5OI_js.a}});Object.defineProperty(exports,"PolicyExporter",{enumerable:true,get:function(){return chunk3SIYRGJF_js.c}});Object.defineProperty(exports,"PolicyGenerator",{enumerable:true,get:function(){return chunk3SIYRGJF_js.a}});Object.defineProperty(exports,"PolicyPreview",{enumerable:true,get:function(){return chunk3SIYRGJF_js.b}});Object.defineProperty(exports,"LawfulBasisTracker",{enumerable:true,get:function(){return chunk4FXRJH37_js.a}});Object.defineProperty(exports,"CrossBorderTransferManager",{enumerable:true,get:function(){return chunkCSE36REY_js.a}});Object.defineProperty(exports,"ROPAManager",{enumerable:true,get:function(){return chunkMAD7QYRK_js.a}});Object.defineProperty(exports,"useComplianceScore",{enumerable:true,get:function(){return chunkFC3PTJFL_js.a}});Object.defineProperty(exports,"useBreach",{enumerable:true,get:function(){return chunkEHQVTFYO_js.a}});Object.defineProperty(exports,"useDefaultPrivacyPolicy",{enumerable:true,get:function(){return chunkRC3XFXTJ_js.b}});Object.defineProperty(exports,"usePrivacyPolicy",{enumerable:true,get:function(){return chunkRC3XFXTJ_js.a}});Object.defineProperty(exports,"useAdaptivePolicyWizard",{enumerable:true,get:function(){return chunkQHW4UKGJ_js.a}});Object.defineProperty(exports,"useLawfulBasis",{enumerable:true,get:function(){return chunkIRRUYR6M_js.a}});Object.defineProperty(exports,"useCrossBorderTransfer",{enumerable:true,get:function(){return chunkHHK5LHEG_js.a}});Object.defineProperty(exports,"useROPA",{enumerable:true,get:function(){return chunkTLIHFGIJ_js.a}});Object.defineProperty(exports,"getComplianceScore",{enumerable:true,get:function(){return chunkRDALAH3Y_js.a}});Object.defineProperty(exports,"calculateBreachSeverity",{enumerable:true,get:function(){return chunk3YTAOT5O_js.a}});Object.defineProperty(exports,"DEFAULT_POLICY_SECTIONS",{enumerable:true,get:function(){return chunkD2ZKDQVL_js.c}});Object.defineProperty(exports,"DEFAULT_POLICY_VARIABLES",{enumerable:true,get:function(){return chunkD2ZKDQVL_js.d}});Object.defineProperty(exports,"createBusinessPolicyTemplate",{enumerable:true,get:function(){return chunkD2ZKDQVL_js.e}});Object.defineProperty(exports,"generatePolicyText",{enumerable:true,get:function(){return chunkD2ZKDQVL_js.b}});Object.defineProperty(exports,"assessTransferRisk",{enumerable:true,get:function(){return chunkYFBDJ4FH_js.h}});Object.defineProperty(exports,"getTransferMechanismDescription",{enumerable:true,get:function(){return chunkYFBDJ4FH_js.f}});Object.defineProperty(exports,"isNDPCApprovalRequired",{enumerable:true,get:function(){return chunkYFBDJ4FH_js.e}});Object.defineProperty(exports,"validateTransfer",{enumerable:true,get:function(){return chunkYFBDJ4FH_js.g}});Object.defineProperty(exports,"assessComplianceGaps",{enumerable:true,get:function(){return chunkWZYCBW2R_js.c}});Object.defineProperty(exports,"generateLawfulBasisSummary",{enumerable:true,get:function(){return chunkWZYCBW2R_js.d}});Object.defineProperty(exports,"getLawfulBasisDescription",{enumerable:true,get:function(){return chunkWZYCBW2R_js.b}});Object.defineProperty(exports,"validateProcessingActivity",{enumerable:true,get:function(){return chunkWZYCBW2R_js.a}});Object.defineProperty(exports,"exportROPAToCSV",{enumerable:true,get:function(){return chunk4CVBQC66_js.c}});Object.defineProperty(exports,"generateROPASummary",{enumerable:true,get:function(){return chunk4CVBQC66_js.b}});Object.defineProperty(exports,"identifyComplianceGaps",{enumerable:true,get:function(){return chunk4CVBQC66_js.d}});Object.defineProperty(exports,"validateProcessingRecord",{enumerable:true,get:function(){return chunk4CVBQC66_js.a}});Object.defineProperty(exports,"ConsentStorage",{enumerable:true,get:function(){return chunkSJDDNB6M_js.a}});Object.defineProperty(exports,"ConsentManager",{enumerable:true,get:function(){return chunk42UJFTII_js.a}});Object.defineProperty(exports,"ConsentBanner",{enumerable:true,get:function(){return chunkZD2W3YU2_js.a}});Object.defineProperty(exports,"appendAuditEntry",{enumerable:true,get:function(){return chunk3IA3KDII_js.c}});Object.defineProperty(exports,"createAuditEntry",{enumerable:true,get:function(){return chunk3IA3KDII_js.a}});Object.defineProperty(exports,"getAuditLog",{enumerable:true,get:function(){return chunk3IA3KDII_js.b}});Object.defineProperty(exports,"useConsent",{enumerable:true,get:function(){return chunkQKXGVT2Q_js.a}});Object.defineProperty(exports,"useFocusTrap",{enumerable:true,get:function(){return chunkL2VO3MEJ_js.a}});Object.defineProperty(exports,"validateConsentOptionsStructured",{enumerable:true,get:function(){return chunkDKLJ5DYN_js.b}});Object.defineProperty(exports,"validateConsentStructured",{enumerable:true,get:function(){return chunkDKLJ5DYN_js.a}});Object.defineProperty(exports,"DSRDashboard",{enumerable:true,get:function(){return chunkASEUTU45_js.a}});Object.defineProperty(exports,"DSRTracker",{enumerable:true,get:function(){return chunkASEUTU45_js.b}});Object.defineProperty(exports,"DSRRequestForm",{enumerable:true,get:function(){return chunkUZNWXJ2W_js.a}});Object.defineProperty(exports,"sanitizeInput",{enumerable:true,get:function(){return chunkUXUMYP4L_js.a}});Object.defineProperty(exports,"useDSR",{enumerable:true,get:function(){return chunkTVA6D6S4_js.a}});Object.defineProperty(exports,"formatDSRRequestStructured",{enumerable:true,get:function(){return chunkR2ZZMATR_js.b}});Object.defineProperty(exports,"validateDsrSubmissionStructured",{enumerable:true,get:function(){return chunkR2ZZMATR_js.a}});Object.defineProperty(exports,"DPIAReport",{enumerable:true,get:function(){return chunk37VFK5SR_js.a}});Object.defineProperty(exports,"StepIndicator",{enumerable:true,get:function(){return chunk37VFK5SR_js.b}});Object.defineProperty(exports,"DPIAQuestionnaire",{enumerable:true,get:function(){return chunkWCTFED27_js.a}});Object.defineProperty(exports,"useDPIA",{enumerable:true,get:function(){return chunkJLQT3W3E_js.a}});Object.defineProperty(exports,"assessDPIARisk",{enumerable:true,get:function(){return chunkTQZWJGJ2_js.a}});Object.defineProperty(exports,"LEGAL_DISCLAIMER_LONG",{enumerable:true,get:function(){return chunkZVOIR4QH_js.b}});Object.defineProperty(exports,"LEGAL_DISCLAIMER_SHORT",{enumerable:true,get:function(){return chunkZVOIR4QH_js.a}});Object.defineProperty(exports,"legalDisclaimerBlock",{enumerable:true,get:function(){return chunkZVOIR4QH_js.c}});Object.defineProperty(exports,"resolveClass",{enumerable:true,get:function(){return chunkAME4HJR4_js.a}});Object.defineProperty(exports,"NDPRProvider",{enumerable:true,get:function(){return chunkYDKWD6MQ_js.a}});Object.defineProperty(exports,"useNDPRConfig",{enumerable:true,get:function(){return chunkYDKWD6MQ_js.b}});exports.LegalNotice=De;exports.NDPRThemeProvider=xe;
package/dist/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- export{a as NDPRDashboard}from'./chunk-ZIZL37BG.mjs';export{b as BreachNotificationManager,a as BreachRiskAssessment,c as RegulatoryReportGenerator}from'./chunk-J7BIJ45O.mjs';export{a as BreachReportForm}from'./chunk-DK7P5JEG.mjs';export{c as PolicyExporter,a as PolicyGenerator,b as PolicyPreview}from'./chunk-3H6FYU3Z.mjs';export{a as LawfulBasisTracker}from'./chunk-RBKFNCGO.mjs';export{a as CrossBorderTransferManager}from'./chunk-42JPSNVV.mjs';export{a as ROPAManager}from'./chunk-Z2M5VJX2.mjs';export{a as useComplianceScore}from'./chunk-IQO3SIAG.mjs';export{a as useBreach}from'./chunk-RFXGD5NE.mjs';export{b as useDefaultPrivacyPolicy,a as usePrivacyPolicy}from'./chunk-UVXS7KRV.mjs';export{a as useAdaptivePolicyWizard}from'./chunk-KE2FZH2V.mjs';export{a as useLawfulBasis}from'./chunk-B6BRD5SL.mjs';export{a as useCrossBorderTransfer}from'./chunk-KDAZQO3N.mjs';export{a as useROPA}from'./chunk-WKUC65HL.mjs';import'./chunk-IVSNHT24.mjs';export{a as getComplianceScore}from'./chunk-7RBO42IW.mjs';export{a as calculateBreachSeverity}from'./chunk-WTGKZX7J.mjs';export{c as DEFAULT_POLICY_SECTIONS,d as DEFAULT_POLICY_VARIABLES,e as createBusinessPolicyTemplate,b as generatePolicyText}from'./chunk-NBQQ2GN3.mjs';import'./chunk-BIJSMSUU.mjs';export{h as assessTransferRisk,f as getTransferMechanismDescription,e as isNDPCApprovalRequired,g as validateTransfer}from'./chunk-7BJXI2HI.mjs';export{c as assessComplianceGaps,d as generateLawfulBasisSummary,b as getLawfulBasisDescription,a as validateProcessingActivity}from'./chunk-LWIKDDSU.mjs';export{c as exportROPAToCSV,b as generateROPASummary,d as identifyComplianceGaps,a as validateProcessingRecord}from'./chunk-XP5PL6K7.mjs';export{a as ConsentStorage}from'./chunk-XOH4WXOZ.mjs';export{a as ConsentManager}from'./chunk-BPMVJOHH.mjs';export{a as ConsentBanner}from'./chunk-I2ZBMR7F.mjs';export{c as appendAuditEntry,a as createAuditEntry,b as getAuditLog}from'./chunk-V7UFP6QU.mjs';export{a as useConsent}from'./chunk-IHNAFXDM.mjs';export{a as useFocusTrap}from'./chunk-YTU4FNM2.mjs';import'./chunk-XC3DLYEG.mjs';export{a as validateConsent,b as validateConsentOptions}from'./chunk-PJNKQPQP.mjs';export{a as DSRDashboard,b as DSRTracker}from'./chunk-NB6SKG76.mjs';export{a as DSRRequestForm}from'./chunk-L3FR4PQE.mjs';export{a as sanitizeInput}from'./chunk-EWVK45Z3.mjs';export{a as useDSR}from'./chunk-GUERZD4O.mjs';export{b as formatDSRRequest,a as validateDsrSubmission}from'./chunk-VPNK7OID.mjs';export{a as DPIAReport,b as StepIndicator}from'./chunk-N72RNTGP.mjs';export{a as DPIAQuestionnaire}from'./chunk-ZQHGIOYP.mjs';export{a as useDPIA}from'./chunk-I3V3ITN7.mjs';export{a as assessDPIARisk}from'./chunk-LRRENTT5.mjs';import {b,a}from'./chunk-ITCY2Z66.mjs';export{b as LEGAL_DISCLAIMER_LONG,a as LEGAL_DISCLAIMER_SHORT,c as legalDisclaimerBlock}from'./chunk-ITCY2Z66.mjs';export{a as resolveClass}from'./chunk-SFGW37LE.mjs';export{a as NDPRProvider,b as useNDPRConfig}from'./chunk-FRQFU44F.mjs';import'./chunk-V5TZJJWU.mjs';import'./chunk-DBZSN4WP.mjs';import'./chunk-ZJYULEER.mjs';import {useMemo}from'react';import {jsx}from'react/jsx-runtime';var xe=({theme:o,className:t,children:s})=>{let n=useMemo(()=>{if(!o)return;let r={};if(o.colors){let e=o.colors;e.primary!==void 0&&(r["--ndpr-primary"]=e.primary),e.primaryHover!==void 0&&(r["--ndpr-primary-hover"]=e.primaryHover),e.primaryForeground!==void 0&&(r["--ndpr-primary-foreground"]=e.primaryForeground),e.background!==void 0&&(r["--ndpr-background"]=e.background),e.surface!==void 0&&(r["--ndpr-surface"]=e.surface),e.foreground!==void 0&&(r["--ndpr-foreground"]=e.foreground),e.muted!==void 0&&(r["--ndpr-muted"]=e.muted),e.mutedForeground!==void 0&&(r["--ndpr-muted-foreground"]=e.mutedForeground),e.border!==void 0&&(r["--ndpr-border"]=e.border),e.input!==void 0&&(r["--ndpr-input"]=e.input),e.ring!==void 0&&(r["--ndpr-ring"]=e.ring),e.success!==void 0&&(r["--ndpr-success"]=e.success),e.destructive!==void 0&&(r["--ndpr-destructive"]=e.destructive),e.warning!==void 0&&(r["--ndpr-warning"]=e.warning);}if(o.radius){let e=o.radius;e.sm!==void 0&&(r["--ndpr-radius-sm"]=e.sm),e.base!==void 0&&(r["--ndpr-radius"]=e.base),e.lg!==void 0&&(r["--ndpr-radius-lg"]=e.lg),e.full!==void 0&&(r["--ndpr-radius-full"]=e.full);}if(o.spacing){let e=o.spacing;e[1]!==void 0&&(r["--ndpr-space-1"]=e[1]),e[2]!==void 0&&(r["--ndpr-space-2"]=e[2]),e[3]!==void 0&&(r["--ndpr-space-3"]=e[3]),e[4]!==void 0&&(r["--ndpr-space-4"]=e[4]),e[5]!==void 0&&(r["--ndpr-space-5"]=e[5]),e[6]!==void 0&&(r["--ndpr-space-6"]=e[6]),e[8]!==void 0&&(r["--ndpr-space-8"]=e[8]);}if(o.shadow){let e=o.shadow;e.sm!==void 0&&(r["--ndpr-shadow-sm"]=e.sm),e.base!==void 0&&(r["--ndpr-shadow"]=e.base),e.lg!==void 0&&(r["--ndpr-shadow-lg"]=e.lg);}if(o.font){let e=o.font;e.sans!==void 0&&(r["--ndpr-font-sans"]=e.sans),e.sizeXs!==void 0&&(r["--ndpr-font-size-xs"]=e.sizeXs),e.sizeSm!==void 0&&(r["--ndpr-font-size-sm"]=e.sizeSm),e.sizeBase!==void 0&&(r["--ndpr-font-size-base"]=e.sizeBase),e.sizeLg!==void 0&&(r["--ndpr-font-size-lg"]=e.sizeLg),e.sizeXl!==void 0&&(r["--ndpr-font-size-xl"]=e.sizeXl),e.lineHeight!==void 0&&(r["--ndpr-line-height"]=e.lineHeight),e.lineHeightTight!==void 0&&(r["--ndpr-line-height-tight"]=e.lineHeightTight);}if(o.transition){let e=o.transition;e.base!==void 0&&(r["--ndpr-transition"]=e.base),e.slow!==void 0&&(r["--ndpr-transition-slow"]=e.slow);}if(o.z){let e=o.z;e.banner!==void 0&&(r["--ndpr-z-banner"]=String(e.banner)),e.modal!==void 0&&(r["--ndpr-z-modal"]=String(e.modal));}return Object.keys(r).length>0?r:void 0},[o]),p=o==null?void 0:o.mode;return jsx("div",{"data-ndpr-theme":"","data-theme":p,className:t,style:n,children:s})};var De=({variant:o="short",className:t,hidden:s})=>{if(s)return null;let n=o==="long"?b:a;return jsx("p",{role:"note",className:t!=null?t:"ndpr-legal-notice","data-ndpr-legal-notice":o,children:n})};export{De as LegalNotice,xe as NDPRThemeProvider};
2
+ export{a as NDPRDashboard}from'./chunk-ZIZL37BG.mjs';export{b as BreachNotificationManager,a as BreachRiskAssessment,c as RegulatoryReportGenerator}from'./chunk-J7BIJ45O.mjs';export{a as BreachReportForm}from'./chunk-DK7P5JEG.mjs';export{c as PolicyExporter,a as PolicyGenerator,b as PolicyPreview}from'./chunk-3H6FYU3Z.mjs';export{a as LawfulBasisTracker}from'./chunk-NBOJ2KGN.mjs';export{a as CrossBorderTransferManager}from'./chunk-WPH6CJDL.mjs';export{a as ROPAManager}from'./chunk-BRJKIF7E.mjs';export{a as useComplianceScore}from'./chunk-IQO3SIAG.mjs';export{a as useBreach}from'./chunk-RFXGD5NE.mjs';export{b as useDefaultPrivacyPolicy,a as usePrivacyPolicy}from'./chunk-UVXS7KRV.mjs';export{a as useAdaptivePolicyWizard}from'./chunk-KE2FZH2V.mjs';export{a as useLawfulBasis}from'./chunk-B6BRD5SL.mjs';export{a as useCrossBorderTransfer}from'./chunk-KDAZQO3N.mjs';export{a as useROPA}from'./chunk-FRMVSG4N.mjs';import'./chunk-IVSNHT24.mjs';export{a as getComplianceScore}from'./chunk-7RBO42IW.mjs';export{a as calculateBreachSeverity}from'./chunk-WTGKZX7J.mjs';export{c as DEFAULT_POLICY_SECTIONS,d as DEFAULT_POLICY_VARIABLES,e as createBusinessPolicyTemplate,b as generatePolicyText}from'./chunk-NBQQ2GN3.mjs';import'./chunk-BIJSMSUU.mjs';export{h as assessTransferRisk,f as getTransferMechanismDescription,e as isNDPCApprovalRequired,g as validateTransfer}from'./chunk-7BJXI2HI.mjs';export{c as assessComplianceGaps,d as generateLawfulBasisSummary,b as getLawfulBasisDescription,a as validateProcessingActivity}from'./chunk-LWIKDDSU.mjs';export{c as exportROPAToCSV,b as generateROPASummary,d as identifyComplianceGaps,a as validateProcessingRecord}from'./chunk-XP5PL6K7.mjs';export{a as ConsentStorage}from'./chunk-XOH4WXOZ.mjs';export{a as ConsentManager}from'./chunk-BPMVJOHH.mjs';export{a as ConsentBanner}from'./chunk-I2ZBMR7F.mjs';export{c as appendAuditEntry,a as createAuditEntry,b as getAuditLog}from'./chunk-V7UFP6QU.mjs';export{a as useConsent}from'./chunk-PQ5IPUJN.mjs';export{a as useFocusTrap}from'./chunk-YTU4FNM2.mjs';import'./chunk-XC3DLYEG.mjs';export{b as validateConsentOptionsStructured,a as validateConsentStructured}from'./chunk-R3ZKV2J7.mjs';export{a as DSRDashboard,b as DSRTracker}from'./chunk-SBSYHCPK.mjs';export{a as DSRRequestForm}from'./chunk-L3FR4PQE.mjs';export{a as sanitizeInput}from'./chunk-EWVK45Z3.mjs';export{a as useDSR}from'./chunk-ZSRO4L3C.mjs';export{b as formatDSRRequestStructured,a as validateDsrSubmissionStructured}from'./chunk-RRVML7CU.mjs';export{a as DPIAReport,b as StepIndicator}from'./chunk-N72RNTGP.mjs';export{a as DPIAQuestionnaire}from'./chunk-ZQHGIOYP.mjs';export{a as useDPIA}from'./chunk-I3V3ITN7.mjs';export{a as assessDPIARisk}from'./chunk-LRRENTT5.mjs';import {b,a}from'./chunk-ITCY2Z66.mjs';export{b as LEGAL_DISCLAIMER_LONG,a as LEGAL_DISCLAIMER_SHORT,c as legalDisclaimerBlock}from'./chunk-ITCY2Z66.mjs';export{a as resolveClass}from'./chunk-SFGW37LE.mjs';export{a as NDPRProvider,b as useNDPRConfig}from'./chunk-FRQFU44F.mjs';import'./chunk-V5TZJJWU.mjs';import'./chunk-DBZSN4WP.mjs';import'./chunk-ZJYULEER.mjs';import {useMemo}from'react';import {jsx}from'react/jsx-runtime';var xe=({theme:o,className:t,children:s})=>{let n=useMemo(()=>{if(!o)return;let r={};if(o.colors){let e=o.colors;e.primary!==void 0&&(r["--ndpr-primary"]=e.primary),e.primaryHover!==void 0&&(r["--ndpr-primary-hover"]=e.primaryHover),e.primaryForeground!==void 0&&(r["--ndpr-primary-foreground"]=e.primaryForeground),e.background!==void 0&&(r["--ndpr-background"]=e.background),e.surface!==void 0&&(r["--ndpr-surface"]=e.surface),e.foreground!==void 0&&(r["--ndpr-foreground"]=e.foreground),e.muted!==void 0&&(r["--ndpr-muted"]=e.muted),e.mutedForeground!==void 0&&(r["--ndpr-muted-foreground"]=e.mutedForeground),e.border!==void 0&&(r["--ndpr-border"]=e.border),e.input!==void 0&&(r["--ndpr-input"]=e.input),e.ring!==void 0&&(r["--ndpr-ring"]=e.ring),e.success!==void 0&&(r["--ndpr-success"]=e.success),e.destructive!==void 0&&(r["--ndpr-destructive"]=e.destructive),e.warning!==void 0&&(r["--ndpr-warning"]=e.warning);}if(o.radius){let e=o.radius;e.sm!==void 0&&(r["--ndpr-radius-sm"]=e.sm),e.base!==void 0&&(r["--ndpr-radius"]=e.base),e.lg!==void 0&&(r["--ndpr-radius-lg"]=e.lg),e.full!==void 0&&(r["--ndpr-radius-full"]=e.full);}if(o.spacing){let e=o.spacing;e[1]!==void 0&&(r["--ndpr-space-1"]=e[1]),e[2]!==void 0&&(r["--ndpr-space-2"]=e[2]),e[3]!==void 0&&(r["--ndpr-space-3"]=e[3]),e[4]!==void 0&&(r["--ndpr-space-4"]=e[4]),e[5]!==void 0&&(r["--ndpr-space-5"]=e[5]),e[6]!==void 0&&(r["--ndpr-space-6"]=e[6]),e[8]!==void 0&&(r["--ndpr-space-8"]=e[8]);}if(o.shadow){let e=o.shadow;e.sm!==void 0&&(r["--ndpr-shadow-sm"]=e.sm),e.base!==void 0&&(r["--ndpr-shadow"]=e.base),e.lg!==void 0&&(r["--ndpr-shadow-lg"]=e.lg);}if(o.font){let e=o.font;e.sans!==void 0&&(r["--ndpr-font-sans"]=e.sans),e.sizeXs!==void 0&&(r["--ndpr-font-size-xs"]=e.sizeXs),e.sizeSm!==void 0&&(r["--ndpr-font-size-sm"]=e.sizeSm),e.sizeBase!==void 0&&(r["--ndpr-font-size-base"]=e.sizeBase),e.sizeLg!==void 0&&(r["--ndpr-font-size-lg"]=e.sizeLg),e.sizeXl!==void 0&&(r["--ndpr-font-size-xl"]=e.sizeXl),e.lineHeight!==void 0&&(r["--ndpr-line-height"]=e.lineHeight),e.lineHeightTight!==void 0&&(r["--ndpr-line-height-tight"]=e.lineHeightTight);}if(o.transition){let e=o.transition;e.base!==void 0&&(r["--ndpr-transition"]=e.base),e.slow!==void 0&&(r["--ndpr-transition-slow"]=e.slow);}if(o.z){let e=o.z;e.banner!==void 0&&(r["--ndpr-z-banner"]=String(e.banner)),e.modal!==void 0&&(r["--ndpr-z-modal"]=String(e.modal));}return Object.keys(r).length>0?r:void 0},[o]),p=o==null?void 0:o.mode;return jsx("div",{"data-ndpr-theme":"","data-theme":p,className:t,style:n,children:s})};var De=({variant:o="short",className:t,hidden:s})=>{if(s)return null;let n=o==="long"?b:a;return jsx("p",{role:"note",className:t!=null?t:"ndpr-legal-notice","data-ndpr-legal-notice":o,children:n})};export{De as LegalNotice,xe as NDPRThemeProvider};
@@ -111,17 +111,17 @@ declare interface LawfulBasisTrackerProps {
111
111
  */
112
112
  activities: ProcessingActivity[];
113
113
  /**
114
- * Callback when a new activity is created
114
+ * Callback when a new activity is created.
115
115
  */
116
- onAddActivity?: (activity: Omit<ProcessingActivity, 'id' | 'createdAt' | 'updatedAt'>) => void;
116
+ onAdd?: (activity: Omit<ProcessingActivity, 'id' | 'createdAt' | 'updatedAt'>) => void;
117
117
  /**
118
- * Callback when an activity is updated
118
+ * Callback when an activity is updated.
119
119
  */
120
- onUpdateActivity?: (id: string, updates: Partial<ProcessingActivity>) => void;
120
+ onUpdate?: (id: string, updates: Partial<ProcessingActivity>) => void;
121
121
  /**
122
- * Callback when an activity is archived
122
+ * Callback when an activity is archived.
123
123
  */
124
- onArchiveActivity?: (id: string) => void;
124
+ onArchive?: (id: string) => void;
125
125
  /**
126
126
  * Title displayed on the tracker
127
127
  * @default "Lawful Basis Tracker"
@@ -111,17 +111,17 @@ declare interface LawfulBasisTrackerProps {
111
111
  */
112
112
  activities: ProcessingActivity[];
113
113
  /**
114
- * Callback when a new activity is created
114
+ * Callback when a new activity is created.
115
115
  */
116
- onAddActivity?: (activity: Omit<ProcessingActivity, 'id' | 'createdAt' | 'updatedAt'>) => void;
116
+ onAdd?: (activity: Omit<ProcessingActivity, 'id' | 'createdAt' | 'updatedAt'>) => void;
117
117
  /**
118
- * Callback when an activity is updated
118
+ * Callback when an activity is updated.
119
119
  */
120
- onUpdateActivity?: (id: string, updates: Partial<ProcessingActivity>) => void;
120
+ onUpdate?: (id: string, updates: Partial<ProcessingActivity>) => void;
121
121
  /**
122
- * Callback when an activity is archived
122
+ * Callback when an activity is archived.
123
123
  */
124
- onArchiveActivity?: (id: string) => void;
124
+ onArchive?: (id: string) => void;
125
125
  /**
126
126
  * Title displayed on the tracker
127
127
  * @default "Lawful Basis Tracker"
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- 'use strict';var chunk7FXNGGMO_js=require('./chunk-7FXNGGMO.js'),chunkIRRUYR6M_js=require('./chunk-IRRUYR6M.js'),chunkWZYCBW2R_js=require('./chunk-WZYCBW2R.js');require('./chunk-AME4HJR4.js'),require('./chunk-YDKWD6MQ.js'),require('./chunk-TTMGFC6C.js'),require('./chunk-VWED6UTN.js'),require('./chunk-RFPLZDIO.js');var react=require('react'),jsxRuntime=require('react/jsx-runtime');var o=react.createContext(null);function x(){let s=react.useContext(o);if(!s)throw new Error("LawfulBasis compound components must be wrapped in <LawfulBasis.Provider>. Example: <LawfulBasis.Provider><LawfulBasis.Tracker /></LawfulBasis.Provider>");return s}var r=({adapter:s,storageKey:t,useLocalStorage:i,initialActivities:u,onAdd:f,onUpdate:p,onRemove:l,children:n})=>{let m=chunkIRRUYR6M_js.a({adapter:s,storageKey:t,useLocalStorage:i,initialActivities:u,onAdd:f,onUpdate:p,onRemove:l});return jsxRuntime.jsx(o.Provider,{value:m,children:n})};var y={Provider:r,Tracker:chunk7FXNGGMO_js.a};Object.defineProperty(exports,"LawfulBasisTracker",{enumerable:true,get:function(){return chunk7FXNGGMO_js.a}});Object.defineProperty(exports,"useLawfulBasis",{enumerable:true,get:function(){return chunkIRRUYR6M_js.a}});Object.defineProperty(exports,"assessComplianceGaps",{enumerable:true,get:function(){return chunkWZYCBW2R_js.c}});Object.defineProperty(exports,"generateLawfulBasisSummary",{enumerable:true,get:function(){return chunkWZYCBW2R_js.d}});Object.defineProperty(exports,"getLawfulBasisDescription",{enumerable:true,get:function(){return chunkWZYCBW2R_js.b}});Object.defineProperty(exports,"validateProcessingActivity",{enumerable:true,get:function(){return chunkWZYCBW2R_js.a}});exports.LawfulBasis=y;exports.LawfulBasisProvider=r;exports.useLawfulBasisCompound=x;
2
+ 'use strict';var chunk4FXRJH37_js=require('./chunk-4FXRJH37.js'),chunkIRRUYR6M_js=require('./chunk-IRRUYR6M.js'),chunkWZYCBW2R_js=require('./chunk-WZYCBW2R.js');require('./chunk-AME4HJR4.js'),require('./chunk-YDKWD6MQ.js'),require('./chunk-TTMGFC6C.js'),require('./chunk-VWED6UTN.js'),require('./chunk-RFPLZDIO.js');var react=require('react'),jsxRuntime=require('react/jsx-runtime');var o=react.createContext(null);function x(){let s=react.useContext(o);if(!s)throw new Error("LawfulBasis compound components must be wrapped in <LawfulBasis.Provider>. Example: <LawfulBasis.Provider><LawfulBasis.Tracker /></LawfulBasis.Provider>");return s}var r=({adapter:s,storageKey:t,useLocalStorage:i,initialActivities:u,onAdd:f,onUpdate:p,onRemove:l,children:n})=>{let m=chunkIRRUYR6M_js.a({adapter:s,storageKey:t,useLocalStorage:i,initialActivities:u,onAdd:f,onUpdate:p,onRemove:l});return jsxRuntime.jsx(o.Provider,{value:m,children:n})};var y={Provider:r,Tracker:chunk4FXRJH37_js.a};Object.defineProperty(exports,"LawfulBasisTracker",{enumerable:true,get:function(){return chunk4FXRJH37_js.a}});Object.defineProperty(exports,"useLawfulBasis",{enumerable:true,get:function(){return chunkIRRUYR6M_js.a}});Object.defineProperty(exports,"assessComplianceGaps",{enumerable:true,get:function(){return chunkWZYCBW2R_js.c}});Object.defineProperty(exports,"generateLawfulBasisSummary",{enumerable:true,get:function(){return chunkWZYCBW2R_js.d}});Object.defineProperty(exports,"getLawfulBasisDescription",{enumerable:true,get:function(){return chunkWZYCBW2R_js.b}});Object.defineProperty(exports,"validateProcessingActivity",{enumerable:true,get:function(){return chunkWZYCBW2R_js.a}});exports.LawfulBasis=y;exports.LawfulBasisProvider=r;exports.useLawfulBasisCompound=x;
@@ -1,2 +1,2 @@
1
1
  "use client";
2
- import {a}from'./chunk-RBKFNCGO.mjs';export{a as LawfulBasisTracker}from'./chunk-RBKFNCGO.mjs';import {a as a$1}from'./chunk-B6BRD5SL.mjs';export{a as useLawfulBasis}from'./chunk-B6BRD5SL.mjs';export{c as assessComplianceGaps,d as generateLawfulBasisSummary,b as getLawfulBasisDescription,a as validateProcessingActivity}from'./chunk-LWIKDDSU.mjs';import'./chunk-SFGW37LE.mjs';import'./chunk-FRQFU44F.mjs';import'./chunk-V5TZJJWU.mjs';import'./chunk-DBZSN4WP.mjs';import'./chunk-ZJYULEER.mjs';import {createContext,useContext}from'react';import {jsx}from'react/jsx-runtime';var o=createContext(null);function x(){let s=useContext(o);if(!s)throw new Error("LawfulBasis compound components must be wrapped in <LawfulBasis.Provider>. Example: <LawfulBasis.Provider><LawfulBasis.Tracker /></LawfulBasis.Provider>");return s}var r=({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(o.Provider,{value:m,children:n})};var y={Provider:r,Tracker:a};export{y as LawfulBasis,r as LawfulBasisProvider,x as useLawfulBasisCompound};
2
+ import {a}from'./chunk-NBOJ2KGN.mjs';export{a as LawfulBasisTracker}from'./chunk-NBOJ2KGN.mjs';import {a as a$1}from'./chunk-B6BRD5SL.mjs';export{a as useLawfulBasis}from'./chunk-B6BRD5SL.mjs';export{c as assessComplianceGaps,d as generateLawfulBasisSummary,b as getLawfulBasisDescription,a as validateProcessingActivity}from'./chunk-LWIKDDSU.mjs';import'./chunk-SFGW37LE.mjs';import'./chunk-FRQFU44F.mjs';import'./chunk-V5TZJJWU.mjs';import'./chunk-DBZSN4WP.mjs';import'./chunk-ZJYULEER.mjs';import {createContext,useContext}from'react';import {jsx}from'react/jsx-runtime';var o=createContext(null);function x(){let s=useContext(o);if(!s)throw new Error("LawfulBasis compound components must be wrapped in <LawfulBasis.Provider>. Example: <LawfulBasis.Provider><LawfulBasis.Tracker /></LawfulBasis.Provider>");return s}var r=({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(o.Provider,{value:m,children:n})};var y={Provider:r,Tracker:a};export{y as LawfulBasis,r as LawfulBasisProvider,x as useLawfulBasisCompound};
@@ -444,6 +444,87 @@ declare interface DPIAQuestionnaireClassNames {
444
444
  progressBar?: string;
445
445
  }
446
446
 
447
+ /**
448
+ * Represents the result of a completed DPIA
449
+ */
450
+ declare interface DPIAResult {
451
+ /** Unique identifier for the DPIA */
452
+ id: string;
453
+ /** Title of the DPIA */
454
+ title: string;
455
+ /** Description of the processing activity being assessed */
456
+ processingDescription: string;
457
+ /** Timestamp when the DPIA was started */
458
+ startedAt: number;
459
+ /** Timestamp when the DPIA was completed */
460
+ completedAt?: number;
461
+ /** Person responsible for conducting the DPIA */
462
+ assessor: {
463
+ name: string;
464
+ role: string;
465
+ email: string;
466
+ };
467
+ /** Answers to all questions in the DPIA */
468
+ answers: Record<string, string | number | boolean | string[]>;
469
+ /** Risks identified in the DPIA */
470
+ risks: DPIARisk[];
471
+ /** Overall risk level of the processing activity */
472
+ overallRiskLevel: 'low' | 'medium' | 'high' | 'critical';
473
+ /** Whether the DPIA concluded that the processing can proceed */
474
+ canProceed: boolean;
475
+ /** Reasons why the processing can or cannot proceed */
476
+ conclusion: string;
477
+ /** Recommendations for the processing activity */
478
+ recommendations?: string[];
479
+ /** Next review date for the DPIA */
480
+ reviewDate?: number;
481
+ /** Version of the DPIA questionnaire used */
482
+ version: string;
483
+ /**
484
+ * Whether prior consultation with NDPC is required
485
+ * Per NDPA Section 28(2), consultation is required when DPIA indicates high residual risk
486
+ */
487
+ ndpcConsultationRequired?: boolean;
488
+ /** Date when NDPC consultation was initiated */
489
+ ndpcConsultationDate?: number;
490
+ /** Reference number from NDPC consultation */
491
+ ndpcConsultationReference?: string;
492
+ /**
493
+ * The lawful basis for the processing activity being assessed
494
+ */
495
+ lawfulBasis?: string;
496
+ /**
497
+ * Whether this DPIA involves cross-border data transfers
498
+ */
499
+ involvesCrossBorderTransfer?: boolean;
500
+ }
501
+
502
+ /**
503
+ * Represents a risk identified in the DPIA
504
+ */
505
+ declare interface DPIARisk {
506
+ /** Unique identifier for the risk */
507
+ id: string;
508
+ /** Description of the risk */
509
+ description: string;
510
+ /** Likelihood of the risk occurring (1-5) */
511
+ likelihood: number;
512
+ /** Impact if the risk occurs (1-5) */
513
+ impact: number;
514
+ /** Overall risk score (likelihood * impact) */
515
+ score: number;
516
+ /** Risk level based on the score */
517
+ level: 'low' | 'medium' | 'high' | 'critical';
518
+ /** Measures to mitigate the risk */
519
+ mitigationMeasures?: string[];
520
+ /** Whether the risk has been mitigated */
521
+ mitigated: boolean;
522
+ /** Residual risk score after mitigation */
523
+ residualScore?: number;
524
+ /** Questions that identified this risk */
525
+ relatedQuestionIds: string[];
526
+ }
527
+
447
528
  /**
448
529
  * Represents a section in the DPIA questionnaire
449
530
  */
@@ -765,7 +846,11 @@ export declare interface NDPRDPIAProps {
765
846
  adapter?: StorageAdapter<DPIAAnswerMap>;
766
847
  classNames?: DPIAQuestionnaireClassNames;
767
848
  unstyled?: boolean;
768
- onComplete?: (answers: DPIAAnswerMap) => void;
849
+ /**
850
+ * Fired when the questionnaire is submitted, with the full `DPIAResult`
851
+ * including risks, overall risk level, conclusion, and recommendations.
852
+ */
853
+ onResult?: (result: DPIAResult) => void;
769
854
  /**
770
855
  * UX copy overrides — see {@link NDPRDPIACopy}.
771
856
  */
@@ -778,7 +863,7 @@ export declare interface NDPRDPIAProps {
778
863
  * - the questionnaire does NOT require an `adapter`
779
864
  * - on completion, the toolkit POSTs the JSON-serialised `DPIAAnswerMap`
780
865
  * to this URL (with `Content-Type: application/json`)
781
- * - your `onComplete` callback still fires (after the POST resolves)
866
+ * - your `onResult` callback still fires (after the POST resolves)
782
867
  * - submit failures are surfaced via `onSubmitError`
783
868
  *
784
869
  * @example