@redacto.io/consent-sdk-react 3.5.0 → 3.6.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 (152) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/LICENSE +176 -0
  3. package/dist/index.d.mts +51 -4
  4. package/dist/index.d.ts +51 -4
  5. package/dist/index.js +1891 -243
  6. package/dist/index.mjs +1890 -243
  7. package/dist/privacy-center.d.mts +566 -0
  8. package/dist/privacy-center.d.ts +566 -0
  9. package/dist/privacy-center.js +17174 -0
  10. package/dist/privacy-center.mjs +17136 -0
  11. package/package.json +47 -3
  12. package/src/RedactoNoticeConsent/RedactoNoticeConsent.test.tsx +201 -118
  13. package/src/RedactoNoticeConsent/RedactoNoticeConsent.tsx +1194 -93
  14. package/src/RedactoNoticeConsent/api/index.ts +335 -206
  15. package/src/RedactoNoticeConsent/api/types.ts +140 -16
  16. package/src/RedactoNoticeConsent/components/DigiLockerCallback.tsx +602 -0
  17. package/src/RedactoNoticeConsent/components/index.ts +7 -0
  18. package/src/RedactoNoticeConsent/injectStyles.ts +11 -0
  19. package/src/RedactoNoticeConsent/language-codes.ts +61 -0
  20. package/src/RedactoNoticeConsent/services/storage.ts +122 -0
  21. package/src/RedactoNoticeConsent/types.ts +2 -0
  22. package/src/RedactoPrivacyCenter/PrivacyCenterActivityPage.tsx +19 -0
  23. package/src/RedactoPrivacyCenter/PrivacyCenterConsentManagerPage.tsx +17 -0
  24. package/src/RedactoPrivacyCenter/PrivacyCenterFormPage.tsx +79 -0
  25. package/src/RedactoPrivacyCenter/PrivacyCenterHomePage.tsx +27 -0
  26. package/src/RedactoPrivacyCenter/PrivacyCenterLayout.tsx +142 -0
  27. package/src/RedactoPrivacyCenter/RedactoPrivacyCenter.tsx +51 -0
  28. package/src/RedactoPrivacyCenter/api/actions.ts +444 -0
  29. package/src/RedactoPrivacyCenter/api/client.ts +413 -0
  30. package/src/RedactoPrivacyCenter/api/config.ts +33 -0
  31. package/src/RedactoPrivacyCenter/api/fetcher.ts +181 -0
  32. package/src/RedactoPrivacyCenter/api/upload.ts +93 -0
  33. package/src/RedactoPrivacyCenter/assets/character.svg +31 -0
  34. package/src/RedactoPrivacyCenter/assets/fileAttach.svg +9 -0
  35. package/src/RedactoPrivacyCenter/assets/greenTick.svg +4 -0
  36. package/src/RedactoPrivacyCenter/assets/mail.svg +3 -0
  37. package/src/RedactoPrivacyCenter/assets/poweredByRedacto.svg +9 -0
  38. package/src/RedactoPrivacyCenter/assets/sentImg.svg +9 -0
  39. package/src/RedactoPrivacyCenter/assets/uploadFileIcon.svg +9 -0
  40. package/src/RedactoPrivacyCenter/components/ActivitiesList.tsx +272 -0
  41. package/src/RedactoPrivacyCenter/components/CaseDetailsModal.tsx +468 -0
  42. package/src/RedactoPrivacyCenter/components/CaseHistory.tsx +433 -0
  43. package/src/RedactoPrivacyCenter/components/ConsentManager.tsx +726 -0
  44. package/src/RedactoPrivacyCenter/components/ConsentManagerColumns.tsx +239 -0
  45. package/src/RedactoPrivacyCenter/components/ConsentManagerConstants.ts +7 -0
  46. package/src/RedactoPrivacyCenter/components/ConsentManagerTableSkeleton.tsx +155 -0
  47. package/src/RedactoPrivacyCenter/components/DataRequest/CorrectionDataSection.tsx +189 -0
  48. package/src/RedactoPrivacyCenter/components/DataRequest/GrievanceDataSection.tsx +118 -0
  49. package/src/RedactoPrivacyCenter/components/DataRequest/NominationDataSection.tsx +66 -0
  50. package/src/RedactoPrivacyCenter/components/DataRequest/PurposeSelectionSection.tsx +305 -0
  51. package/src/RedactoPrivacyCenter/components/Form.tsx +1455 -0
  52. package/src/RedactoPrivacyCenter/components/GrievanceTable.tsx +176 -0
  53. package/src/RedactoPrivacyCenter/components/GrievanceTablePagination.tsx +330 -0
  54. package/src/RedactoPrivacyCenter/components/ModifyConsentModal.tsx +329 -0
  55. package/src/RedactoPrivacyCenter/components/Pagination.tsx +140 -0
  56. package/src/RedactoPrivacyCenter/components/PrivacyCenterLayout.tsx +302 -0
  57. package/src/RedactoPrivacyCenter/components/RequestSubmit.tsx +218 -0
  58. package/src/RedactoPrivacyCenter/components/SideMenuBarPC/SideBarPC.tsx +475 -0
  59. package/src/RedactoPrivacyCenter/components/SideMenuBarPC/SideMenuPC.tsx +412 -0
  60. package/src/RedactoPrivacyCenter/components/SideMenuBarPC/constants.tsx +42 -0
  61. package/src/RedactoPrivacyCenter/components/SideMenuBarPC/menuItemsPC.tsx +1 -0
  62. package/src/RedactoPrivacyCenter/components/SideMenuBarPC/types.ts +40 -0
  63. package/src/RedactoPrivacyCenter/components/SideMenuBarPC/utils.ts +38 -0
  64. package/src/RedactoPrivacyCenter/components/ThemeTransitionOverlay.tsx +85 -0
  65. package/src/RedactoPrivacyCenter/components/activitiesColumns.tsx +141 -0
  66. package/src/RedactoPrivacyCenter/components/caseHistoryColumns.tsx +179 -0
  67. package/src/RedactoPrivacyCenter/components/constant.ts +20 -0
  68. package/src/RedactoPrivacyCenter/components/types.ts +68 -0
  69. package/src/RedactoPrivacyCenter/components/utils.tsx +10 -0
  70. package/src/RedactoPrivacyCenter/config/routes.ts +9 -0
  71. package/src/RedactoPrivacyCenter/config/table.ts +25 -0
  72. package/src/RedactoPrivacyCenter/context/AuthContext.tsx +123 -0
  73. package/src/RedactoPrivacyCenter/context/BaseUrlContext.tsx +44 -0
  74. package/src/RedactoPrivacyCenter/context/LocaleContext.tsx +11 -0
  75. package/src/RedactoPrivacyCenter/context/NavigationContext.tsx +64 -0
  76. package/src/RedactoPrivacyCenter/context/OrganizationContext.tsx +30 -0
  77. package/src/RedactoPrivacyCenter/context/PageChromeContext.tsx +60 -0
  78. package/src/RedactoPrivacyCenter/context/theme.tsx +127 -0
  79. package/src/RedactoPrivacyCenter/lib/api.ts +468 -0
  80. package/src/RedactoPrivacyCenter/lib/consent-manager/utils.tsx +63 -0
  81. package/src/RedactoPrivacyCenter/lib/constants.ts +116 -0
  82. package/src/RedactoPrivacyCenter/lib/i18n.ts +81 -0
  83. package/src/RedactoPrivacyCenter/lib/locales.ts +105 -0
  84. package/src/RedactoPrivacyCenter/lib/queries.ts +30 -0
  85. package/src/RedactoPrivacyCenter/lib/types.ts +346 -0
  86. package/src/RedactoPrivacyCenter/lib/useCurrentLanguage.ts +37 -0
  87. package/src/RedactoPrivacyCenter/lib/utils.ts +625 -0
  88. package/src/RedactoPrivacyCenter/locales/as/translation.json +188 -0
  89. package/src/RedactoPrivacyCenter/locales/bho/translation.json +188 -0
  90. package/src/RedactoPrivacyCenter/locales/bn/translation.json +188 -0
  91. package/src/RedactoPrivacyCenter/locales/brx/translation.json +188 -0
  92. package/src/RedactoPrivacyCenter/locales/doi/translation.json +188 -0
  93. package/src/RedactoPrivacyCenter/locales/en/translation.json +188 -0
  94. package/src/RedactoPrivacyCenter/locales/gom/translation.json +188 -0
  95. package/src/RedactoPrivacyCenter/locales/gu/translation.json +188 -0
  96. package/src/RedactoPrivacyCenter/locales/hi/translation.json +188 -0
  97. package/src/RedactoPrivacyCenter/locales/kn/translation.json +188 -0
  98. package/src/RedactoPrivacyCenter/locales/ks/translation.json +188 -0
  99. package/src/RedactoPrivacyCenter/locales/mai/translation.json +188 -0
  100. package/src/RedactoPrivacyCenter/locales/ml/translation.json +188 -0
  101. package/src/RedactoPrivacyCenter/locales/mni-Mtei/translation.json +188 -0
  102. package/src/RedactoPrivacyCenter/locales/mr/translation.json +188 -0
  103. package/src/RedactoPrivacyCenter/locales/ne/translation.json +188 -0
  104. package/src/RedactoPrivacyCenter/locales/or/translation.json +188 -0
  105. package/src/RedactoPrivacyCenter/locales/pa/translation.json +188 -0
  106. package/src/RedactoPrivacyCenter/locales/sa/translation.json +188 -0
  107. package/src/RedactoPrivacyCenter/locales/sat/translation.json +188 -0
  108. package/src/RedactoPrivacyCenter/locales/sd/translation.json +188 -0
  109. package/src/RedactoPrivacyCenter/locales/ta/translation.json +188 -0
  110. package/src/RedactoPrivacyCenter/locales/te/translation.json +188 -0
  111. package/src/RedactoPrivacyCenter/locales/ur/translation.json +188 -0
  112. package/src/RedactoPrivacyCenter/styles/base.css +117 -0
  113. package/src/RedactoPrivacyCenter/styles/injectStyles.ts +1000 -0
  114. package/src/RedactoPrivacyCenter/styles/pcStyles.ts +819 -0
  115. package/src/RedactoPrivacyCenter/styles/responsive.ts +138 -0
  116. package/src/RedactoPrivacyCenter/styles/variables.css +133 -0
  117. package/src/RedactoPrivacyCenter/table/AdvancedTable.tsx +365 -0
  118. package/src/RedactoPrivacyCenter/table/AdvancedTablePagination.tsx +479 -0
  119. package/src/RedactoPrivacyCenter/table/index.ts +2 -0
  120. package/src/RedactoPrivacyCenter/types/images.d.ts +29 -0
  121. package/src/RedactoPrivacyCenter/ui/Footer.tsx +73 -0
  122. package/src/RedactoPrivacyCenter/ui/FormBlockWrapper.tsx +54 -0
  123. package/src/RedactoPrivacyCenter/ui/PCAccordion.tsx +87 -0
  124. package/src/RedactoPrivacyCenter/ui/PCActionIcon.tsx +47 -0
  125. package/src/RedactoPrivacyCenter/ui/PCAvatar.tsx +69 -0
  126. package/src/RedactoPrivacyCenter/ui/PCBadge.tsx +48 -0
  127. package/src/RedactoPrivacyCenter/ui/PCButton.tsx +77 -0
  128. package/src/RedactoPrivacyCenter/ui/PCCheckbox.tsx +55 -0
  129. package/src/RedactoPrivacyCenter/ui/PCCollapse.tsx +97 -0
  130. package/src/RedactoPrivacyCenter/ui/PCEmpty.tsx +35 -0
  131. package/src/RedactoPrivacyCenter/ui/PCInput.tsx +128 -0
  132. package/src/RedactoPrivacyCenter/ui/PCLoader.tsx +30 -0
  133. package/src/RedactoPrivacyCenter/ui/PCModal.tsx +104 -0
  134. package/src/RedactoPrivacyCenter/ui/PCPopover.tsx +175 -0
  135. package/src/RedactoPrivacyCenter/ui/PCSelect.tsx +381 -0
  136. package/src/RedactoPrivacyCenter/ui/PCTable.tsx +137 -0
  137. package/src/RedactoPrivacyCenter/ui/PCText.tsx +39 -0
  138. package/src/RedactoPrivacyCenter/ui/PCTextarea.tsx +43 -0
  139. package/src/RedactoPrivacyCenter/ui/PCTitle.tsx +37 -0
  140. package/src/RedactoPrivacyCenter/ui/PCTooltip.tsx +119 -0
  141. package/src/RedactoPrivacyCenter/ui/SimpleBar.tsx +25 -0
  142. package/src/RedactoPrivacyCenter/ui/StatusBadge.tsx +55 -0
  143. package/src/RedactoPrivacyCenter/ui/ThemeToggle.tsx +70 -0
  144. package/src/RedactoPrivacyCenter/ui/index.ts +18 -0
  145. package/src/RedactoPrivacyCenter/utils/cn.ts +28 -0
  146. package/src/RedactoPrivacyCenter/utils/date.ts +48 -0
  147. package/src/RedactoPrivacyCenter/utils/status.ts +111 -0
  148. package/src/RedactoPrivacyCenter/utils/toast.ts +130 -0
  149. package/src/index.ts +10 -0
  150. package/src/privacy-center.ts +107 -0
  151. package/tsconfig.json +2 -0
  152. package/tsup.config.ts +16 -1
@@ -170,9 +170,13 @@ export type ConsentEventPayload = {
170
170
  select_all_mandatory: boolean;
171
171
  source?: string;
172
172
  declined?: boolean;
173
+ language?: string;
173
174
  meta_data?: {
174
- specific_uuid: string;
175
+ specific_uuid?: string;
176
+ minor_age?: number;
175
177
  };
178
+ guardian_verification_reference?: string;
179
+ self_declared_adult?: boolean;
176
180
  };
177
181
 
178
182
  export type DataElement = {
@@ -198,23 +202,13 @@ export type SubmitConsentEventParams = {
198
202
  noticeUuid: string;
199
203
  purposes: Array<Purpose>;
200
204
  declined: boolean;
205
+ language?: string;
201
206
  meta_data?: {
202
- specific_uuid: string;
207
+ specific_uuid?: string;
208
+ minor_age?: number;
203
209
  };
204
- };
205
-
206
- export type SubmitGuardianInfoParams = {
207
- accessToken: string;
208
- baseUrl?: string;
209
- guardianName: string;
210
- guardianContact: string;
211
- guardianRelationship: string;
212
- };
213
-
214
- export type GuardianInfoPayload = {
215
- guardian_name: string;
216
- guardian_contact: string;
217
- guardian_relationship: string;
210
+ guardianVerificationReference?: string;
211
+ selfDeclaredAdult?: boolean;
218
212
  };
219
213
 
220
214
  // UI Component Types
@@ -330,3 +324,133 @@ export type FetchTTSAudioUrlsParams = {
330
324
  noticeUuid: string;
331
325
  language: string;
332
326
  };
327
+
328
+ // =============================================================================
329
+ // Guardian Verification Types (aligned with backend API)
330
+ // =============================================================================
331
+
332
+ /**
333
+ * Parameters for initiating guardian verification
334
+ * POST /guardian/initiate-verification
335
+ */
336
+ export type InitiateGuardianVerificationParams = {
337
+ accessToken: string;
338
+ baseUrl?: string;
339
+ guardianName: string;
340
+ guardianContact: string;
341
+ guardianRelationship: string;
342
+ frontendCallbackUrl?: string;
343
+ metadata?: Record<string, unknown>;
344
+ signal?: AbortSignal;
345
+ };
346
+
347
+ /**
348
+ * Response from initiate verification API
349
+ *
350
+ * Two shapes:
351
+ * 1. New verification needed: already_verified=false, includes session_token + digilocker_redirect_url
352
+ * 2. Already verified: already_verified=true, includes verification_reference — skip DigiLocker
353
+ */
354
+ export type InitiateGuardianVerificationResponse = {
355
+ success: boolean;
356
+ guardian_info_uuid: string;
357
+ already_verified: boolean;
358
+ /** Present only when already_verified=true */
359
+ verification_reference?: string;
360
+ /** Present only when already_verified=false (new flow) */
361
+ session_token?: string;
362
+ /** Present only when already_verified=false (new flow) */
363
+ digilocker_redirect_url?: string;
364
+ /** Present only when already_verified=false (new flow) */
365
+ expires_at?: string;
366
+ };
367
+
368
+ /**
369
+ * Parameters for checking verification status
370
+ * POST /guardian/verify-status
371
+ */
372
+ export type VerifyGuardianStatusParams = {
373
+ accessToken: string;
374
+ baseUrl?: string;
375
+ sessionToken: string;
376
+ signal?: AbortSignal;
377
+ };
378
+
379
+ /**
380
+ * Guardian details returned after successful verification
381
+ */
382
+ export type GuardianVerificationDetails = {
383
+ verified_name: string | null;
384
+ is_guardian_adult: boolean | null;
385
+ verified_at: string;
386
+ verification_reference: string | null;
387
+ };
388
+
389
+ /**
390
+ * Response from verify status API
391
+ */
392
+ export type VerifyGuardianStatusResponse = {
393
+ status: "pending" | "in_progress" | "verified" | "failed" | "expired";
394
+ guardian_info_uuid: string | null;
395
+ verification_reference: string | null;
396
+ guardian_details: GuardianVerificationDetails | null;
397
+ error: string | null;
398
+ error_code: GuardianVerificationErrorCode | null;
399
+ can_retry: boolean;
400
+ };
401
+
402
+ /**
403
+ * Error codes from guardian verification
404
+ */
405
+ export type GuardianVerificationErrorCode =
406
+ | "SESSION_EXPIRED"
407
+ | "GUARDIAN_UNDER_18"
408
+ | "TOKEN_FAILED"
409
+ | "DIGILOCKER_AUTH_FAILED"
410
+ | "NO_AUTH_CODE";
411
+
412
+ // =============================================================================
413
+ // Session Storage Types for redirect flow
414
+ // =============================================================================
415
+
416
+ /**
417
+ * State persisted during DigiLocker redirect flow.
418
+ * NOTE: accessToken is intentionally excluded — never store tokens in sessionStorage.
419
+ * The host app must provide the token when the component re-mounts.
420
+ */
421
+ export type PersistedConsentState = {
422
+ flowState: ConsentFlowState;
423
+ sessionToken?: string;
424
+ guardianInfoUuid?: string;
425
+ verificationReference?: string;
426
+ selectedPurposes?: Record<string, boolean>;
427
+ selectedDataElements?: Record<string, boolean>;
428
+ timestamp: string;
429
+ originalUrl: string;
430
+ verificationResult?: "pending" | "verified" | "failed" | "in_progress" | "expired";
431
+ noticeId?: string;
432
+ baseUrl?: string;
433
+ };
434
+
435
+ export type ConsentFlowState =
436
+ | "age-check"
437
+ | "guardian-details"
438
+ | "digilocker-pending"
439
+ | "consent-form"
440
+ | "submitting"
441
+ | "success"
442
+ | "error";
443
+
444
+ // =============================================================================
445
+ // DigiLocker Callback Types
446
+ // =============================================================================
447
+
448
+ /**
449
+ * Props for DigiLockerCallback component
450
+ */
451
+ export type DigiLockerCallbackProps = {
452
+ accessToken: string;
453
+ baseUrl?: string;
454
+ onSuccess?: (verificationReference: string) => void;
455
+ onError?: (error: Error, errorCode?: GuardianVerificationErrorCode) => void;
456
+ };