@redacto.io/consent-sdk-react 9.3.0 → 9.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/.turbo/turbo-build.log +12 -12
  2. package/CHANGELOG.md +13 -0
  3. package/README.md +93 -12
  4. package/dist/index.d.mts +39 -1
  5. package/dist/index.d.ts +39 -1
  6. package/dist/index.js +4454 -334
  7. package/dist/index.mjs +4454 -335
  8. package/dist/privacy-center.d.mts +5 -1
  9. package/dist/privacy-center.d.ts +5 -1
  10. package/dist/privacy-center.js +2958 -2583
  11. package/dist/privacy-center.mjs +2666 -2285
  12. package/package.json +1 -1
  13. package/src/RedactoNoticeAssisted/RedactoNoticeAssisted.test.tsx +847 -0
  14. package/src/RedactoNoticeAssisted/RedactoNoticeAssisted.tsx +2133 -0
  15. package/src/RedactoNoticeAssisted/api/index.ts +269 -0
  16. package/src/RedactoNoticeAssisted/api/types.ts +180 -0
  17. package/src/RedactoNoticeAssisted/assets/redacto-logo.png +0 -0
  18. package/src/RedactoNoticeAssisted/constants.ts +51 -0
  19. package/src/RedactoNoticeAssisted/i18n.ts +1463 -0
  20. package/src/RedactoNoticeAssisted/index.ts +1 -0
  21. package/src/RedactoNoticeAssisted/injectStyles.ts +251 -0
  22. package/src/RedactoNoticeAssisted/styles.ts +730 -0
  23. package/src/RedactoNoticeAssisted/types.ts +24 -0
  24. package/src/RedactoNoticeAssisted/useMediaQuery.ts +36 -0
  25. package/src/RedactoPrivacyCenter/NotificationsPage.tsx +8 -0
  26. package/src/RedactoPrivacyCenter/api/actions.ts +6 -11
  27. package/src/RedactoPrivacyCenter/api/client.ts +15 -3
  28. package/src/RedactoPrivacyCenter/api/fetcher.ts +80 -1
  29. package/src/RedactoPrivacyCenter/components/ActivitiesList.tsx +193 -213
  30. package/src/RedactoPrivacyCenter/components/ActivityTimeline.tsx +239 -0
  31. package/src/RedactoPrivacyCenter/components/AppShell/AppShell.tsx +5 -0
  32. package/src/RedactoPrivacyCenter/components/AppShell/UserMenu.tsx +6 -16
  33. package/src/RedactoPrivacyCenter/components/AppShell/usePrivacyCenterExitAction.ts +36 -0
  34. package/src/RedactoPrivacyCenter/components/CaseDetails/MessagesTab.tsx +3 -1
  35. package/src/RedactoPrivacyCenter/components/CaseDetails/useMessagePolling.ts +8 -1
  36. package/src/RedactoPrivacyCenter/components/ConsentManager.tsx +23 -17
  37. package/src/RedactoPrivacyCenter/components/ConsentManagerCells.tsx +24 -10
  38. package/src/RedactoPrivacyCenter/components/NotificationHub/NotificationBell.tsx +16 -3
  39. package/src/RedactoPrivacyCenter/components/PrivacyCenterSessionExpired.tsx +97 -0
  40. package/src/RedactoPrivacyCenter/components/constant.ts +25 -0
  41. package/src/RedactoPrivacyCenter/components/types.ts +32 -1
  42. package/src/RedactoPrivacyCenter/context/AuthContext.tsx +23 -2
  43. package/src/RedactoPrivacyCenter/context/DataAvailabilityContext.session-expired.test.tsx +92 -0
  44. package/src/RedactoPrivacyCenter/context/DataAvailabilityContext.tsx +15 -3
  45. package/src/RedactoPrivacyCenter/context/types.ts +4 -0
  46. package/src/RedactoPrivacyCenter/lib/consent-manager/utils.tsx +25 -23
  47. package/src/RedactoPrivacyCenter/lib/constants.ts +23 -10
  48. package/src/RedactoPrivacyCenter/lib/queries.ts +9 -2
  49. package/src/RedactoPrivacyCenter/lib/utils.refresh-circuit.test.ts +127 -0
  50. package/src/RedactoPrivacyCenter/lib/utils.refresh-storage.test.ts +85 -0
  51. package/src/RedactoPrivacyCenter/lib/utils.session-expired.test.ts +109 -0
  52. package/src/RedactoPrivacyCenter/lib/utils.ts +265 -139
  53. package/src/RedactoPrivacyCenter/locales/as/translation.json +2 -0
  54. package/src/RedactoPrivacyCenter/locales/bho/translation.json +2 -0
  55. package/src/RedactoPrivacyCenter/locales/bn/translation.json +2 -0
  56. package/src/RedactoPrivacyCenter/locales/brx/translation.json +2 -0
  57. package/src/RedactoPrivacyCenter/locales/doi/translation.json +2 -0
  58. package/src/RedactoPrivacyCenter/locales/en/translation.json +5 -0
  59. package/src/RedactoPrivacyCenter/locales/gom/translation.json +2 -0
  60. package/src/RedactoPrivacyCenter/locales/gu/translation.json +2 -0
  61. package/src/RedactoPrivacyCenter/locales/hi/translation.json +2 -0
  62. package/src/RedactoPrivacyCenter/locales/kn/translation.json +2 -0
  63. package/src/RedactoPrivacyCenter/locales/ks/translation.json +2 -0
  64. package/src/RedactoPrivacyCenter/locales/mai/translation.json +2 -0
  65. package/src/RedactoPrivacyCenter/locales/ml/translation.json +2 -0
  66. package/src/RedactoPrivacyCenter/locales/mni-Mtei/translation.json +2 -0
  67. package/src/RedactoPrivacyCenter/locales/mr/translation.json +2 -0
  68. package/src/RedactoPrivacyCenter/locales/ne/translation.json +2 -0
  69. package/src/RedactoPrivacyCenter/locales/or/translation.json +2 -0
  70. package/src/RedactoPrivacyCenter/locales/pa/translation.json +2 -0
  71. package/src/RedactoPrivacyCenter/locales/sa/translation.json +2 -0
  72. package/src/RedactoPrivacyCenter/locales/sat/translation.json +2 -0
  73. package/src/RedactoPrivacyCenter/locales/sd/translation.json +2 -0
  74. package/src/RedactoPrivacyCenter/locales/ta/translation.json +2 -0
  75. package/src/RedactoPrivacyCenter/locales/te/translation.json +2 -0
  76. package/src/RedactoPrivacyCenter/locales/ur/translation.json +2 -0
  77. package/src/RedactoPrivacyCenter/styles/injectStyles.ts +16 -0
  78. package/src/index.ts +2 -0
  79. package/src/shared/api-errors.ts +9 -0
  80. package/src/RedactoPrivacyCenter/components/activitiesColumns.tsx +0 -141
@@ -187,6 +187,8 @@
187
187
  "noData": "कोई डेटा नहीं",
188
188
  "noDataTitle": "अभी दिखाने के लिए कुछ नहीं",
189
189
  "noDataDescription": "हमें अभी तक आपके खाते से जुड़ी कोई सहमति, अनुरोध या गतिविधि नहीं मिली। उपलब्ध होते ही आपके गोपनीयता रिकॉर्ड यहाँ दिखाई देंगे।",
190
+ "sessionExpiredTitle": "आपका सत्र समाप्त हो गया है",
191
+ "sessionExpiredDescription": "जारी रखने के लिए कृपया फिर से साइन इन करें।",
190
192
  "rowsPerPage": "प्रति पृष्ठ पंक्तियाँ:",
191
193
  "pageOf": "पृष्ठ {{current}} / {{total}}",
192
194
  "rowsSelected": "कुल {{total}} में से {{count}} पंक्तियाँ चयनित",
@@ -184,6 +184,8 @@
184
184
  "noData": "ಡೇಟಾ ಇಲ್ಲ",
185
185
  "noDataTitle": "ಇನ್ನೂ ತೋರಿಸಲು ಏನೂ ಇಲ್ಲ",
186
186
  "noDataDescription": "ನಿಮ್ಮ ಖಾತೆಗೆ ಸಂಬಂಧಿಸಿದ ಯಾವುದೇ ಸಮ್ಮತಿಗಳು, ವಿನಂತಿಗಳು ಅಥವಾ ಚಟುವಟಿಕೆ ನಮಗೆ ಇನ್ನೂ ಕಂಡುಬಂದಿಲ್ಲ. ನಿಮ್ಮ ಗೌಪ್ಯತಾ ದಾಖಲೆಗಳು ಲಭ್ಯವಾದ ತಕ್ಷಣ ಅವು ಇಲ್ಲಿ ಗೋಚರಿಸುತ್ತವೆ.",
187
+ "sessionExpiredTitle": "ನಿಮ್ಮ ಸೆಷನ್ ಅವಧಿ ಮುಗಿದಿದೆ",
188
+ "sessionExpiredDescription": "ಮುಂದುವರಿಸಲು ದಯವಿಟ್ಟು ಮತ್ತೆ ಸೈನ್ ಇನ್ ಮಾಡಿ.",
187
189
  "rowsPerPage": "ಪುಟಕ್ಕೆ ಸಾಲುಗಳು:",
188
190
  "pageOf": "ಪುಟ {{current}} / {{total}}",
189
191
  "rowsSelected": "{{total}} ರಲ್ಲಿ {{count}} ಸಾಲು ಆಯ್ಕೆಮಾಡಲಾಗಿದೆ",
@@ -184,6 +184,8 @@
184
184
  "noData": "ڈیٹا کانہہ",
185
185
  "noDataTitle": "ابٕ تام ہاوُن خٲطرٕ کانٛہہ نٕ",
186
186
  "noDataDescription": "اسہِ تُہنٛدِ اکاؤنٹَس سٕتۍ جُڑٕمٕژ کانٛہہِ رضامندی، درخواستٕ یا سرگرمی ابٕ تام نٕ لَب۔ تُہنٛد رازداری ریکارڈ یہِ دستیاب سپدِتھ یِتہِ کنہِ وُچھنہٕ یِیِہٕ۔",
187
+ "sessionExpiredTitle": "تُہنٛد سیشَن ختم گۄمُت",
188
+ "sessionExpiredDescription": "جاری رکھنہٕ خٲطرٕ مہربانی کرِتھ دوبارٕ سائن اِن کریو۔",
187
189
  "rowsPerPage": "صفحہ فی قطاراں:",
188
190
  "pageOf": "صفحہ {{current}} / {{total}}",
189
191
  "rowsSelected": "{{total}} منز {{count}} قطار چُنِت",
@@ -184,6 +184,8 @@
184
184
  "noData": "कोनो डेटा नै",
185
185
  "noDataTitle": "अखन तक देखाबय लेल किछु नहि",
186
186
  "noDataDescription": "अहाँक खाता सँ जुड़ल कोनो सहमति, अनुरोध, वा गतिविधि अखन तक नहि भेटल। उपलब्ध होइते अहाँक गोपनीयता रिकॉर्ड एतय देखाएत।",
187
+ "sessionExpiredTitle": "अहाँक सत्र समाप्त भऽ गेल अछि",
188
+ "sessionExpiredDescription": "जारी राखबाक लेल कृपया फेर सँ साइन इन करू।",
187
189
  "rowsPerPage": "पृष्ठ प्रति पंक्ति:",
188
190
  "pageOf": "पृष्ठ {{current}} / {{total}}",
189
191
  "rowsSelected": "{{total}} मध्ये {{count}} पंक्ति चुनल गेल",
@@ -184,6 +184,8 @@
184
184
  "noData": "ഡാറ്റയില്ല",
185
185
  "noDataTitle": "ഇതുവരെ കാണിക്കാൻ ഒന്നുമില്ല",
186
186
  "noDataDescription": "നിങ്ങളുടെ അക്കൗണ്ടുമായി ബന്ധിപ്പിച്ച സമ്മതങ്ങളോ അഭ്യർത്ഥനകളോ പ്രവൃത്തിയോ ഇതുവരെ ഞങ്ങൾക്ക് കണ്ടെത്താനായില്ല. നിങ്ങളുടെ സ്വകാര്യതാ രേഖകൾ ലഭ്യമാകുമ്പോൾ അവ ഇവിടെ ദൃശ്യമാകും.",
187
+ "sessionExpiredTitle": "നിങ്ങളുടെ സെഷൻ കാലഹരണപ്പെട്ടു",
188
+ "sessionExpiredDescription": "തുടരാൻ ദയവായി വീണ്ടും സൈൻ ഇൻ ചെയ്യുക.",
187
189
  "rowsPerPage": "പേജിന് വരികൾ:",
188
190
  "pageOf": "പേജ് {{current}} / {{total}}",
189
191
  "rowsSelected": "{{total}}-ൽ {{count}} വരി തിരഞ്ഞെടുത്തു",
@@ -184,6 +184,8 @@
184
184
  "noData": "ꯗꯦꯇꯥ ꯂꯩꯇꯦ",
185
185
  "noDataTitle": "ꯍꯧꯖꯤꯛ ꯐꯥꯎꯕ ꯎꯠꯅꯕ ꯀꯔꯤꯁꯨ ꯂꯩꯇꯦ",
186
186
  "noDataDescription": "ꯍꯧꯖꯤꯛ ꯐꯥꯎꯕ ꯑꯗꯣꯝꯒꯤ ꯑꯀꯥꯎꯟꯇꯀ ꯁꯝꯅꯗꯨꯅ ꯀꯅꯁꯦꯟꯇ, ꯍꯧꯔꯛꯐꯝ, ꯅꯠꯇ꯭ꯔꯒ ꯈꯨꯗꯝꯕꯤꯠ ꯑꯃꯠꯇ ꯐꯪꯗꯔꯦ꯫ ꯑꯗꯣꯝꯒꯤ ꯄ꯭ꯔꯥꯏꯚꯦꯁꯤ ꯔꯤꯀꯣꯔꯗꯁꯤꯡ ꯐꯪꯂꯛꯄ ꯃꯇꯃꯗ ꯃꯐꯝ ꯑꯁꯤꯗ ꯎꯔꯛꯀꯅꯤ꯫",
187
+ "sessionExpiredTitle": "ꯑꯗꯣꯝꯒꯤ ꯁꯦꯁꯟ ꯂꯣꯏꯔꯦ",
188
+ "sessionExpiredDescription": "ꯃꯈꯥ ꯆꯠꯊꯔꯛꯅꯕ ꯆꯥꯅꯕꯤꯗꯨꯅ ꯑꯃꯨꯛ ꯍꯟꯅ ꯁꯥꯏꯟ ꯏꯟ ꯇꯧꯕꯤꯌꯨ꯫",
187
189
  "rowsPerPage": "ꯂꯦꯡꯒꯤ ꯃꯔꯨꯑꯣꯏꯕ:",
188
190
  "pageOf": "ꯂꯦꯡ {{current}} / {{total}}",
189
191
  "rowsSelected": "{{total}} ꯒꯤ ꯃꯔꯨꯑꯣꯏꯕ {{count}} ꯁꯤꯄ ꯈꯨꯟꯁꯥꯖꯈꯔꯦ",
@@ -184,6 +184,8 @@
184
184
  "noData": "डेटा नाही",
185
185
  "noDataTitle": "अद्याप दाखवण्यासारखे काही नाही",
186
186
  "noDataDescription": "तुमच्या खात्याशी संबंधित कोणत्याही संमती, विनंत्या किंवा क्रियाकलाप अद्याप आम्हाला आढळले नाहीत. उपलब्ध होताच तुमच्या गोपनीयता नोंदी येथे दिसतील.",
187
+ "sessionExpiredTitle": "तुमचे सत्र संपले आहे",
188
+ "sessionExpiredDescription": "सुरू ठेवण्यासाठी कृपया पुन्हा साइन इन करा.",
187
189
  "rowsPerPage": "प्रति पृष्ठ पंक्ती:",
188
190
  "pageOf": "पृष्ठ {{current}} / {{total}}",
189
191
  "rowsSelected": "{{total}} पैकी {{count}} पंक्ती निवडली",
@@ -184,6 +184,8 @@
184
184
  "noData": "डेटा छैन",
185
185
  "noDataTitle": "अहिलेसम्म देखाउने केही छैन",
186
186
  "noDataDescription": "तपाईंको खातासँग जोडिएका कुनै सहमति, अनुरोध वा गतिविधि हामीले अहिलेसम्म फेला पारेनौं। उपलब्ध भएपछि तपाईंका गोपनीयता रेकर्डहरू यहाँ देखिनेछन्।",
187
+ "sessionExpiredTitle": "तपाईंको सत्र समाप्त भएको छ",
188
+ "sessionExpiredDescription": "जारी राख्न कृपया फेरि साइन इन गर्नुहोस्।",
187
189
  "rowsPerPage": "पृष्ठ प्रति पङ्क्तिहरू:",
188
190
  "pageOf": "पृष्ठ {{current}} / {{total}}",
189
191
  "rowsSelected": "{{total}} मध्ये {{count}} पङ्क्ति चयन गरियो",
@@ -184,6 +184,8 @@
184
184
  "noData": "ତଥ୍ୟ ନାହିଁ",
185
185
  "noDataTitle": "ଏପର୍ଯ୍ୟନ୍ତ ଦେଖାଇବାକୁ କିଛି ନାହିଁ",
186
186
  "noDataDescription": "ଆପଣଙ୍କ ଆକାଉଣ୍ଟ ସହିତ ସଂଯୁକ୍ତ କୌଣସି ସମ୍ମତି, ଅନୁରୋଧ କିମ୍ବା କାର୍ଯ୍ୟକଳାପ ଆମେ ଏପର୍ଯ୍ୟନ୍ତ ପାଇଲୁ ନାହିଁ। ଉପଲବ୍ଧ ହେବା ମାତ୍ରେ ଆପଣଙ୍କ ଗୋପନୀୟତା ରେକର୍ଡ ଏଠାରେ ଦେଖାଯିବ।",
187
+ "sessionExpiredTitle": "ଆପଣଙ୍କ ସେସନ୍ ସମାପ୍ତ ହୋଇଯାଇଛି",
188
+ "sessionExpiredDescription": "ଜାରି ରଖିବାକୁ ଦୟାକରି ପୁନର୍ବାର ସାଇନ୍ ଇନ୍ କରନ୍ତୁ।",
187
189
  "rowsPerPage": "ପୃଷ୍ଠାକୁ ଧାଡ଼ି:",
188
190
  "pageOf": "ପୃଷ୍ଠା {{current}} / {{total}}",
189
191
  "rowsSelected": "{{total}} ରୁ {{count}} ଧାଡ଼ି ବାଛିଲେ",
@@ -184,6 +184,8 @@
184
184
  "noData": "ਕੋਈ ਡੇਟਾ ਨਹੀਂ",
185
185
  "noDataTitle": "ਅਜੇ ਦਿਖਾਉਣ ਲਈ ਕੁਝ ਨਹੀਂ",
186
186
  "noDataDescription": "ਅਸੀਂ ਤੁਹਾਡੇ ਖਾਤੇ ਨਾਲ ਜੁੜੀ ਕੋਈ ਸਹਿਮਤੀ, ਬੇਨਤੀ ਜਾਂ ਗਤੀਵਿਧੀ ਅਜੇ ਨਹੀਂ ਲੱਭ ਸਕੇ। ਤੁਹਾਡੇ ਗੋਪਨੀਯਤਾ ਰਿਕਾਰਡ ਉਪਲਬਧ ਹੁੰਦੇ ਹੀ ਇੱਥੇ ਦਿਖਾਈ ਦੇਣਗੇ।",
187
+ "sessionExpiredTitle": "ਤੁਹਾਡਾ ਸੈਸ਼ਨ ਸਮਾਪਤ ਹੋ ਗਿਆ ਹੈ",
188
+ "sessionExpiredDescription": "ਜਾਰੀ ਰੱਖਣ ਲਈ ਕਿਰਪਾ ਕਰਕੇ ਦੁਬਾਰਾ ਸਾਈਨ ਇਨ ਕਰੋ।",
187
189
  "rowsPerPage": "ਪੰਨੇ ਪ੍ਰਤੀ ਕਤਾਰਾਂ:",
188
190
  "pageOf": "ਪੰਨਾ {{current}} / {{total}}",
189
191
  "rowsSelected": "{{total}} ਵਿੱਚੋਂ {{count}} ਕਤਾਰ ਚੁਣੀ ਗਈ",
@@ -184,6 +184,8 @@
184
184
  "noData": "डेटा नास्ति",
185
185
  "noDataTitle": "अद्यापि किमपि दर्शयितुं नास्ति",
186
186
  "noDataDescription": "भवतः खातया सह सम्बद्धाः काश्चन सम्मतयः, अनुरोधाः, कार्यकलापाः वा अद्यापि अस्माभिः न प्राप्ताः। उपलब्धाः सति भवतः गोपनीयता-अभिलेखाः अत्र दर्शयिष्यन्ते।",
187
+ "sessionExpiredTitle": "भवतः सत्रं समाप्तम्",
188
+ "sessionExpiredDescription": "अनुवर्तनार्थं कृपया पुनः प्रवेशं करोतु।",
187
189
  "rowsPerPage": "पृष्ठे पंक्तयः:",
188
190
  "pageOf": "पृष्ठम् {{current}} / {{total}}",
189
191
  "rowsSelected": "{{total}} मध्ये {{count}} पंक्तिः चिता",
@@ -184,6 +184,8 @@
184
184
  "noData": "ᱰᱮᱴᱟ ᱵᱟᱹᱱᱩᱜᱼᱟ",
185
185
  "noDataTitle": "ᱱᱤᱛ ᱛᱟᱠ ᱡᱟᱦᱟᱸ ᱫᱮᱠᱷᱟᱣ ᱞᱟᱹᱜᱤᱫ ᱵᱟᱝ",
186
186
  "noDataDescription": "ᱟᱞᱮ ᱱᱤᱛ ᱛᱟᱠ ᱟᱢᱟᱜ ᱮᱠᱟᱣᱩᱱᱴ ᱥᱟᱞᱟᱜ ᱡᱚᱲᱟᱣ ᱡᱟᱦᱟᱸ ᱥᱚᱦᱚᱢᱚᱛᱤ, ᱦᱟᱵᱟᱭ, ᱟᱨᱵᱟᱝ ᱠᱟᱹᱢᱤ ᱵᱟᱝ ᱧᱟᱢ ᱫᱟᱲᱮᱭᱟᱫᱼᱟ᱾ ᱟᱢᱟᱜ ᱯᱨᱟᱭᱣᱮᱥᱤ ᱨᱤᱠᱚᱨᱰ ᱠᱚ ᱧᱟᱢᱚᱜ ᱠᱷᱟᱱ ᱱᱚᱸᱰᱮ ᱫᱮᱠᱷᱟᱣᱚᱜᱼᱟ᱾",
187
+ "sessionExpiredTitle": "ᱟᱢᱟᱜ ᱥᱮᱥᱚᱱ ᱢᱩᱪᱟᱹᱫᱮᱱᱟ",
188
+ "sessionExpiredDescription": "ᱞᱟᱦᱟ ᱪᱟᱞᱟᱣ ᱞᱟᱹᱜᱤᱫ ᱫᱟᱭᱟ ᱠᱟᱛᱮ ᱫᱳᱦᱲᱟ ᱥᱟᱭᱱ ᱤᱱ ᱢᱮ᱾",
187
189
  "rowsPerPage": "ᱯᱮᱡᱽ ᱯᱤᱨᱤ ᱪᱷᱩᱴᱟᱹ:",
188
190
  "pageOf": "ᱯᱮᱡᱽ {{current}} / {{total}}",
189
191
  "rowsSelected": "{{total}} ᱠᱷᱚᱱ {{count}} ᱪᱷᱩᱴᱟᱹ ᱵᱟᱪᱷᱟᱣ",
@@ -184,6 +184,8 @@
184
184
  "noData": "ڊيٽا ڪانهي",
185
185
  "noDataTitle": "اڃا ڏيکارڻ لاءِ ڪجهه ناهي",
186
186
  "noDataDescription": "اسان کي اڃا تائين توهان جي اڪائونٽ سان لاڳاپيل ڪابه رضامندي، درخواست يا سرگرمي نه ملي. توهان جا رازداري رڪارڊ موجود ٿيندي ئي هتي ظاهر ٿيندا.",
187
+ "sessionExpiredTitle": "توهان جو سيشن ختم ٿي ويو آهي",
188
+ "sessionExpiredDescription": "جاري رکڻ لاءِ مهرباني ڪري ٻيهر سائن ان ڪريو.",
187
189
  "rowsPerPage": "صفحي في قطارون:",
188
190
  "pageOf": "صفحو {{current}} / {{total}}",
189
191
  "rowsSelected": "{{total}} مان {{count}} قطار چونڊيل",
@@ -184,6 +184,8 @@
184
184
  "noData": "தரவு இல்லை",
185
185
  "noDataTitle": "இன்னும் காட்ட எதுவும் இல்லை",
186
186
  "noDataDescription": "உங்கள் கணக்குடன் இணைக்கப்பட்ட ஒப்புதல்கள், கோரிக்கைகள் அல்லது செயல்பாடு எதையும் இன்னும் எங்களால் கண்டறிய முடியவில்லை. உங்கள் தனியுரிமை பதிவுகள் கிடைக்கும்போது அவை இங்கே தோன்றும்.",
187
+ "sessionExpiredTitle": "உங்கள் அமர்வு காலாவதியாகிவிட்டது",
188
+ "sessionExpiredDescription": "தொடர்வதற்கு தயவுசெய்து மீண்டும் உள்நுழையவும்.",
187
189
  "rowsPerPage": "பக்கத்திற்கு வரிசைகள்:",
188
190
  "pageOf": "பக்கம் {{current}} / {{total}}",
189
191
  "rowsSelected": "{{count}} / {{total}} வரிசைத் தேர்ந்தெடுக்கப்பட்டது",
@@ -184,6 +184,8 @@
184
184
  "noData": "డేటా లేదు",
185
185
  "noDataTitle": "చూపించడానికి ఇంకా ఏమీ లేదు",
186
186
  "noDataDescription": "మీ ఖాతాకు అనుసంధానించబడిన ఏ సమ్మతులు, అభ్యర్థనలు లేదా కార్యాచరణ ఇంకా మాకు కనుగొనబడలేదు. అందుబాటులోకి వచ్చిన తర్వాత మీ గోప్యతా రికార్డులు ఇక్కడ కనిపిస్తాయి.",
187
+ "sessionExpiredTitle": "మీ సెషన్ గడువు ముగిసింది",
188
+ "sessionExpiredDescription": "కొనసాగించడానికి దయచేసి మళ్లీ సైన్ ఇన్ చేయండి.",
187
189
  "rowsPerPage": "పేజీకి వరుసలు:",
188
190
  "pageOf": "పేజీ {{current}} / {{total}}",
189
191
  "rowsSelected": "{{total}}లో {{count}} వరుస ఎంచుకోబడింది",
@@ -184,6 +184,8 @@
184
184
  "noData": "کوئی ڈیٹا نہیں",
185
185
  "noDataTitle": "ابھی دکھانے کے لیے کچھ نہیں",
186
186
  "noDataDescription": "ہمیں ابھی تک آپ کے اکاؤنٹ سے منسلک کوئی رضامندی، درخواست یا سرگرمی نہیں ملی۔ آپ کے پرائیویسی ریکارڈ دستیاب ہوتے ہی یہاں ظاہر ہو جائیں گے۔",
187
+ "sessionExpiredTitle": "آپ کا سیشن ختم ہو گیا ہے",
188
+ "sessionExpiredDescription": "جاری رکھنے کے لیے براہ کرم دوبارہ سائن اِن کریں۔",
187
189
  "rowsPerPage": "فی صفحہ قطاریں:",
188
190
  "pageOf": "صفحہ {{current}} / {{total}}",
189
191
  "rowsSelected": "{{count}} از {{total}} قطار منتخب",
@@ -386,6 +386,22 @@ export const injectPCStyles = () => {
386
386
  transition: max-height 0.3s ease, padding 0.3s ease !important;
387
387
  }
388
388
 
389
+ /* Activity Timeline */
390
+ .pc-timeline-content {
391
+ transition: background-color var(--pc-transition-fast) !important;
392
+ }
393
+ .pc-timeline-row:hover .pc-timeline-content {
394
+ background-color: var(--pc-bg-secondary) !important;
395
+ }
396
+ .pc-timeline-item {
397
+ animation: pc-fadeIn 0.2s ease both;
398
+ }
399
+ @media (prefers-reduced-motion: reduce) {
400
+ .pc-timeline-item {
401
+ animation: none !important;
402
+ }
403
+ }
404
+
389
405
  /* Scrollbar Styles (for better UX) */
390
406
  .pc-scrollbar::-webkit-scrollbar {
391
407
  width: 8px;
package/src/index.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  export { default as RedactoNoticeConsent } from "./RedactoNoticeConsent";
2
2
  export { default as RedactoNoticeConsentInline } from "./RedactoNoticeConsentInline";
3
+ export { default as RedactoNoticeAssisted } from "./RedactoNoticeAssisted";
4
+ export type { RedactoNoticeAssistedProps } from "./RedactoNoticeAssisted/RedactoNoticeAssisted";
3
5
 
4
6
  // Guardian Verification Components
5
7
  export { DigiLockerCallback } from "./RedactoNoticeConsent/components/DigiLockerCallback";
@@ -52,6 +52,10 @@ interface ApiErrorDetail {
52
52
  interface ApiErrorBody {
53
53
  message?: string;
54
54
  error_code?: string | null;
55
+ // Some endpoints (e.g. OTP verify) signal "this code is dead, request a fresh
56
+ // one" via a top-level boolean instead of an `error_code`. Captured so callers
57
+ // can branch on it (e.g. to distinguish an expired code from a wrong one).
58
+ should_request_new?: boolean;
55
59
  // `detail` may arrive as:
56
60
  // { message: "...", error_code: "..." } -- our MessageResponse via Ninja
57
61
  // { detail: "..." } -- Ninja auto-401
@@ -69,16 +73,20 @@ export type ApiErrorCodeLike = ApiErrorCode | (string & {});
69
73
  export class ApiError extends Error {
70
74
  readonly status: number;
71
75
  readonly code?: ApiErrorCodeLike;
76
+ // Mirrors the server's `should_request_new` flag, when present.
77
+ readonly shouldRequestNew?: boolean;
72
78
 
73
79
  constructor(opts: {
74
80
  status: number;
75
81
  code?: ApiErrorCodeLike;
76
82
  message: string;
83
+ shouldRequestNew?: boolean;
77
84
  }) {
78
85
  super(opts.message);
79
86
  this.name = "ApiError";
80
87
  this.status = opts.status;
81
88
  this.code = opts.code;
89
+ this.shouldRequestNew = opts.shouldRequestNew;
82
90
  }
83
91
  }
84
92
 
@@ -167,5 +175,6 @@ export async function parseApiError(
167
175
  status: response.status,
168
176
  code,
169
177
  message,
178
+ shouldRequestNew: body?.should_request_new,
170
179
  });
171
180
  }
@@ -1,141 +0,0 @@
1
- import { useMemo } from 'react';
2
- import { useTranslation } from 'react-i18next';
3
- import { createColumnHelper } from '@tanstack/react-table';
4
- import { PCText, PCTooltip } from '../ui';
5
- import { pcStyles } from '../styles/pcStyles';
6
- import dayjs from 'dayjs';
7
- import relativeTime from 'dayjs/plugin/relativeTime';
8
- import type { Activity } from '../lib/types';
9
- import StatusBadge from '../ui/StatusBadge';
10
- import { getActivityTypeStatus, formatActivityType } from '../lib/utils';
11
- import {
12
- ACTIVITY_COLUMN_SIZES,
13
- ACTIVITY_DESCRIPTION_TRUNCATE_LENGTH,
14
- ACTIVITY_DATE_FORMATS,
15
- } from '../lib/constants';
16
-
17
- dayjs.extend(relativeTime);
18
-
19
- const columnHelper = createColumnHelper<Activity>();
20
-
21
- export const useActivitiesColumns = () => {
22
- const { t } = useTranslation();
23
- return useMemo(
24
- () => [
25
- columnHelper.accessor('title', {
26
- id: 'title',
27
- minSize: ACTIVITY_COLUMN_SIZES.TITLE,
28
- header: t('activity'),
29
- cell: (info) => {
30
- const row = info.row.original;
31
- const title = row.title_display || info.getValue();
32
- return (
33
- <div style={{ paddingTop: pcStyles.pySm.paddingTop, paddingBottom: pcStyles.pySm.paddingBottom }}>
34
- <PCText size="sm" weight="medium" color="primary">
35
- {title}
36
- </PCText>
37
- </div>
38
- );
39
- },
40
- enableSorting: false,
41
- enableColumnFilter: false,
42
- }),
43
- columnHelper.accessor('activity_type', {
44
- id: 'activity_type',
45
- minSize: ACTIVITY_COLUMN_SIZES.ACTIVITY_TYPE,
46
- header: t('activityType'),
47
- cell: (info) => {
48
- const activityType = info.getValue();
49
- const row = info.row.original;
50
- const displayType = row.activity_type_display || formatActivityType(activityType);
51
- const status = getActivityTypeStatus(activityType);
52
-
53
- return (
54
- <div style={{ paddingTop: pcStyles.pySm.paddingTop, paddingBottom: pcStyles.pySm.paddingBottom }}>
55
- <StatusBadge status={status} className="pc-status-badge">
56
- {displayType}
57
- </StatusBadge>
58
- </div>
59
- );
60
- },
61
- enableSorting: false,
62
- enableColumnFilter: false,
63
- }),
64
- columnHelper.accessor('description', {
65
- id: 'description',
66
- minSize: ACTIVITY_COLUMN_SIZES.DESCRIPTION,
67
- header: t('activityDescription'),
68
- cell: (info) => {
69
- const row = info.row.original;
70
- const description = row.description_display || info.getValue();
71
- const truncatedDescription =
72
- description.length > ACTIVITY_DESCRIPTION_TRUNCATE_LENGTH
73
- ? `${description.substring(0, ACTIVITY_DESCRIPTION_TRUNCATE_LENGTH)}...`
74
- : description;
75
-
76
- return (
77
- <div style={{ paddingTop: pcStyles.pySm.paddingTop, paddingBottom: pcStyles.pySm.paddingBottom }}>
78
- {description.length > ACTIVITY_DESCRIPTION_TRUNCATE_LENGTH ? (
79
- <PCTooltip content={description} placement="top">
80
- <span style={{ display: 'block', cursor: 'help' }}>
81
- <PCText size="sm" color="secondary" style={{
82
- display: '-webkit-box',
83
- WebkitLineClamp: 2,
84
- WebkitBoxOrient: 'vertical',
85
- overflow: 'hidden',
86
- }}>
87
- {truncatedDescription}
88
- </PCText>
89
- </span>
90
- </PCTooltip>
91
- ) : (
92
- <PCText size="sm" color="secondary">
93
- {description}
94
- </PCText>
95
- )}
96
- </div>
97
- );
98
- },
99
- enableSorting: false,
100
- enableColumnFilter: false,
101
- }),
102
- columnHelper.accessor('timestamp', {
103
- id: 'timestamp',
104
- minSize: ACTIVITY_COLUMN_SIZES.TIMESTAMP,
105
- header: t('timestamp'),
106
- cell: (info) => {
107
- const timestamp = info.getValue();
108
- const date = dayjs(timestamp);
109
- const formattedDateTime = date.format(ACTIVITY_DATE_FORMATS.DISPLAY);
110
- const relativeTime = date.fromNow();
111
-
112
- return (
113
- <div style={{ paddingTop: pcStyles.pySm.paddingTop, paddingBottom: pcStyles.pySm.paddingBottom }}>
114
- <PCTooltip
115
- content={date.format(ACTIVITY_DATE_FORMATS.TOOLTIP)}
116
- placement="top"
117
- >
118
- <div style={{
119
- ...pcStyles.flex,
120
- ...pcStyles.flexCol,
121
- minWidth: '120px',
122
- gap: '0.125rem',
123
- }}>
124
- <PCText size="sm" weight="medium" color="primary">
125
- {formattedDateTime}
126
- </PCText>
127
- <PCText size="sm" color="secondary" style={{ fontSize: '0.75rem' }}>
128
- {relativeTime}
129
- </PCText>
130
- </div>
131
- </PCTooltip>
132
- </div>
133
- );
134
- },
135
- enableSorting: false,
136
- enableColumnFilter: false,
137
- }),
138
- ],
139
- [t]
140
- );
141
- };