@redacto.io/consent-sdk-react-native 5.0.0-beta.7 → 5.0.0-beta.9

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.
@@ -121,10 +121,10 @@ __export(privacy_center_exports, {
121
121
  module.exports = __toCommonJS(privacy_center_exports);
122
122
 
123
123
  // src/RedactoPrivacyCenter/RedactoPrivacyCenter.tsx
124
- var import_react43 = require("react");
124
+ var import_react45 = require("react");
125
125
  var import_react_query2 = require("@tanstack/react-query");
126
- var import_react_i18next29 = require("react-i18next");
127
- var import_react_native64 = require("react-native");
126
+ var import_react_i18next31 = require("react-i18next");
127
+ var import_react_native66 = require("react-native");
128
128
 
129
129
  // src/RedactoPrivacyCenter/lib/i18n.ts
130
130
  var import_i18next = __toESM(require("i18next"));
@@ -541,7 +541,14 @@ var translation_default = {
541
541
  submittingAs: "Submitting as {{email}}",
542
542
  tapToChooseFile: "Tap to choose a file",
543
543
  view: "View",
544
- whatDoYouNeed: "What do you need?"
544
+ whatDoYouNeed: "What do you need?",
545
+ sessionExpiredTitle: "Your session has expired",
546
+ sessionExpiredDescription: "Please sign in again to continue.",
547
+ chooseYourProfile: "Choose your profile",
548
+ loginIdentifierLinkedToMultipleProfiles: "The login identifier is linked to more than one profile. Choose the one you want to view.",
549
+ userIdLabel: "User ID: {{id}}",
550
+ signingInEllipsis: "Signing in\u2026",
551
+ switchProfile: "Switch profile"
545
552
  };
546
553
 
547
554
  // src/RedactoPrivacyCenter/locales/as/translation.json
@@ -955,7 +962,14 @@ var translation_default2 = {
955
962
  submittingAs: "{{email}} \u09B9\u09BF\u099A\u09BE\u09AA\u09C7 \u09A6\u09BE\u0996\u09BF\u09B2 \u0995\u09F0\u09BF \u0986\u099B\u09C7",
956
963
  tapToChooseFile: "\u09AB\u09BE\u0987\u09B2 \u09AC\u09BE\u099B\u09BF\u09AC\u09B2\u09C8 \u099F\u09BF\u09AA\u0995",
957
964
  view: "\u099A\u09BE\u0993\u0995",
958
- whatDoYouNeed: "\u0986\u09AA\u09CB\u09A8\u09BE\u0995 \u0995\u09BF \u09B2\u09BE\u0997\u09C7?"
965
+ whatDoYouNeed: "\u0986\u09AA\u09CB\u09A8\u09BE\u0995 \u0995\u09BF \u09B2\u09BE\u0997\u09C7?",
966
+ sessionExpiredTitle: "\u0986\u09AA\u09CB\u09A8\u09BE\u09F0 \u099B\u09C7\u099A\u09A8 \u09B6\u09C7\u09B7 \u09B9\u09C8\u099B\u09C7",
967
+ sessionExpiredDescription: "\u0985\u09AC\u09CD\u09AF\u09BE\u09B9\u09A4 \u09F0\u09BE\u0996\u09BF\u09AC\u09B2\u09C8 \u0985\u09A8\u09C1\u0997\u09CD\u09F0\u09B9 \u0995\u09F0\u09BF \u09AA\u09C1\u09A8\u09F0 \u099B\u09BE\u0987\u09A8 \u0987\u09A8 \u0995\u09F0\u0995\u0964",
968
+ chooseYourProfile: "\u0986\u09AA\u09CB\u09A8\u09BE\u09F0 \u09AA\u09CD\u09F0'\u09AB\u09BE\u0987\u09B2 \u09AC\u09BE\u099B\u09A8\u09BF \u0995\u09F0\u0995",
969
+ loginIdentifierLinkedToMultipleProfiles: "\u09B2\u0997\u0987\u09A8 \u0986\u0987\u09A1\u09BF \u098F\u0995\u09BE\u09A7\u09BF\u0995 \u09AA\u09CD\u09F0'\u09AB\u09BE\u0987\u09B2\u09F0 \u09B8\u09C8\u09A4\u09C7 \u09B8\u0982\u09AF\u09C1\u0995\u09CD\u09A4\u0964 \u0986\u09AA\u09C1\u09A8\u09BF \u099A\u09BE\u09AC \u09AC\u09BF\u099A\u09F0\u09BE\u099F\u09CB \u09AC\u09BE\u099B\u09A8\u09BF \u0995\u09F0\u0995\u0964",
970
+ userIdLabel: "\u09AC\u09CD\u09AF\u09F1\u09B9\u09BE\u09F0\u0995\u09BE\u09F0\u09C0 \u0986\u0987\u09A1\u09BF: {{id}}",
971
+ signingInEllipsis: "\u099B\u09BE\u0987\u09A8 \u0987\u09A8 \u09B9\u09C8 \u0986\u099B\u09C7\u2026",
972
+ switchProfile: "\u09AA\u09CD\u09F0'\u09AB\u09BE\u0987\u09B2 \u09B8\u09B2\u09A8\u09BF \u0995\u09F0\u0995"
959
973
  };
960
974
 
961
975
  // src/RedactoPrivacyCenter/locales/bn/translation.json
@@ -1369,7 +1383,14 @@ var translation_default3 = {
1369
1383
  submittingAs: "{{email}} \u09B9\u09BF\u09B8\u09BE\u09AC\u09C7 \u099C\u09AE\u09BE \u09A6\u09C7\u0993\u09AF\u09BC\u09BE \u09B9\u099A\u09CD\u099B\u09C7",
1370
1384
  tapToChooseFile: "\u09AB\u09BE\u0987\u09B2 \u09AC\u09C7\u099B\u09C7 \u09A8\u09BF\u09A4\u09C7 \u099F\u09CD\u09AF\u09BE\u09AA \u0995\u09B0\u09C1\u09A8",
1371
1385
  view: "\u09A6\u09C7\u0996\u09C1\u09A8",
1372
- whatDoYouNeed: "\u0986\u09AA\u09A8\u09BE\u09B0 \u0995\u09C0 \u09AA\u09CD\u09B0\u09AF\u09BC\u09CB\u099C\u09A8?"
1386
+ whatDoYouNeed: "\u0986\u09AA\u09A8\u09BE\u09B0 \u0995\u09C0 \u09AA\u09CD\u09B0\u09AF\u09BC\u09CB\u099C\u09A8?",
1387
+ sessionExpiredTitle: "\u0986\u09AA\u09A8\u09BE\u09B0 \u09B8\u09C7\u09B6\u09A8 \u09AE\u09C7\u09AF\u09BC\u09BE\u09A6 \u09B6\u09C7\u09B7 \u09B9\u09AF\u09BC\u09C7 \u0997\u09C7\u099B\u09C7",
1388
+ sessionExpiredDescription: "\u099A\u09BE\u09B2\u09BF\u09AF\u09BC\u09C7 \u09AF\u09C7\u09A4\u09C7 \u0985\u09A8\u09C1\u0997\u09CD\u09B0\u09B9 \u0995\u09B0\u09C7 \u0986\u09AC\u09BE\u09B0 \u09B8\u09BE\u0987\u09A8 \u0987\u09A8 \u0995\u09B0\u09C1\u09A8\u0964",
1389
+ chooseYourProfile: "\u0986\u09AA\u09A8\u09BE\u09B0 \u09AA\u09CD\u09B0\u09CB\u09AB\u09BE\u0987\u09B2 \u09AC\u09C7\u099B\u09C7 \u09A8\u09BF\u09A8",
1390
+ loginIdentifierLinkedToMultipleProfiles: "\u09B2\u0997\u0987\u09A8 \u0986\u0987\u09A1\u09BF \u098F\u0995\u09BE\u09A7\u09BF\u0995 \u09AA\u09CD\u09B0\u09CB\u09AB\u09BE\u0987\u09B2\u09C7\u09B0 \u09B8\u09BE\u09A5\u09C7 \u09AF\u09C1\u0995\u09CD\u09A4\u0964 \u0986\u09AA\u09A8\u09BF \u09AF\u09C7\u099F\u09BF \u09A6\u09C7\u0996\u09A4\u09C7 \u099A\u09BE\u09A8 \u09B8\u09C7\u099F\u09BF \u09AC\u09C7\u099B\u09C7 \u09A8\u09BF\u09A8\u0964",
1391
+ userIdLabel: "\u09AC\u09CD\u09AF\u09AC\u09B9\u09BE\u09B0\u0995\u09BE\u09B0\u09C0\u09B0 \u0986\u0987\u09A1\u09BF: {{id}}",
1392
+ signingInEllipsis: "\u09B8\u09BE\u0987\u09A8 \u0987\u09A8 \u09B9\u099A\u09CD\u099B\u09C7\u2026",
1393
+ switchProfile: "\u09AA\u09CD\u09B0\u09CB\u09AB\u09BE\u0987\u09B2 \u09AA\u09B0\u09BF\u09AC\u09B0\u09CD\u09A4\u09A8 \u0995\u09B0\u09C1\u09A8"
1373
1394
  };
1374
1395
 
1375
1396
  // src/RedactoPrivacyCenter/locales/brx/translation.json
@@ -1783,7 +1804,14 @@ var translation_default4 = {
1783
1804
  submittingAs: "{{email}} \u092E\u0939\u0930\u0948 \u0917\u0925\u093E\u092F\u0917\u093E\u0938\u093F\u0928\u094B",
1784
1805
  tapToChooseFile: "\u092B\u093E\u0907\u0932 \u0938\u093E\u092F\u0916\u0928\u094B \u091F\u0947\u092C \u0916\u093E\u0932\u093E\u092E",
1785
1806
  view: "\u0928\u093E\u092F",
1786
- whatDoYouNeed: "\u0928\u094B\u0902\u0925\u093E\u0902\u0928\u094B \u092E\u093E \u0917\u094B\u0928\u093E\u0902?"
1807
+ whatDoYouNeed: "\u0928\u094B\u0902\u0925\u093E\u0902\u0928\u094B \u092E\u093E \u0917\u094B\u0928\u093E\u0902?",
1808
+ sessionExpiredTitle: "\u0928\u094B\u0902\u0925\u093E\u0902\u0928\u093F \u0938\u0947\u0938\u0928 \u091C\u094B\u092C\u092C\u093E\u092F",
1809
+ sessionExpiredDescription: "\u0938\u093E\u0932\u093E\u092F\u0928\u094B \u0925\u093E\u0916\u093E\u092F \u0905\u0928\u0928\u093E\u0928\u0948 \u092B\u093F\u0928 \u0938\u093E\u0907\u0928 \u0907\u0928 \u0916\u093E\u0932\u093E\u092E\u0964",
1810
+ chooseYourProfile: "\u0928\u094B\u0902\u0925\u093E\u0902\u0928\u093F \u092A\u094D\u0930\u092B\u093E\u0907\u0932 \u0938\u093E\u092F\u0916",
1811
+ loginIdentifierLinkedToMultipleProfiles: "\u0932\u0949\u0917\u093F\u0928 \u0906\u0908\u0921\u0940 \u092E\u094B\u0928\u0938\u0947\u0928\u093F\u0916\u094D\u0930\u0941\u0907 \u092C\u093E\u0902\u0938\u093F\u0928 \u092A\u094D\u0930\u092B\u093E\u0907\u0932\u091C\u094B\u0902 \u0928\u093E\u0902\u091C\u093E\u092C \u0926\u0902\u0964 \u0928\u094B\u0902\u0925\u093E\u0919\u093E \u0928\u093E\u092F\u0928\u094B \u0932\u0941\u092C\u0948\u092F\u094B\u092C\u094D\u0932\u093E \u092C\u0947\u0916\u094C \u0938\u093E\u092F\u0916\u0964",
1812
+ userIdLabel: "\u092F\u0942\u091C\u0930 \u0906\u0908\u0921\u0940: {{id}}",
1813
+ signingInEllipsis: "\u0938\u093E\u0907\u0928 \u0907\u0928 \u091C\u093E\u092F\u0917\u093E\u0938\u093F\u0928\u094B \u0926\u0902\u2026",
1814
+ switchProfile: "\u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932 \u0938\u094B\u0932\u093E\u092F"
1787
1815
  };
1788
1816
 
1789
1817
  // src/RedactoPrivacyCenter/locales/doi/translation.json
@@ -2197,7 +2225,14 @@ var translation_default5 = {
2197
2225
  submittingAs: "{{email}} \u0926\u0947 \u0930\u0942\u092A \u091A \u091C\u092E\u093E\u0902 \u0915\u0930\u0926\u0947",
2198
2226
  tapToChooseFile: "\u092B\u093E\u0907\u0932 \u091A\u0941\u0928\u0928\u0947 \u0906\u0938\u094D\u0924\u0948 \u091F\u0948\u092A \u0915\u0930\u094B",
2199
2227
  view: "\u0926\u093F\u0915\u094D\u0916\u094B",
2200
- whatDoYouNeed: "\u0924\u0941\u0938\u0947\u0902 \u0915\u0947\u0939\u094D \u091A\u093E\u0939\u093F\u0926\u093E?"
2228
+ whatDoYouNeed: "\u0924\u0941\u0938\u0947\u0902 \u0915\u0947\u0939\u094D \u091A\u093E\u0939\u093F\u0926\u093E?",
2229
+ sessionExpiredTitle: "\u0924\u0941\u0902\u0926\u093E \u0938\u0924\u094D\u0930 \u0916\u0924\u092E \u0939\u094B\u0908 \u0917\u0947\u0906 \u0910",
2230
+ sessionExpiredDescription: "\u091C\u093E\u0930\u0940 \u0930\u0915\u094D\u0916\u0928\u0947 \u0906\u0938\u094D\u0924\u0948 \u0915\u0943\u092A\u093E \u0915\u0930\u093F\u092F\u0948 \u092B\u093F\u0930\u0940 \u0938\u093E\u0907\u0928 \u0907\u0928 \u0915\u0930\u094B\u0964",
2231
+ chooseYourProfile: "\u0905\u092A\u0928\u0940 \u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932 \u091A\u0941\u0928\u094B",
2232
+ loginIdentifierLinkedToMultipleProfiles: "\u0932\u0949\u0917\u093F\u0928 \u0906\u0908\u0921\u0940 \u0907\u0915 \u0915\u094B\u0932\u093E \u092E\u0924\u093E \u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932\u0947\u0902 \u0915\u0928\u094D\u0928\u0948 \u091C\u0941\u0921\u093C\u094D\u092F\u093E \u0926\u093E \u0910\u0964 \u091C\u0947\u0939\u094D\u0921\u093C\u0940 \u0924\u0941\u0938\u0947\u0902 \u0926\u093F\u0915\u094D\u0916\u0928\u0940 \u0910 \u0913\u0939\u094D \u091A\u0941\u0928\u094B\u0964",
2233
+ userIdLabel: "\u092A\u094D\u0930\u092F\u094B\u0917\u0915\u0930\u094D\u0924\u093E \u0906\u0908\u0921\u0940: {{id}}",
2234
+ signingInEllipsis: "\u0938\u093E\u0907\u0928 \u0907\u0928 \u0939\u094B\u0906 \u0915\u0930\u0926\u093E \u0910\u2026",
2235
+ switchProfile: "\u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932 \u092C\u0926\u0932\u094B"
2201
2236
  };
2202
2237
 
2203
2238
  // src/RedactoPrivacyCenter/locales/gom/translation.json
@@ -2611,7 +2646,14 @@ var translation_default6 = {
2611
2646
  submittingAs: "{{email}} \u092E\u094D\u0939\u0942\u0923 \u0938\u093E\u0926\u0930 \u0915\u0930\u0924\u093E",
2612
2647
  tapToChooseFile: "\u092B\u093E\u092F\u0932 \u0928\u093F\u0935\u0921\u092A\u093E\u0915 \u091F\u0945\u092A \u0915\u0930\u093E\u0924",
2613
2648
  view: "\u092A\u0933\u092F\u093E\u0924",
2614
- whatDoYouNeed: "\u0924\u0941\u092E\u0915\u093E\u0902 \u0915\u093F\u0924\u0947\u0902 \u091C\u093E\u092F?"
2649
+ whatDoYouNeed: "\u0924\u0941\u092E\u0915\u093E\u0902 \u0915\u093F\u0924\u0947\u0902 \u091C\u093E\u092F?",
2650
+ sessionExpiredTitle: "\u0924\u0941\u092E\u091A\u0947\u0902 \u0938\u0924\u094D\u0930 \u0938\u094B\u0902\u092A\u0932\u093E\u0902",
2651
+ sessionExpiredDescription: "\u092B\u0941\u0921\u0947\u0902 \u0935\u091A\u092A\u093E\u0915 \u0909\u092A\u0915\u093E\u0930 \u0915\u0930\u0942\u0928 \u092A\u0930\u0924\u0942\u0928 \u0938\u093E\u0907\u0928 \u0907\u0928 \u0915\u0930\u093E\u0924.",
2652
+ chooseYourProfile: "\u0924\u0941\u092E\u091A\u0947\u0902 \u092A\u094D\u0930\u094B\u092B\u093E\u092F\u0932 \u0928\u093F\u0935\u0921\u093E\u0924",
2653
+ loginIdentifierLinkedToMultipleProfiles: "\u0932\u0949\u0917\u093F\u0928 \u0906\u092F\u0921\u0940 \u090F\u0915\u093E\u092A\u0930\u0938 \u091A\u0921 \u092A\u094D\u0930\u094B\u092B\u093E\u092F\u0932\u093E\u0902\u0915 \u091C\u094B\u0921\u0932\u093E. \u0924\u0941\u092E\u0915\u093E\u0902 \u091C\u0947\u0902 \u092A\u0933\u094B\u0935\u092A\u093E\u0915 \u091C\u093E\u092F \u0924\u0947\u0902 \u0928\u093F\u0935\u0921\u093E\u0924.",
2654
+ userIdLabel: "\u0935\u093E\u092A\u0930\u092A\u0940 \u0906\u092F\u0921\u0940: {{id}}",
2655
+ signingInEllipsis: "\u0938\u093E\u0907\u0928 \u0907\u0928 \u091C\u093E\u0935\u0928 \u0906\u0938\u093E\u2026",
2656
+ switchProfile: "\u092A\u094D\u0930\u094B\u092B\u093E\u092F\u0932 \u092C\u0926\u0932\u093E"
2615
2657
  };
2616
2658
 
2617
2659
  // src/RedactoPrivacyCenter/locales/gu/translation.json
@@ -3025,7 +3067,14 @@ var translation_default7 = {
3025
3067
  submittingAs: "{{email}} \u0AA4\u0AB0\u0AC0\u0A95\u0AC7 \u0AB8\u0AAC\u0AAE\u0ABF\u0A9F \u0A95\u0AB0\u0AC0 \u0AB0\u0AB9\u0ACD\u0AAF\u0ABE \u0A9B\u0ACB",
3026
3068
  tapToChooseFile: "\u0AAB\u0ABE\u0A87\u0AB2 \u0AAA\u0AB8\u0A82\u0AA6 \u0A95\u0AB0\u0AB5\u0ABE \u0A9F\u0AC5\u0AAA \u0A95\u0AB0\u0ACB",
3027
3069
  view: "\u0A9C\u0AC1\u0A93",
3028
- whatDoYouNeed: "\u0AA4\u0AAE\u0AA8\u0AC7 \u0AB6\u0AC1\u0A82 \u0A9C\u0ACB\u0A88\u0A8F \u0A9B\u0AC7?"
3070
+ whatDoYouNeed: "\u0AA4\u0AAE\u0AA8\u0AC7 \u0AB6\u0AC1\u0A82 \u0A9C\u0ACB\u0A88\u0A8F \u0A9B\u0AC7?",
3071
+ sessionExpiredTitle: "\u0AA4\u0AAE\u0ABE\u0AB0\u0AC1\u0A82 \u0AB8\u0AA4\u0ACD\u0AB0 \u0AB8\u0AAE\u0ABE\u0AAA\u0ACD\u0AA4 \u0AA5\u0A88 \u0A97\u0AAF\u0AC1\u0A82 \u0A9B\u0AC7",
3072
+ sessionExpiredDescription: "\u0A9A\u0ABE\u0AB2\u0AC1 \u0AB0\u0ABE\u0A96\u0AB5\u0ABE \u0AAE\u0ABE\u0A9F\u0AC7 \u0A95\u0AC3\u0AAA\u0ABE \u0A95\u0AB0\u0AC0\u0AA8\u0AC7 \u0AAB\u0AB0\u0AC0\u0AA5\u0AC0 \u0AB8\u0ABE\u0A87\u0AA8 \u0A87\u0AA8 \u0A95\u0AB0\u0ACB.",
3073
+ chooseYourProfile: "\u0AA4\u0AAE\u0ABE\u0AB0\u0AC0 \u0AAA\u0ACD\u0AB0\u0ACB\u0AAB\u0ABE\u0A87\u0AB2 \u0AAA\u0AB8\u0A82\u0AA6 \u0A95\u0AB0\u0ACB",
3074
+ loginIdentifierLinkedToMultipleProfiles: "\u0AB2\u0ACB\u0A97\u0ABF\u0AA8 \u0A86\u0A88\u0AA1\u0AC0 \u0A8F\u0A95 \u0A95\u0AB0\u0AA4\u0ABE\u0A82 \u0AB5\u0AA7\u0AC1 \u0AAA\u0ACD\u0AB0\u0ACB\u0AAB\u0ABE\u0A87\u0AB2 \u0AB8\u0ABE\u0AA5\u0AC7 \u0A9C\u0ACB\u0AA1\u0ABE\u0AAF\u0AC7\u0AB2 \u0A9B\u0AC7. \u0AA4\u0AAE\u0AC7 \u0A9C\u0AC7 \u0A9C\u0ACB\u0AB5\u0ABE \u0AAE\u0ABE\u0A82\u0A97\u0ACB \u0A9B\u0ACB \u0AA4\u0AC7 \u0AAA\u0AB8\u0A82\u0AA6 \u0A95\u0AB0\u0ACB.",
3075
+ userIdLabel: "\u0AB5\u0AAA\u0AB0\u0ABE\u0AB6\u0A95\u0AB0\u0ACD\u0AA4\u0ABE \u0A86\u0A88\u0AA1\u0AC0: {{id}}",
3076
+ signingInEllipsis: "\u0AB8\u0ABE\u0A87\u0AA8 \u0A87\u0AA8 \u0AA5\u0A88 \u0AB0\u0AB9\u0ACD\u0AAF\u0AC1\u0A82 \u0A9B\u0AC7\u2026",
3077
+ switchProfile: "\u0AAA\u0ACD\u0AB0\u0ACB\u0AAB\u0ABE\u0A87\u0AB2 \u0AAC\u0AA6\u0AB2\u0ACB"
3029
3078
  };
3030
3079
 
3031
3080
  // src/RedactoPrivacyCenter/locales/hi/translation.json
@@ -3439,7 +3488,14 @@ var translation_default8 = {
3439
3488
  submittingAs: "{{email}} \u0915\u0947 \u0930\u0942\u092A \u092E\u0947\u0902 \u0938\u092C\u092E\u093F\u091F \u0915\u0930 \u0930\u0939\u0947 \u0939\u0948\u0902",
3440
3489
  tapToChooseFile: "\u092B\u093C\u093E\u0907\u0932 \u091A\u0941\u0928\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u091F\u0948\u092A \u0915\u0930\u0947\u0902",
3441
3490
  view: "\u0926\u0947\u0916\u0947\u0902",
3442
- whatDoYouNeed: "\u0906\u092A\u0915\u094B \u0915\u094D\u092F\u093E \u091A\u093E\u0939\u093F\u090F?"
3491
+ whatDoYouNeed: "\u0906\u092A\u0915\u094B \u0915\u094D\u092F\u093E \u091A\u093E\u0939\u093F\u090F?",
3492
+ sessionExpiredTitle: "\u0906\u092A\u0915\u093E \u0938\u0924\u094D\u0930 \u0938\u092E\u093E\u092A\u094D\u0924 \u0939\u094B \u0917\u092F\u093E \u0939\u0948",
3493
+ sessionExpiredDescription: "\u091C\u093E\u0930\u0940 \u0930\u0916\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0915\u0943\u092A\u092F\u093E \u092B\u093F\u0930 \u0938\u0947 \u0938\u093E\u0907\u0928 \u0907\u0928 \u0915\u0930\u0947\u0902\u0964",
3494
+ chooseYourProfile: "\u0905\u092A\u0928\u0940 \u092A\u094D\u0930\u094B\u092B\u093C\u093E\u0907\u0932 \u091A\u0941\u0928\u0947\u0902",
3495
+ loginIdentifierLinkedToMultipleProfiles: "\u0932\u0949\u0917\u093F\u0928 \u0906\u0908\u0921\u0940 \u090F\u0915 \u0938\u0947 \u0905\u0927\u093F\u0915 \u092A\u094D\u0930\u094B\u092B\u093C\u093E\u0907\u0932 \u0938\u0947 \u091C\u0941\u0921\u093C\u093E \u0939\u0948\u0964 \u091C\u093F\u0938\u0947 \u0906\u092A \u0926\u0947\u0916\u0928\u093E \u091A\u093E\u0939\u0924\u0947 \u0939\u0948\u0902 \u0909\u0938\u0947 \u091A\u0941\u0928\u0947\u0902\u0964",
3496
+ userIdLabel: "\u0909\u092A\u092F\u094B\u0917\u0915\u0930\u094D\u0924\u093E \u0906\u0908\u0921\u0940: {{id}}",
3497
+ signingInEllipsis: "\u0938\u093E\u0907\u0928 \u0907\u0928 \u0939\u094B \u0930\u0939\u093E \u0939\u0948\u2026",
3498
+ switchProfile: "\u092A\u094D\u0930\u094B\u092B\u093C\u093E\u0907\u0932 \u092C\u0926\u0932\u0947\u0902"
3443
3499
  };
3444
3500
 
3445
3501
  // src/RedactoPrivacyCenter/locales/kn/translation.json
@@ -3853,7 +3909,14 @@ var translation_default9 = {
3853
3909
  submittingAs: "{{email}} \u0C86\u0C97\u0CBF \u0CB8\u0CB2\u0CCD\u0CB2\u0CBF\u0CB8\u0CB2\u0CBE\u0C97\u0CC1\u0CA4\u0CCD\u0CA4\u0CBF\u0CA6\u0CC6",
3854
3910
  tapToChooseFile: "\u0CAB\u0CC8\u0CB2\u0CCD \u0C86\u0CAF\u0CCD\u0C95\u0CC6\u0CAE\u0CBE\u0CA1\u0CB2\u0CC1 \u0C9F\u0CCD\u0CAF\u0CBE\u0CAA\u0CCD \u0CAE\u0CBE\u0CA1\u0CBF",
3855
3911
  view: "\u0CB5\u0CC0\u0C95\u0CCD\u0CB7\u0CBF\u0CB8\u0CBF",
3856
- whatDoYouNeed: "\u0CA8\u0CBF\u0CAE\u0C97\u0CC6 \u0C8F\u0CA8\u0CC1 \u0CAC\u0CC7\u0C95\u0CC1?"
3912
+ whatDoYouNeed: "\u0CA8\u0CBF\u0CAE\u0C97\u0CC6 \u0C8F\u0CA8\u0CC1 \u0CAC\u0CC7\u0C95\u0CC1?",
3913
+ sessionExpiredTitle: "\u0CA8\u0CBF\u0CAE\u0CCD\u0CAE \u0CB8\u0CC6\u0CB7\u0CA8\u0CCD \u0C85\u0CB5\u0CA7\u0CBF \u0CAE\u0CC1\u0C97\u0CBF\u0CA6\u0CBF\u0CA6\u0CC6",
3914
+ sessionExpiredDescription: "\u0CAE\u0CC1\u0C82\u0CA6\u0CC1\u0CB5\u0CB0\u0CBF\u0CB8\u0CB2\u0CC1 \u0CA6\u0CAF\u0CB5\u0CBF\u0C9F\u0CCD\u0C9F\u0CC1 \u0CAE\u0CA4\u0CCD\u0CA4\u0CC6 \u0CB8\u0CC8\u0CA8\u0CCD \u0C87\u0CA8\u0CCD \u0CAE\u0CBE\u0CA1\u0CBF.",
3915
+ chooseYourProfile: "\u0CA8\u0CBF\u0CAE\u0CCD\u0CAE \u0CAA\u0CCD\u0CB0\u0CCA\u0CAB\u0CC8\u0CB2\u0CCD \u0C86\u0CAF\u0CCD\u0C95\u0CC6\u0CAE\u0CBE\u0CA1\u0CBF",
3916
+ loginIdentifierLinkedToMultipleProfiles: "\u0CB2\u0CBE\u0C97\u0CBF\u0CA8\u0CCD \u0C90\u0CA1\u0CBF \u0C92\u0C82\u0CA6\u0C95\u0CCD\u0C95\u0CBF\u0C82\u0CA4 \u0CB9\u0CC6\u0C9A\u0CCD\u0C9A\u0CC1 \u0CAA\u0CCD\u0CB0\u0CCA\u0CAB\u0CC8\u0CB2\u0CCD\u200C\u0C97\u0CB3\u0CBF\u0C97\u0CC6 \u0CB2\u0CBF\u0C82\u0C95\u0CCD \u0C86\u0C97\u0CBF\u0CA6\u0CC6. \u0CA8\u0CC0\u0CB5\u0CC1 \u0CB5\u0CC0\u0C95\u0CCD\u0CB7\u0CBF\u0CB8\u0CB2\u0CC1 \u0CAC\u0CAF\u0CB8\u0CC1\u0CB5\u0CC1\u0CA6\u0CA8\u0CCD\u0CA8\u0CC1 \u0C86\u0CAF\u0CCD\u0C95\u0CC6\u0CAE\u0CBE\u0CA1\u0CBF.",
3917
+ userIdLabel: "\u0CAC\u0CB3\u0C95\u0CC6\u0CA6\u0CBE\u0CB0 \u0C90\u0CA1\u0CBF: {{id}}",
3918
+ signingInEllipsis: "\u0CB8\u0CC8\u0CA8\u0CCD \u0C87\u0CA8\u0CCD \u0C86\u0C97\u0CC1\u0CA4\u0CCD\u0CA4\u0CBF\u0CA6\u0CC6\u2026",
3919
+ switchProfile: "\u0CAA\u0CCD\u0CB0\u0CCA\u0CAB\u0CC8\u0CB2\u0CCD \u0CAC\u0CA6\u0CB2\u0CBE\u0CAF\u0CBF\u0CB8\u0CBF"
3857
3920
  };
3858
3921
 
3859
3922
  // src/RedactoPrivacyCenter/locales/ks/translation.json
@@ -4267,7 +4330,14 @@ var translation_default10 = {
4267
4330
  submittingAs: "{{email}} \u067E\u0620\u0658\u0679\u06BE \u062C\u0645\u0639 \u06A9\u0631\u0627\u0646",
4268
4331
  tapToChooseFile: "\u0641\u0627\u06CC\u0644 \u0698\u0627\u0631\u0646\u06C1 \u062E\u0672\u0637\u0631\u0655 \u0679\u06CC\u067E \u06A9\u0631\u06CC\u0648",
4269
4332
  view: "\u0648\u064F\u0686\u06BE\u0650\u0648",
4270
- whatDoYouNeed: "\u062A\u0648\u06C1\u0650 \u06A9\u06CC\u0627 \u0636\u0631\u0648\u0631\u062A \u0686\u06BE\u064F\u061F"
4333
+ whatDoYouNeed: "\u062A\u0648\u06C1\u0650 \u06A9\u06CC\u0627 \u0636\u0631\u0648\u0631\u062A \u0686\u06BE\u064F\u061F",
4334
+ sessionExpiredTitle: "\u062A\u064F\u06C1\u0646\u065B\u062F \u0633\u06CC\u0634\u064E\u0646 \u062E\u062A\u0645 \u06AF\u06C4\u0645\u064F\u062A",
4335
+ sessionExpiredDescription: "\u062C\u0627\u0631\u06CC \u0631\u06A9\u06BE\u0646\u06C1\u0655 \u062E\u0672\u0637\u0631\u0655 \u0645\u06C1\u0631\u0628\u0627\u0646\u06CC \u06A9\u0631\u0650\u062A\u06BE \u062F\u0648\u0628\u0627\u0631\u0655 \u0633\u0627\u0626\u0646 \u0627\u0650\u0646 \u06A9\u0631\u06CC\u0648\u06D4",
4336
+ chooseYourProfile: "\u067E\u0646\u0646\u06C1\u0655 \u067E\u0631\u0648\u0641\u0627\u0626\u0644 \u0698\u0627\u0631\u0655\u0648",
4337
+ loginIdentifierLinkedToMultipleProfiles: "\u0644\u0627\u06AF \u0627\u0650\u0646 \u0622\u0626\u06CC \u0688\u06CC \u0686\u06BE\u064F \u0627\u06A9\u06C1 \u06A9\u06BE\u06C4\u062A\u06C1 \u0632\u06CC\u0627\u062F\u0655 \u067E\u0631\u0648\u0641\u0627\u0626\u0644\u0646 \u0633\u065F\u062A\u0620 \u062C\u0648\u0691\u0646\u06C1 \u0622\u0645\u064F\u062A\u06D4 \u06CC\u064F\u0633 \u062A\u0648\u06C1\u06C1\u0650 \u0648\u064F\u0686\u06BE\u064F\u0646 \u0686\u06BE\u0650\u0648 \u06CC\u0698\u06BE\u0627\u0646 \u0633\u064F \u0698\u0627\u0631\u0655\u0648\u06D4",
4338
+ userIdLabel: "\u0635\u0627\u0631\u0641 \u0622\u0626\u06CC \u0688\u06CC: {{id}}",
4339
+ signingInEllipsis: "\u0633\u0627\u0626\u0646 \u0627\u0650\u0646 \u06AF\u0698\u06BE\u0627\u0646 \u0686\u06BE\u064F\u2026",
4340
+ switchProfile: "\u067E\u0631\u0648\u0641\u0627\u0626\u0644 \u0628\u062F\u0644\u0627\u0648"
4271
4341
  };
4272
4342
 
4273
4343
  // src/RedactoPrivacyCenter/locales/mai/translation.json
@@ -4681,7 +4751,14 @@ var translation_default11 = {
4681
4751
  submittingAs: "{{email}} \u0930\u0942\u092A\u092E\u0947 \u091C\u092E\u093E \u0915\u093D \u0930\u0939\u0932 \u091B\u0940",
4682
4752
  tapToChooseFile: "\u092B\u093E\u0907\u0932 \u091A\u0941\u0928\u092C\u093E\u0915 \u0932\u0947\u0932 \u091F\u0948\u092A \u0915\u0930\u0942",
4683
4753
  view: "\u0926\u0947\u0916\u0942",
4684
- whatDoYouNeed: "\u0905\u0939\u093E\u0901\u0915\u0947\u0901 \u0915\u0940 \u091A\u093E\u0939\u0940?"
4754
+ whatDoYouNeed: "\u0905\u0939\u093E\u0901\u0915\u0947\u0901 \u0915\u0940 \u091A\u093E\u0939\u0940?",
4755
+ sessionExpiredTitle: "\u0905\u0939\u093E\u0901\u0915 \u0938\u0924\u094D\u0930 \u0938\u092E\u093E\u092A\u094D\u0924 \u092D\u093D \u0917\u0947\u0932 \u0905\u091B\u093F",
4756
+ sessionExpiredDescription: "\u091C\u093E\u0930\u0940 \u0930\u093E\u0916\u092C\u093E\u0915 \u0932\u0947\u0932 \u0915\u0943\u092A\u092F\u093E \u092B\u0947\u0930 \u0938\u0901 \u0938\u093E\u0907\u0928 \u0907\u0928 \u0915\u0930\u0942\u0964",
4757
+ chooseYourProfile: "\u0905\u092A\u0928 \u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932 \u091A\u0941\u0928\u0942",
4758
+ loginIdentifierLinkedToMultipleProfiles: "\u0932\u0949\u0917\u093F\u0928 \u0906\u0907\u0921\u0940 \u090F\u0915\u093E\u0927\u093F\u0915 \u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932\u0938\u0901 \u091C\u0941\u0921\u093C\u0932 \u0905\u091B\u093F\u0964 \u091C\u0947 \u0905\u0939\u093E\u0901 \u0926\u0947\u0916\u092F \u091A\u093E\u0939\u0948\u0924 \u091B\u0940 \u0913\u0915\u0930\u093E \u091A\u0941\u0928\u0942\u0964",
4759
+ userIdLabel: "\u0909\u092A\u092F\u094B\u0917\u0915\u0930\u094D\u0924\u093E \u0906\u0907\u0921\u0940: {{id}}",
4760
+ signingInEllipsis: "\u0938\u093E\u0907\u0928 \u0907\u0928 \u092D' \u0930\u0939\u0932 \u0905\u091B\u093F\u2026",
4761
+ switchProfile: "\u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932 \u092C\u0926\u0932\u0942"
4685
4762
  };
4686
4763
 
4687
4764
  // src/RedactoPrivacyCenter/locales/ml/translation.json
@@ -5095,7 +5172,14 @@ var translation_default12 = {
5095
5172
  submittingAs: "{{email}} \u0D06\u0D2F\u0D3F \u0D38\u0D2E\u0D7C\u0D2A\u0D4D\u0D2A\u0D3F\u0D15\u0D4D\u0D15\u0D41\u0D28\u0D4D\u0D28\u0D41",
5096
5173
  tapToChooseFile: "\u0D2B\u0D2F\u0D7D \u0D24\u0D3F\u0D30\u0D1E\u0D4D\u0D1E\u0D46\u0D1F\u0D41\u0D15\u0D4D\u0D15\u0D3E\u0D7B \u0D1F\u0D3E\u0D2A\u0D4D\u0D2A\u0D4D \u0D1A\u0D46\u0D2F\u0D4D\u0D2F\u0D41\u0D15",
5097
5174
  view: "\u0D15\u0D3E\u0D23\u0D41\u0D15",
5098
- whatDoYouNeed: "\u0D28\u0D3F\u0D19\u0D4D\u0D19\u0D7E\u0D15\u0D4D\u0D15\u0D4D \u0D0E\u0D28\u0D4D\u0D24\u0D3E\u0D23\u0D4D \u0D35\u0D47\u0D23\u0D4D\u0D1F\u0D24\u0D4D?"
5175
+ whatDoYouNeed: "\u0D28\u0D3F\u0D19\u0D4D\u0D19\u0D7E\u0D15\u0D4D\u0D15\u0D4D \u0D0E\u0D28\u0D4D\u0D24\u0D3E\u0D23\u0D4D \u0D35\u0D47\u0D23\u0D4D\u0D1F\u0D24\u0D4D?",
5176
+ sessionExpiredTitle: "\u0D28\u0D3F\u0D19\u0D4D\u0D19\u0D33\u0D41\u0D1F\u0D46 \u0D38\u0D46\u0D37\u0D7B \u0D15\u0D3E\u0D32\u0D39\u0D30\u0D23\u0D2A\u0D4D\u0D2A\u0D46\u0D1F\u0D4D\u0D1F\u0D41",
5177
+ sessionExpiredDescription: "\u0D24\u0D41\u0D1F\u0D30\u0D3E\u0D7B \u0D26\u0D2F\u0D35\u0D3E\u0D2F\u0D3F \u0D35\u0D40\u0D23\u0D4D\u0D1F\u0D41\u0D02 \u0D38\u0D48\u0D7B \u0D07\u0D7B \u0D1A\u0D46\u0D2F\u0D4D\u0D2F\u0D41\u0D15.",
5178
+ chooseYourProfile: "\u0D28\u0D3F\u0D19\u0D4D\u0D19\u0D33\u0D41\u0D1F\u0D46 \u0D2A\u0D4D\u0D30\u0D4A\u0D2B\u0D48\u0D7D \u0D24\u0D3F\u0D30\u0D1E\u0D4D\u0D1E\u0D46\u0D1F\u0D41\u0D15\u0D4D\u0D15\u0D41\u0D15",
5179
+ loginIdentifierLinkedToMultipleProfiles: "\u0D32\u0D4B\u0D17\u0D3F\u0D7B \u0D10\u0D21\u0D3F \u0D12\u0D28\u0D4D\u0D28\u0D3F\u0D32\u0D27\u0D3F\u0D15\u0D02 \u0D2A\u0D4D\u0D30\u0D4A\u0D2B\u0D48\u0D32\u0D41\u0D15\u0D33\u0D41\u0D2E\u0D3E\u0D2F\u0D3F \u0D2C\u0D28\u0D4D\u0D27\u0D3F\u0D2A\u0D4D\u0D2A\u0D3F\u0D1A\u0D4D\u0D1A\u0D3F\u0D30\u0D3F\u0D15\u0D4D\u0D15\u0D41\u0D28\u0D4D\u0D28\u0D41. \u0D28\u0D3F\u0D19\u0D4D\u0D19\u0D7E \u0D15\u0D3E\u0D23\u0D3E\u0D7B \u0D06\u0D17\u0D4D\u0D30\u0D39\u0D3F\u0D15\u0D4D\u0D15\u0D41\u0D28\u0D4D\u0D28\u0D24\u0D4D \u0D24\u0D3F\u0D30\u0D1E\u0D4D\u0D1E\u0D46\u0D1F\u0D41\u0D15\u0D4D\u0D15\u0D41\u0D15.",
5180
+ userIdLabel: "\u0D09\u0D2A\u0D2F\u0D4B\u0D15\u0D4D\u0D24\u0D43 \u0D10\u0D21\u0D3F: {{id}}",
5181
+ signingInEllipsis: "\u0D38\u0D48\u0D7B \u0D07\u0D7B \u0D1A\u0D46\u0D2F\u0D4D\u0D2F\u0D41\u0D28\u0D4D\u0D28\u0D41\u2026",
5182
+ switchProfile: "\u0D2A\u0D4D\u0D30\u0D4A\u0D2B\u0D48\u0D7D \u0D2E\u0D3E\u0D31\u0D4D\u0D31\u0D41\u0D15"
5099
5183
  };
5100
5184
 
5101
5185
  // src/RedactoPrivacyCenter/locales/mni-Mtei/translation.json
@@ -5509,7 +5593,14 @@ var translation_default13 = {
5509
5593
  submittingAs: "{{email}} \uABD1\uABE3\uABCF\uABC5 \uABCA\uABE5\uABD2\uABE0\uABC2\uABE4",
5510
5594
  tapToChooseFile: "\uABD0\uABE5\uABCF\uABDC \uABC8\uABDF\uABC5\uABD5 \uABC7\uABE6\uABDE \uABC7\uABE7",
5511
5595
  view: "\uABCC\uABE6\uABE1\uABCE",
5512
- whatDoYouNeed: "\uABD1\uABD7\uABE3\uABDD\uABD7 \uABC0\uABD4\uABE4 \uABC7\uABC9\uABE5\uABCF\uABD0\uABD7\uABD5\uABD2\uABE6?"
5596
+ whatDoYouNeed: "\uABD1\uABD7\uABE3\uABDD\uABD7 \uABC0\uABD4\uABE4 \uABC7\uABC9\uABE5\uABCF\uABD0\uABD7\uABD5\uABD2\uABE6?",
5597
+ sessionExpiredTitle: "\uABD1\uABD7\uABE3\uABDD\uABD2\uABE4 \uABC1\uABE6\uABC1\uABDF \uABC2\uABE3\uABCF\uABD4\uABE6",
5598
+ sessionExpiredDescription: "\uABC3\uABC8\uABE5 \uABC6\uABE0\uABCA\uABD4\uABDB\uABC5\uABD5 \uABC6\uABE5\uABC5\uABD5\uABE4\uABD7\uABE8\uABC5 \uABD1\uABC3\uABE8\uABDB \uABCD\uABDF\uABC5 \uABC1\uABE5\uABCF\uABDF \uABCF\uABDF \uABC7\uABE7\uABD5\uABE4\uABCC\uABE8\uABEB",
5599
+ chooseYourProfile: "\u09A8\u09B9\u09BE\u0995\u09CD\u0995\u09C0 \u09AA\u09CD\u09B0\u09CB\u09AB\u09BE\u0987\u09B2 \u0996\u09A8\u09AC\u09BF\u09AF\u09BC\u09C1",
5600
+ loginIdentifierLinkedToMultipleProfiles: "\u09B2\u0997\u0987\u09A8 \u0986\u0987\u09A1\u09BF \u0985\u09B8\u09BF \u09AA\u09CD\u09B0\u09CB\u09AB\u09BE\u0987\u09B2 \u0985\u09AE\u09A6\u0997\u09C0 \u09B9\u09C7\u09A8\u09CD\u09A8\u09BE \u09B2\u09CB\u0987\u09A8\u09A8\u09AC\u09BE \u09B2\u09C8\u0964 \u09A8\u09B9\u09BE\u0995\u09CD\u09A8\u09BE \u09AF\u09BC\u09C7\u0982\u09A8\u09BF\u0982\u09AC\u09BE \u0985\u09A6\u09C1 \u0996\u09A8\u09AC\u09BF\u09AF\u09BC\u09C1\u0964",
5601
+ userIdLabel: "\uABC3\uABE4\uABD1\uABE3\uABCF\uABD5 \uABD1\uABE5\uABCF\uABD7\uABE4: {{id}}",
5602
+ signingInEllipsis: "\u09B8\u09BE\u0987\u09A8 \u0987\u09A8 \u09A4\u09CC\u09B0\u09BF\u2026",
5603
+ switchProfile: "\u09AA\u09CD\u09B0\u09CB\u09AB\u09BE\u0987\u09B2 \u09B9\u09CB\u0982\u09A6\u09CB\u0995-\u0989"
5513
5604
  };
5514
5605
 
5515
5606
  // src/RedactoPrivacyCenter/locales/mr/translation.json
@@ -5923,7 +6014,14 @@ var translation_default14 = {
5923
6014
  submittingAs: "{{email}} \u092E\u094D\u0939\u0923\u0942\u0928 \u0938\u092C\u092E\u093F\u091F \u0915\u0930\u0924 \u0906\u0939\u0947",
5924
6015
  tapToChooseFile: "\u092B\u093E\u0907\u0932 \u0928\u093F\u0935\u0921\u0923\u094D\u092F\u093E\u0938\u093E\u0920\u0940 \u091F\u0945\u092A \u0915\u0930\u093E",
5925
6016
  view: "\u092A\u0939\u093E",
5926
- whatDoYouNeed: "\u0924\u0941\u092E\u094D\u0939\u093E\u0932\u093E \u0915\u093E\u092F \u0939\u0935\u0947 \u0906\u0939\u0947?"
6017
+ whatDoYouNeed: "\u0924\u0941\u092E\u094D\u0939\u093E\u0932\u093E \u0915\u093E\u092F \u0939\u0935\u0947 \u0906\u0939\u0947?",
6018
+ sessionExpiredTitle: "\u0924\u0941\u092E\u091A\u0947 \u0938\u0924\u094D\u0930 \u0938\u0902\u092A\u0932\u0947 \u0906\u0939\u0947",
6019
+ sessionExpiredDescription: "\u0938\u0941\u0930\u0942 \u0920\u0947\u0935\u0923\u094D\u092F\u093E\u0938\u093E\u0920\u0940 \u0915\u0943\u092A\u092F\u093E \u092A\u0941\u0928\u094D\u0939\u093E \u0938\u093E\u0907\u0928 \u0907\u0928 \u0915\u0930\u093E.",
6020
+ chooseYourProfile: "\u0924\u0941\u092E\u091A\u0940 \u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932 \u0928\u093F\u0935\u0921\u093E",
6021
+ loginIdentifierLinkedToMultipleProfiles: "\u0932\u0949\u0917\u093F\u0928 \u0906\u092F\u0921\u0940 \u090F\u0915\u093E\u092A\u0947\u0915\u094D\u0937\u093E \u091C\u093E\u0938\u094D\u0924 \u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932\u0936\u0940 \u091C\u094B\u0921\u0932\u0947\u0932\u093E \u0906\u0939\u0947. \u0924\u0941\u092E\u094D\u0939\u093E\u0932\u093E \u091C\u0940 \u092A\u093E\u0939\u093E\u092F\u091A\u0940 \u0906\u0939\u0947 \u0924\u0940 \u0928\u093F\u0935\u0921\u093E.",
6022
+ userIdLabel: "\u0935\u093E\u092A\u0930\u0915\u0930\u094D\u0924\u093E \u0906\u092F\u0921\u0940: {{id}}",
6023
+ signingInEllipsis: "\u0938\u093E\u0907\u0928 \u0907\u0928 \u0915\u0930\u0924 \u0906\u0939\u0947\u2026",
6024
+ switchProfile: "\u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932 \u092C\u0926\u0932\u093E"
5927
6025
  };
5928
6026
 
5929
6027
  // src/RedactoPrivacyCenter/locales/ne/translation.json
@@ -6337,7 +6435,14 @@ var translation_default15 = {
6337
6435
  submittingAs: "{{email}} \u0915\u094B \u0930\u0942\u092A\u092E\u093E \u092A\u0947\u0936 \u0917\u0930\u094D\u0926\u0948",
6338
6436
  tapToChooseFile: "\u092B\u093E\u0907\u0932 \u091B\u093E\u0928\u094D\u0928 \u091F\u094D\u092F\u093E\u092A \u0917\u0930\u094D\u0928\u0941\u0939\u094B\u0938\u094D",
6339
6437
  view: "\u0939\u0947\u0930\u094D\u0928\u0941\u0939\u094B\u0938\u094D",
6340
- whatDoYouNeed: "\u0924\u092A\u093E\u0908\u0902\u0932\u093E\u0908 \u0915\u0947 \u091A\u093E\u0939\u093F\u0928\u094D\u091B?"
6438
+ whatDoYouNeed: "\u0924\u092A\u093E\u0908\u0902\u0932\u093E\u0908 \u0915\u0947 \u091A\u093E\u0939\u093F\u0928\u094D\u091B?",
6439
+ sessionExpiredTitle: "\u0924\u092A\u093E\u0908\u0902\u0915\u094B \u0938\u0924\u094D\u0930 \u0938\u092E\u093E\u092A\u094D\u0924 \u092D\u090F\u0915\u094B \u091B",
6440
+ sessionExpiredDescription: "\u091C\u093E\u0930\u0940 \u0930\u093E\u0916\u094D\u0928 \u0915\u0943\u092A\u092F\u093E \u092B\u0947\u0930\u093F \u0938\u093E\u0907\u0928 \u0907\u0928 \u0917\u0930\u094D\u0928\u0941\u0939\u094B\u0938\u094D\u0964",
6441
+ chooseYourProfile: "\u0906\u092B\u094D\u0928\u094B \u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932 \u091B\u093E\u0928\u094D\u0928\u0941\u0939\u094B\u0938\u094D",
6442
+ loginIdentifierLinkedToMultipleProfiles: "\u0932\u0917\u0907\u0928 \u0906\u0908\u0921\u0940 \u090F\u0915\u092D\u0928\u094D\u0926\u093E \u092C\u0922\u0940 \u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932\u0938\u0901\u0917 \u091C\u094B\u0921\u093F\u090F\u0915\u094B \u091B\u0964 \u0924\u092A\u093E\u0908\u0902\u0932\u0947 \u0939\u0947\u0930\u094D\u0928 \u091A\u093E\u0939\u0928\u0941\u092D\u090F\u0915\u094B \u091B\u093E\u0928\u094D\u0928\u0941\u0939\u094B\u0938\u094D\u0964",
6443
+ userIdLabel: "\u092A\u094D\u0930\u092F\u094B\u0917\u0915\u0930\u094D\u0924\u093E \u0906\u0908\u0921\u0940: {{id}}",
6444
+ signingInEllipsis: "\u0938\u093E\u0907\u0928 \u0907\u0928 \u0939\u0941\u0901\u0926\u0948\u091B\u2026",
6445
+ switchProfile: "\u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932 \u092C\u0926\u0932\u094D\u0928\u0941\u0939\u094B\u0938\u094D"
6341
6446
  };
6342
6447
 
6343
6448
  // src/RedactoPrivacyCenter/locales/or/translation.json
@@ -6751,7 +6856,14 @@ var translation_default16 = {
6751
6856
  submittingAs: "{{email}} \u0B2D\u0B3E\u0B2C\u0B47 \u0B26\u0B3E\u0B16\u0B32 \u0B15\u0B30\u0B41\u0B1B\u0B28\u0B4D\u0B24\u0B3F",
6752
6857
  tapToChooseFile: "\u0B2B\u0B3E\u0B07\u0B32 \u0B2C\u0B3E\u0B1B\u0B3F\u0B2C\u0B3E\u0B15\u0B41 \u0B1F\u0B4D\u0B5F\u0B3E\u0B2A \u0B15\u0B30\u0B28\u0B4D\u0B24\u0B41",
6753
6858
  view: "\u0B26\u0B47\u0B16\u0B28\u0B4D\u0B24\u0B41",
6754
- whatDoYouNeed: "\u0B06\u0B2A\u0B23 \u0B15\u0B23 \u0B1A\u0B3E\u0B39\u0B3E\u0B28\u0B4D\u0B24\u0B3F?"
6859
+ whatDoYouNeed: "\u0B06\u0B2A\u0B23 \u0B15\u0B23 \u0B1A\u0B3E\u0B39\u0B3E\u0B28\u0B4D\u0B24\u0B3F?",
6860
+ sessionExpiredTitle: "\u0B06\u0B2A\u0B23\u0B19\u0B4D\u0B15 \u0B38\u0B47\u0B38\u0B28\u0B4D \u0B38\u0B2E\u0B3E\u0B2A\u0B4D\u0B24 \u0B39\u0B4B\u0B07\u0B2F\u0B3E\u0B07\u0B1B\u0B3F",
6861
+ sessionExpiredDescription: "\u0B1C\u0B3E\u0B30\u0B3F \u0B30\u0B16\u0B3F\u0B2C\u0B3E\u0B15\u0B41 \u0B26\u0B5F\u0B3E\u0B15\u0B30\u0B3F \u0B2A\u0B41\u0B28\u0B30\u0B4D\u0B2C\u0B3E\u0B30 \u0B38\u0B3E\u0B07\u0B28\u0B4D \u0B07\u0B28\u0B4D \u0B15\u0B30\u0B28\u0B4D\u0B24\u0B41\u0964",
6862
+ chooseYourProfile: "\u0B06\u0B2A\u0B23\u0B19\u0B4D\u0B15 \u0B2A\u0B4D\u0B30\u0B4B\u0B2B\u0B3E\u0B07\u0B32\u0B4D \u0B2C\u0B3E\u0B1B\u0B28\u0B4D\u0B24\u0B41",
6863
+ loginIdentifierLinkedToMultipleProfiles: "\u0B32\u0B17\u0B07\u0B28\u0B4D \u0B06\u0B07\u0B21\u0B3F \u0B0F\u0B15\u0B3E\u0B27\u0B3F\u0B15 \u0B2A\u0B4D\u0B30\u0B4B\u0B2B\u0B3E\u0B07\u0B32\u0B4D \u0B38\u0B39\u0B3F\u0B24 \u0B2F\u0B4B\u0B21\u0B3C\u0B3E\u0B2F\u0B3E\u0B07\u0B1B\u0B3F\u0964 \u0B06\u0B2A\u0B23 \u0B26\u0B47\u0B16\u0B3F\u0B2C\u0B3E\u0B15\u0B41 \u0B1A\u0B3E\u0B39\u0B41\u0B01\u0B25\u0B3F\u0B2C\u0B3E\u0B1F\u0B3F \u0B2C\u0B3E\u0B1B\u0B28\u0B4D\u0B24\u0B41\u0964",
6864
+ userIdLabel: "\u0B2C\u0B4D\u0B5F\u0B2C\u0B39\u0B3E\u0B30\u0B15\u0B3E\u0B30\u0B40 \u0B06\u0B07\u0B21\u0B3F: {{id}}",
6865
+ signingInEllipsis: "\u0B38\u0B3E\u0B07\u0B28\u0B4D \u0B07\u0B28\u0B4D \u0B39\u0B47\u0B09\u0B1B\u0B3F\u2026",
6866
+ switchProfile: "\u0B2A\u0B4D\u0B30\u0B4B\u0B2B\u0B3E\u0B07\u0B32\u0B4D \u0B2C\u0B26\u0B33\u0B3E\u0B28\u0B4D\u0B24\u0B41"
6755
6867
  };
6756
6868
 
6757
6869
  // src/RedactoPrivacyCenter/locales/pa/translation.json
@@ -7165,7 +7277,14 @@ var translation_default17 = {
7165
7277
  submittingAs: "{{email}} \u0A35\u0A1C\u0A4B\u0A02 \u0A38\u0A2C\u0A2E\u0A3F\u0A1F \u0A15\u0A30 \u0A30\u0A39\u0A47 \u0A39\u0A4B",
7166
7278
  tapToChooseFile: "\u0A2B\u0A3E\u0A08\u0A32 \u0A1A\u0A41\u0A23\u0A28 \u0A32\u0A08 \u0A1F\u0A48\u0A2A \u0A15\u0A30\u0A4B",
7167
7279
  view: "\u0A26\u0A47\u0A16\u0A4B",
7168
- whatDoYouNeed: "\u0A24\u0A41\u0A39\u0A3E\u0A28\u0A42\u0A70 \u0A15\u0A40 \u0A1A\u0A3E\u0A39\u0A40\u0A26\u0A3E \u0A39\u0A48?"
7280
+ whatDoYouNeed: "\u0A24\u0A41\u0A39\u0A3E\u0A28\u0A42\u0A70 \u0A15\u0A40 \u0A1A\u0A3E\u0A39\u0A40\u0A26\u0A3E \u0A39\u0A48?",
7281
+ sessionExpiredTitle: "\u0A24\u0A41\u0A39\u0A3E\u0A21\u0A3E \u0A38\u0A48\u0A38\u0A3C\u0A28 \u0A38\u0A2E\u0A3E\u0A2A\u0A24 \u0A39\u0A4B \u0A17\u0A3F\u0A06 \u0A39\u0A48",
7282
+ sessionExpiredDescription: "\u0A1C\u0A3E\u0A30\u0A40 \u0A30\u0A71\u0A16\u0A23 \u0A32\u0A08 \u0A15\u0A3F\u0A30\u0A2A\u0A3E \u0A15\u0A30\u0A15\u0A47 \u0A26\u0A41\u0A2C\u0A3E\u0A30\u0A3E \u0A38\u0A3E\u0A08\u0A28 \u0A07\u0A28 \u0A15\u0A30\u0A4B\u0964",
7283
+ chooseYourProfile: "\u0A06\u0A2A\u0A23\u0A40 \u0A2A\u0A4D\u0A30\u0A4B\u0A2B\u0A3E\u0A08\u0A32 \u0A1A\u0A41\u0A23\u0A4B",
7284
+ loginIdentifierLinkedToMultipleProfiles: "\u0A32\u0A4C\u0A17\u0A07\u0A28 \u0A06\u0A08\u0A21\u0A40 \u0A07\u0A71\u0A15 \u0A24\u0A4B\u0A02 \u0A35\u0A71\u0A27 \u0A2A\u0A4D\u0A30\u0A4B\u0A2B\u0A3E\u0A08\u0A32\u0A3E\u0A02 \u0A28\u0A3E\u0A32 \u0A1C\u0A41\u0A5C\u0A3F\u0A06 \u0A39\u0A4B\u0A07\u0A06 \u0A39\u0A48\u0964 \u0A1C\u0A4B \u0A24\u0A41\u0A38\u0A40\u0A02 \u0A35\u0A47\u0A16\u0A23\u0A3E \u0A1A\u0A3E\u0A39\u0A41\u0A70\u0A26\u0A47 \u0A39\u0A4B \u0A09\u0A39 \u0A1A\u0A41\u0A23\u0A4B\u0964",
7285
+ userIdLabel: "\u0A09\u0A2A\u0A2F\u0A4B\u0A17\u0A15\u0A30\u0A24\u0A3E \u0A06\u0A08\u0A21\u0A40: {{id}}",
7286
+ signingInEllipsis: "\u0A38\u0A3E\u0A08\u0A28 \u0A07\u0A28 \u0A39\u0A4B \u0A30\u0A3F\u0A39\u0A3E \u0A39\u0A48\u2026",
7287
+ switchProfile: "\u0A2A\u0A4D\u0A30\u0A4B\u0A2B\u0A3E\u0A08\u0A32 \u0A2C\u0A26\u0A32\u0A4B"
7169
7288
  };
7170
7289
 
7171
7290
  // src/RedactoPrivacyCenter/locales/sa/translation.json
@@ -7579,7 +7698,14 @@ var translation_default18 = {
7579
7698
  submittingAs: "{{email}} \u0907\u0924\u093F \u0938\u092E\u0930\u094D\u092A\u092F\u0928\u094D",
7580
7699
  tapToChooseFile: "\u0938\u091E\u094D\u091A\u093F\u0915\u093E\u0902 \u091A\u0947\u0924\u0941\u0902 \u0938\u094D\u092A\u0943\u0936\u0924\u0941",
7581
7700
  view: "\u092A\u0936\u094D\u092F",
7582
- whatDoYouNeed: "\u092D\u0935\u0924\u0903 \u0915\u093F\u092E\u094D \u0906\u0935\u0936\u094D\u092F\u0915\u092E\u094D?"
7701
+ whatDoYouNeed: "\u092D\u0935\u0924\u0903 \u0915\u093F\u092E\u094D \u0906\u0935\u0936\u094D\u092F\u0915\u092E\u094D?",
7702
+ sessionExpiredTitle: "\u092D\u0935\u0924\u0903 \u0938\u0924\u094D\u0930\u0902 \u0938\u092E\u093E\u092A\u094D\u0924\u092E\u094D",
7703
+ sessionExpiredDescription: "\u0905\u0928\u0941\u0935\u0930\u094D\u0924\u0928\u093E\u0930\u094D\u0925\u0902 \u0915\u0943\u092A\u092F\u093E \u092A\u0941\u0928\u0903 \u092A\u094D\u0930\u0935\u0947\u0936\u0902 \u0915\u0930\u094B\u0924\u0941\u0964",
7704
+ chooseYourProfile: "\u0938\u094D\u0935\u092A\u094D\u0930\u094B\u092B\u093C\u093E\u0907\u0932\u0902 \u091A\u093F\u0928\u094B\u0924\u0941",
7705
+ loginIdentifierLinkedToMultipleProfiles: "\u092A\u094D\u0930\u0935\u0947\u0936-\u0906\u092F\u0921\u0940 \u090F\u0915\u093E\u0927\u093F\u0915\u0948\u0903 \u092A\u094D\u0930\u094B\u092B\u093C\u093E\u0907\u0932\u0948\u0903 \u0938\u0939 \u0938\u092E\u094D\u092C\u0926\u094D\u0927\u0903 \u0905\u0938\u094D\u0924\u093F\u0964 \u092F\u0924\u094D \u0926\u094D\u0930\u0937\u094D\u091F\u0941\u092E\u094D \u0907\u091A\u094D\u091B\u0924\u093F \u0924\u0924\u094D \u091A\u093F\u0928\u094B\u0924\u0941\u0964",
7706
+ userIdLabel: "\u0909\u092A\u092F\u094B\u0915\u094D\u0924\u0943-\u0906\u092F\u0921\u0940: {{id}}",
7707
+ signingInEllipsis: "\u092A\u094D\u0930\u0935\u0947\u0936\u0903 \u0915\u094D\u0930\u093F\u092F\u0924\u0947\u2026",
7708
+ switchProfile: "\u092A\u094D\u0930\u094B\u092B\u093C\u093E\u0907\u0932\u0902 \u092A\u0930\u093F\u0935\u0930\u094D\u0924\u092F\u0924\u0941"
7583
7709
  };
7584
7710
 
7585
7711
  // src/RedactoPrivacyCenter/locales/sat/translation.json
@@ -7993,7 +8119,14 @@ var translation_default19 = {
7993
8119
  submittingAs: "{{email}} \u1C5E\u1C6E\u1C60\u1C5F\u1C5B\u1C6E \u1C61\u1C5A\u1C62\u1C5F \u1C6E\u1C6B\u1C5F",
7994
8120
  tapToChooseFile: "\u1C6F\u1C77\u1C5F\u1C6D\u1C64\u1C5E \u1C75\u1C5F\u1C6A\u1C77\u1C5F\u1C63 \u1C5E\u1C5F\u1C79\u1C5C\u1C64\u1C6B \u1C74\u1C6E\u1C6F \u1C62\u1C6E",
7995
8121
  view: "\u1C67\u1C6E\u1C5E \u1C62\u1C6E",
7996
- whatDoYouNeed: "\u1C5F\u1C62 \u1C6A\u1C6E\u1C6B \u1C5E\u1C5F\u1C79\u1C60\u1C5B\u1C64?"
8122
+ whatDoYouNeed: "\u1C5F\u1C62 \u1C6A\u1C6E\u1C6B \u1C5E\u1C5F\u1C79\u1C60\u1C5B\u1C64?",
8123
+ sessionExpiredTitle: "\u1C5F\u1C62\u1C5F\u1C5C \u1C65\u1C6E\u1C65\u1C5A\u1C71 \u1C62\u1C69\u1C6A\u1C5F\u1C79\u1C6B\u1C6E\u1C71\u1C5F",
8124
+ sessionExpiredDescription: "\u1C5E\u1C5F\u1C66\u1C5F \u1C6A\u1C5F\u1C5E\u1C5F\u1C63 \u1C5E\u1C5F\u1C79\u1C5C\u1C64\u1C6B \u1C6B\u1C5F\u1C6D\u1C5F \u1C60\u1C5F\u1C5B\u1C6E \u1C6B\u1C73\u1C66\u1C72\u1C5F \u1C65\u1C5F\u1C6D\u1C71 \u1C64\u1C71 \u1C62\u1C6E\u1C7E",
8125
+ chooseYourProfile: "\u1C5F\u1C62\u1C5F\u1C5C \u1C6F\u1C68\u1C73\u1C6F\u1C77\u1C5F\u1C6D\u1C64\u1C5E \u1C75\u1C5F\u1C6A\u1C77\u1C5F\u1C63 \u1C62\u1C6E",
8126
+ loginIdentifierLinkedToMultipleProfiles: "\u1C5E\u1C5A\u1C5C\u1C64\u1C71 \u1C5F\u1C6D\u1C70\u1C64 \u1C6B\u1C5A \u1C62\u1C64\u1C6B \u1C60\u1C77\u1C5A\u1C71 \u1C70\u1C77\u1C6E\u1C68 \u1C6F\u1C68\u1C73\u1C6F\u1C77\u1C5F\u1C6D\u1C64\u1C5E \u1C65\u1C5F\u1C76 \u1C61\u1C69\u1C70\u1C5F\u1C79\u1C63 \u1C5F\u1C60\u1C5F\u1C71\u1C5F\u1C7E \u1C5F\u1C62 \u1C67\u1C6E\u1C5E \u1C65\u1C5F\u1C71\u1C5F\u1C62 \u1C5A\u1C71\u1C5F \u1C75\u1C5F\u1C6A\u1C77\u1C5F\u1C63 \u1C62\u1C6E\u1C7E",
8127
+ userIdLabel: "\u1C75\u1C6E\u1C75\u1C77\u1C5F\u1C68\u1C64\u1C6D\u1C5F\u1C79 \u1C5F\u1C6D\u1C70\u1C64: {{id}}",
8128
+ signingInEllipsis: "\u1C65\u1C5F\u1C6D\u1C64\u1C71 \u1C64\u1C71 \u1C6E\u1C6B\u1C5F\u1C6D\u2026",
8129
+ switchProfile: "\u1C6F\u1C68\u1C73\u1C6F\u1C77\u1C5F\u1C6D\u1C64\u1C5E \u1C75\u1C5A\u1C6B\u1C5A\u1C5E \u1C62\u1C6E"
7997
8130
  };
7998
8131
 
7999
8132
  // src/RedactoPrivacyCenter/locales/sd/translation.json
@@ -8407,7 +8540,14 @@ var translation_default20 = {
8407
8540
  submittingAs: "{{email}} \u0637\u0648\u0631 \u062C\u0645\u0639 \u06AA\u0631\u064A \u0631\u0647\u064A\u0627 \u0622\u0647\u064A\u0648",
8408
8541
  tapToChooseFile: "\u0641\u0627\u0626\u0644 \u0686\u0648\u0646\u068A\u06BB \u0644\u0627\u0621\u0650 \u067D\u064A\u067E \u06AA\u0631\u064A\u0648",
8409
8542
  view: "\u068F\u0633\u0648",
8410
- whatDoYouNeed: "\u062A\u0648\u0647\u0627\u0646 \u06A9\u064A \u0687\u0627 \u06AF\u0647\u0631\u062C\u064A\u061F"
8543
+ whatDoYouNeed: "\u062A\u0648\u0647\u0627\u0646 \u06A9\u064A \u0687\u0627 \u06AF\u0647\u0631\u062C\u064A\u061F",
8544
+ sessionExpiredTitle: "\u062A\u0648\u0647\u0627\u0646 \u062C\u0648 \u0633\u064A\u0634\u0646 \u062E\u062A\u0645 \u067F\u064A \u0648\u064A\u0648 \u0622\u0647\u064A",
8545
+ sessionExpiredDescription: "\u062C\u0627\u0631\u064A \u0631\u06A9\u06BB \u0644\u0627\u0621\u0650 \u0645\u0647\u0631\u0628\u0627\u0646\u064A \u06AA\u0631\u064A \u067B\u064A\u0647\u0631 \u0633\u0627\u0626\u0646 \u0627\u0646 \u06AA\u0631\u064A\u0648.",
8546
+ chooseYourProfile: "\u067E\u0646\u0647\u0646\u062C\u0648 \u067E\u0631\u0648\u0641\u0627\u0626\u0644 \u0686\u0648\u0646\u068A\u064A\u0648",
8547
+ loginIdentifierLinkedToMultipleProfiles: "\u0644\u0627\u06AF \u0627\u0646 \u0622\u0626\u064A\u068A\u064A \u0647\u06AA \u06A9\u0627\u0646 \u0648\u068C\u064A\u06AA \u067E\u0631\u0648\u0641\u0627\u0626\u0644\u0646 \u0633\u0627\u0646 \u06B3\u0646\u068D\u064A\u0644 \u0622\u0647\u064A. \u062C\u064A\u06AA\u0648 \u062A\u0648\u0647\u0627\u0646 \u068F\u0633\u06BB \u0686\u0627\u0647\u064A\u0648 \u067F\u0627 \u0627\u0647\u0648 \u0686\u0648\u0646\u068A\u064A\u0648.",
8548
+ userIdLabel: "\u064A\u0648\u0632\u0631 \u0622\u0626\u064A\u068A\u064A: {{id}}",
8549
+ signingInEllipsis: "\u0633\u0627\u0626\u0646 \u0627\u0646 \u067F\u064A \u0631\u0647\u064A\u0648 \u0622\u0647\u064A\u2026",
8550
+ switchProfile: "\u067E\u0631\u0648\u0641\u0627\u0626\u0644 \u062A\u0628\u062F\u064A\u0644 \u06AA\u0631\u064A\u0648"
8411
8551
  };
8412
8552
 
8413
8553
  // src/RedactoPrivacyCenter/locales/ta/translation.json
@@ -8821,7 +8961,14 @@ var translation_default21 = {
8821
8961
  submittingAs: "{{email}} \u0B86\u0B95 \u0B9A\u0BAE\u0BB0\u0BCD\u0BAA\u0BCD\u0BAA\u0BBF\u0B95\u0BCD\u0B95\u0BBF\u0BB1\u0BC0\u0BB0\u0BCD\u0B95\u0BB3\u0BCD",
8822
8962
  tapToChooseFile: "\u0B95\u0BCB\u0BAA\u0BCD\u0BAA\u0BC8\u0BA4\u0BCD \u0BA4\u0BC7\u0BB0\u0BCD\u0BA8\u0BCD\u0BA4\u0BC6\u0B9F\u0BC1\u0B95\u0BCD\u0B95 \u0BA4\u0B9F\u0BCD\u0B9F\u0BB5\u0BC1\u0BAE\u0BCD",
8823
8963
  view: "\u0BAA\u0BBE\u0BB0\u0BCD",
8824
- whatDoYouNeed: "\u0B89\u0B99\u0BCD\u0B95\u0BB3\u0BC1\u0B95\u0BCD\u0B95\u0BC1 \u0B8E\u0BA9\u0BCD\u0BA9 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD?"
8964
+ whatDoYouNeed: "\u0B89\u0B99\u0BCD\u0B95\u0BB3\u0BC1\u0B95\u0BCD\u0B95\u0BC1 \u0B8E\u0BA9\u0BCD\u0BA9 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD?",
8965
+ sessionExpiredTitle: "\u0B89\u0B99\u0BCD\u0B95\u0BB3\u0BCD \u0B85\u0BAE\u0BB0\u0BCD\u0BB5\u0BC1 \u0B95\u0BBE\u0BB2\u0BBE\u0BB5\u0BA4\u0BBF\u0BAF\u0BBE\u0B95\u0BBF\u0BB5\u0BBF\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1",
8966
+ sessionExpiredDescription: "\u0BA4\u0BCA\u0B9F\u0BB0\u0BCD\u0BB5\u0BA4\u0BB1\u0BCD\u0B95\u0BC1 \u0BA4\u0BAF\u0BB5\u0BC1\u0B9A\u0BC6\u0BAF\u0BCD\u0BA4\u0BC1 \u0BAE\u0BC0\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD \u0B89\u0BB3\u0BCD\u0BA8\u0BC1\u0BB4\u0BC8\u0BAF\u0BB5\u0BC1\u0BAE\u0BCD.",
8967
+ chooseYourProfile: "\u0B89\u0B99\u0BCD\u0B95\u0BB3\u0BCD \u0B9A\u0BC1\u0BAF\u0BB5\u0BBF\u0BB5\u0BB0\u0BA4\u0BCD\u0BA4\u0BC8\u0BA4\u0BCD \u0BA4\u0BC7\u0BB0\u0BCD\u0BA8\u0BCD\u0BA4\u0BC6\u0B9F\u0BC1\u0B95\u0BCD\u0B95\u0BB5\u0BC1\u0BAE\u0BCD",
8968
+ loginIdentifierLinkedToMultipleProfiles: "\u0B89\u0BB3\u0BCD\u0BA8\u0BC1\u0BB4\u0BC8\u0BB5\u0BC1 \u0B90\u0B9F\u0BBF \u0B92\u0BA9\u0BCD\u0BB1\u0BC1\u0B95\u0BCD\u0B95\u0BC1 \u0BAE\u0BC7\u0BB1\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F \u0B9A\u0BC1\u0BAF\u0BB5\u0BBF\u0BB5\u0BB0\u0B99\u0BCD\u0B95\u0BB3\u0BC1\u0B9F\u0BA9\u0BCD \u0B87\u0BA3\u0BC8\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BC1\u0BB3\u0BCD\u0BB3\u0BA4\u0BC1. \u0BA8\u0BC0\u0B99\u0BCD\u0B95\u0BB3\u0BCD \u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95 \u0BB5\u0BBF\u0BB0\u0BC1\u0BAE\u0BCD\u0BAA\u0BC1\u0BB5\u0BA4\u0BC8\u0BA4\u0BCD \u0BA4\u0BC7\u0BB0\u0BCD\u0BA8\u0BCD\u0BA4\u0BC6\u0B9F\u0BC1\u0B95\u0BCD\u0B95\u0BB5\u0BC1\u0BAE\u0BCD.",
8969
+ userIdLabel: "\u0BAA\u0BAF\u0BA9\u0BB0\u0BCD \u0B90\u0B9F\u0BBF: {{id}}",
8970
+ signingInEllipsis: "\u0B89\u0BB3\u0BCD\u0BA8\u0BC1\u0BB4\u0BC8\u0B95\u0BBF\u0BB1\u0BA4\u0BC1\u2026",
8971
+ switchProfile: "\u0B9A\u0BC1\u0BAF\u0BB5\u0BBF\u0BB5\u0BB0\u0BA4\u0BCD\u0BA4\u0BC8 \u0BAE\u0BBE\u0BB1\u0BCD\u0BB1\u0BC1"
8825
8972
  };
8826
8973
 
8827
8974
  // src/RedactoPrivacyCenter/locales/te/translation.json
@@ -9235,7 +9382,14 @@ var translation_default22 = {
9235
9382
  submittingAs: "{{email}} \u0C17\u0C3E \u0C38\u0C2E\u0C30\u0C4D\u0C2A\u0C3F\u0C38\u0C4D\u0C24\u0C41\u0C28\u0C4D\u0C28\u0C3E\u0C30\u0C41",
9236
9383
  tapToChooseFile: "\u0C2B\u0C48\u0C32\u0C4D\u200C\u0C28\u0C41 \u0C0E\u0C02\u0C1A\u0C41\u0C15\u0C4B\u0C35\u0C21\u0C3E\u0C28\u0C3F\u0C15\u0C3F \u0C28\u0C4A\u0C15\u0C4D\u0C15\u0C02\u0C21\u0C3F",
9237
9384
  view: "\u0C35\u0C40\u0C15\u0C4D\u0C37\u0C3F\u0C02\u0C1A\u0C02\u0C21\u0C3F",
9238
- whatDoYouNeed: "\u0C2E\u0C40\u0C15\u0C41 \u0C0F\u0C2E\u0C3F \u0C15\u0C3E\u0C35\u0C3E\u0C32\u0C3F?"
9385
+ whatDoYouNeed: "\u0C2E\u0C40\u0C15\u0C41 \u0C0F\u0C2E\u0C3F \u0C15\u0C3E\u0C35\u0C3E\u0C32\u0C3F?",
9386
+ sessionExpiredTitle: "\u0C2E\u0C40 \u0C38\u0C46\u0C37\u0C28\u0C4D \u0C17\u0C21\u0C41\u0C35\u0C41 \u0C2E\u0C41\u0C17\u0C3F\u0C38\u0C3F\u0C02\u0C26\u0C3F",
9387
+ sessionExpiredDescription: "\u0C15\u0C4A\u0C28\u0C38\u0C3E\u0C17\u0C3F\u0C02\u0C1A\u0C21\u0C3E\u0C28\u0C3F\u0C15\u0C3F \u0C26\u0C2F\u0C1A\u0C47\u0C38\u0C3F \u0C2E\u0C33\u0C4D\u0C32\u0C40 \u0C38\u0C48\u0C28\u0C4D \u0C07\u0C28\u0C4D \u0C1A\u0C47\u0C2F\u0C02\u0C21\u0C3F.",
9388
+ chooseYourProfile: "\u0C2E\u0C40 \u0C2A\u0C4D\u0C30\u0C4A\u0C2B\u0C48\u0C32\u0C4D\u200C\u0C28\u0C41 \u0C0E\u0C02\u0C1A\u0C41\u0C15\u0C4B\u0C02\u0C21\u0C3F",
9389
+ loginIdentifierLinkedToMultipleProfiles: "\u0C32\u0C3E\u0C17\u0C3F\u0C28\u0C4D \u0C10\u0C21\u0C3F \u0C12\u0C15\u0C1F\u0C3F \u0C15\u0C02\u0C1F\u0C47 \u0C0E\u0C15\u0C4D\u0C15\u0C41\u0C35 \u0C2A\u0C4D\u0C30\u0C4A\u0C2B\u0C48\u0C32\u0C4D\u200C\u0C32\u0C24\u0C4B \u0C05\u0C28\u0C41\u0C38\u0C02\u0C27\u0C3E\u0C28\u0C3F\u0C02\u0C1A\u0C2C\u0C21\u0C3F\u0C02\u0C26\u0C3F. \u0C2E\u0C40\u0C30\u0C41 \u0C1A\u0C42\u0C21\u0C3E\u0C32\u0C28\u0C41\u0C15\u0C41\u0C02\u0C1F\u0C41\u0C28\u0C4D\u0C28\u0C26\u0C3E\u0C28\u0C4D\u0C28\u0C3F \u0C0E\u0C02\u0C1A\u0C41\u0C15\u0C4B\u0C02\u0C21\u0C3F.",
9390
+ userIdLabel: "\u0C35\u0C3F\u0C28\u0C3F\u0C2F\u0C4B\u0C17\u0C26\u0C3E\u0C30\u0C41 \u0C10\u0C21\u0C3F: {{id}}",
9391
+ signingInEllipsis: "\u0C38\u0C48\u0C28\u0C4D \u0C07\u0C28\u0C4D \u0C05\u0C35\u0C41\u0C24\u0C4B\u0C02\u0C26\u0C3F\u2026",
9392
+ switchProfile: "\u0C2A\u0C4D\u0C30\u0C4A\u0C2B\u0C48\u0C32\u0C4D\u200C\u0C28\u0C41 \u0C2E\u0C3E\u0C30\u0C4D\u0C1A\u0C02\u0C21\u0C3F"
9239
9393
  };
9240
9394
 
9241
9395
  // src/RedactoPrivacyCenter/locales/ur/translation.json
@@ -9649,7 +9803,14 @@ var translation_default23 = {
9649
9803
  submittingAs: "{{email}} \u06A9\u06D2 \u0637\u0648\u0631 \u067E\u0631 \u062C\u0645\u0639 \u06A9\u0631 \u0631\u06C1\u06D2 \u06C1\u06CC\u06BA",
9650
9804
  tapToChooseFile: "\u0641\u0627\u0626\u0644 \u0645\u0646\u062A\u062E\u0628 \u06A9\u0631\u0646\u06D2 \u06A9\u06D2 \u0644\u06CC\u06D2 \u0679\u06CC\u067E \u06A9\u0631\u06CC\u06BA",
9651
9805
  view: "\u062F\u06CC\u06A9\u06BE\u06CC\u06BA",
9652
- whatDoYouNeed: "\u0622\u067E \u06A9\u0648 \u06A9\u06CC\u0627 \u0686\u0627\u06C1\u06CC\u06D2\u061F"
9806
+ whatDoYouNeed: "\u0622\u067E \u06A9\u0648 \u06A9\u06CC\u0627 \u0686\u0627\u06C1\u06CC\u06D2\u061F",
9807
+ sessionExpiredTitle: "\u0622\u067E \u06A9\u0627 \u0633\u06CC\u0634\u0646 \u062E\u062A\u0645 \u06C1\u0648 \u06AF\u06CC\u0627 \u06C1\u06D2",
9808
+ sessionExpiredDescription: "\u062C\u0627\u0631\u06CC \u0631\u06A9\u06BE\u0646\u06D2 \u06A9\u06D2 \u0644\u06CC\u06D2 \u0628\u0631\u0627\u06C1 \u06A9\u0631\u0645 \u062F\u0648\u0628\u0627\u0631\u06C1 \u0633\u0627\u0626\u0646 \u0627\u0650\u0646 \u06A9\u0631\u06CC\u06BA\u06D4",
9809
+ chooseYourProfile: "\u0627\u067E\u0646\u06CC \u067E\u0631\u0648\u0641\u0627\u0626\u0644 \u0645\u0646\u062A\u062E\u0628 \u06A9\u0631\u06CC\u06BA",
9810
+ loginIdentifierLinkedToMultipleProfiles: "\u0644\u0627\u06AF \u0627\u0646 \u0622\u0626\u06CC \u0688\u06CC \u0627\u06CC\u06A9 \u0633\u06D2 \u0632\u06CC\u0627\u062F\u06C1 \u067E\u0631\u0648\u0641\u0627\u0626\u0644\u0632 \u0633\u06D2 \u0645\u0646\u0633\u0644\u06A9 \u06C1\u06D2\u06D4 \u062C\u0633\u06D2 \u0622\u067E \u062F\u06CC\u06A9\u06BE\u0646\u0627 \u0686\u0627\u06C1\u062A\u06D2 \u06C1\u06CC\u06BA \u0627\u0633\u06D2 \u0645\u0646\u062A\u062E\u0628 \u06A9\u0631\u06CC\u06BA\u06D4",
9811
+ userIdLabel: "\u0635\u0627\u0631\u0641 \u0622\u0626\u06CC \u0688\u06CC: {{id}}",
9812
+ signingInEllipsis: "\u0633\u0627\u0626\u0646 \u0627\u0646 \u06C1\u0648 \u0631\u06C1\u0627 \u06C1\u06D2\u2026",
9813
+ switchProfile: "\u067E\u0631\u0648\u0641\u0627\u0626\u0644 \u062A\u0628\u062F\u06CC\u0644 \u06A9\u0631\u06CC\u06BA"
9653
9814
  };
9654
9815
 
9655
9816
  // src/RedactoPrivacyCenter/lib/locales.ts
@@ -9894,6 +10055,26 @@ var sandboxQueryIdentity = () => sandboxBodyIdentity();
9894
10055
  var sandboxContact = () => sandboxConfig ? sandboxConfig.ucic || sandboxConfig.subject : null;
9895
10056
 
9896
10057
  // src/RedactoPrivacyCenter/api/fetcher.ts
10058
+ var ApiError = class _ApiError extends Error {
10059
+ constructor(message, options = {}) {
10060
+ super(message);
10061
+ this.name = "ApiError";
10062
+ this.status = options.status;
10063
+ this.detail = options.detail;
10064
+ Object.setPrototypeOf(this, _ApiError.prototype);
10065
+ }
10066
+ };
10067
+ var TERMINAL_REFRESH_STATUSES = /* @__PURE__ */ new Set([400, 401, 403, 422]);
10068
+ function isTerminalRefreshError(error) {
10069
+ const e = error;
10070
+ if (!e) return false;
10071
+ if (typeof e.status === "number") {
10072
+ return TERMINAL_REFRESH_STATUSES.has(e.status);
10073
+ }
10074
+ const message = (typeof e.message === "string" ? e.message : "").toLowerCase();
10075
+ if (!message) return false;
10076
+ return message.includes("expired") || message.includes("revoked") || message.includes("not found") || message.includes("already used") || message.includes("invalid refresh token") || message.includes("unauthorized") || message.includes("[401]") || message.includes("[403]");
10077
+ }
9897
10078
  async function apiFetch(url, options = {}) {
9898
10079
  const { getAuthToken, headers = {}, ...fetchOptions } = options;
9899
10080
  const requestHeaders = new Headers();
@@ -9958,7 +10139,7 @@ async function apiFetch(url, options = {}) {
9958
10139
  } catch {
9959
10140
  }
9960
10141
  }
9961
- throw new Error(errorMessage);
10142
+ throw new ApiError(errorMessage, { status: response.status });
9962
10143
  }
9963
10144
  const contentLength = response.headers.get("Content-Length");
9964
10145
  const contentType = response.headers.get("Content-Type") || "";
@@ -10376,6 +10557,32 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
10376
10557
  authToken: authToken || baseRequest.authToken
10377
10558
  });
10378
10559
  },
10560
+ /**
10561
+ * List all data principals that share this session's contact
10562
+ * (shared-contact profile picker). Identity is derived server-side from the
10563
+ * JWT — the caller sends nothing but its bearer token.
10564
+ */
10565
+ async listIdentities(baseRequest, authToken, options) {
10566
+ const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/identities`;
10567
+ return privacyCenterApiFetch(url, {
10568
+ ...options,
10569
+ authToken: authToken || baseRequest.authToken
10570
+ });
10571
+ },
10572
+ /**
10573
+ * Re-scope the session to a chosen principal uuid (must be one of the
10574
+ * principals sharing this session's contact). Returns fresh access/refresh
10575
+ * tokens scoped to that principal.
10576
+ */
10577
+ async selectPrincipal(baseRequest, principalUuid, authToken, options) {
10578
+ const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/identities/select`;
10579
+ return privacyCenterApiFetch(url, {
10580
+ ...options,
10581
+ method: "POST",
10582
+ body: JSON.stringify({ uuid: principalUuid }),
10583
+ authToken: authToken || baseRequest.authToken
10584
+ });
10585
+ },
10379
10586
  /**
10380
10587
  * Get receipts (privacy center)
10381
10588
  */
@@ -11672,6 +11879,40 @@ var acknowledgeNotification = async (organizationId, workspaceId, notificationUu
11672
11879
  var isRefreshing = false;
11673
11880
  var refreshPromise = null;
11674
11881
  var TOKEN_EXPIRY_BUFFER_SECONDS = 30;
11882
+ var deadRefreshToken = null;
11883
+ var transientRefreshFailureUntil = 0;
11884
+ var transientRefreshBackoffMs = 0;
11885
+ var MIN_REFRESH_BACKOFF_MS = 3e4;
11886
+ var MAX_REFRESH_BACKOFF_MS = 3e5;
11887
+ var sessionExpiredListener = null;
11888
+ var setSessionExpiredListener = (fn) => {
11889
+ sessionExpiredListener = fn;
11890
+ };
11891
+ var notifySessionExpired = () => {
11892
+ sessionExpiredListener == null ? void 0 : sessionExpiredListener();
11893
+ };
11894
+ var activeRefreshToken = (authContext) => (authContext == null ? void 0 : authContext.refreshToken) || getStoredValue("refresh_token") || null;
11895
+ var isRefreshBlocked = (authContext) => {
11896
+ const active = activeRefreshToken(authContext);
11897
+ if (active !== null && active === deadRefreshToken) return true;
11898
+ return Date.now() < transientRefreshFailureUntil;
11899
+ };
11900
+ var noteTransientRefreshFailure = () => {
11901
+ transientRefreshBackoffMs = Math.min(
11902
+ Math.max(transientRefreshBackoffMs * 2, MIN_REFRESH_BACKOFF_MS),
11903
+ MAX_REFRESH_BACKOFF_MS
11904
+ );
11905
+ transientRefreshFailureUntil = Date.now() + transientRefreshBackoffMs;
11906
+ };
11907
+ var markRefreshTokenDead = (token) => {
11908
+ if (token) deadRefreshToken = token;
11909
+ notifySessionExpired();
11910
+ };
11911
+ var resetRefreshCircuit = () => {
11912
+ deadRefreshToken = null;
11913
+ transientRefreshFailureUntil = 0;
11914
+ transientRefreshBackoffMs = 0;
11915
+ };
11675
11916
  var tokenStore = {};
11676
11917
  var getStoredValue = (key) => {
11677
11918
  var _a3;
@@ -11727,6 +11968,14 @@ var decodeJwtToken = (token) => {
11727
11968
  return null;
11728
11969
  }
11729
11970
  };
11971
+ var resolveContactFromJwt = (decoded) => {
11972
+ if (!decoded) {
11973
+ return null;
11974
+ }
11975
+ const userData = decoded.user_data || {};
11976
+ const candidate = decoded.contact || decoded.primary_email || userData.primary_email || userData.primary_mobile || userData.org_user_id;
11977
+ return typeof candidate === "string" && candidate.trim() !== "" ? candidate : null;
11978
+ };
11730
11979
  var isJwtExpired = (token, bufferSeconds = 30) => {
11731
11980
  if (!token || typeof token !== "string") return true;
11732
11981
  try {
@@ -11762,6 +12011,7 @@ var ensureValidToken = async (organizationId, workspaceId, _slug, authContext, c
11762
12011
  return accessToken;
11763
12012
  }
11764
12013
  if (isRefreshing && refreshPromise) return refreshPromise;
12014
+ if (isRefreshBlocked(authContext)) return null;
11765
12015
  isRefreshing = true;
11766
12016
  refreshPromise = performTokenRefresh(
11767
12017
  organizationId,
@@ -11789,6 +12039,7 @@ var performTokenRefresh = async (organizationId, workspaceId, authContext, conse
11789
12039
  if (!refreshToken || typeof refreshToken !== "string" || refreshToken.trim() === "") {
11790
12040
  if (authContext == null ? void 0 : authContext.onError)
11791
12041
  authContext.onError(new Error("No refresh token available"));
12042
+ notifySessionExpired();
11792
12043
  signOutPrivacyCenter();
11793
12044
  return null;
11794
12045
  }
@@ -11818,11 +12069,13 @@ var performTokenRefresh = async (organizationId, workspaceId, authContext, conse
11818
12069
  if (newRefreshToken)
11819
12070
  setStoredValue("refresh_token", newRefreshToken);
11820
12071
  }
12072
+ resetRefreshCircuit();
11821
12073
  return newAccessToken;
11822
12074
  }
11823
12075
  }
11824
12076
  if (authContext == null ? void 0 : authContext.onError)
11825
12077
  authContext.onError(new Error("Refresh token expired or revoked"));
12078
+ markRefreshTokenDead(refreshToken);
11826
12079
  signOutPrivacyCenter();
11827
12080
  return null;
11828
12081
  } catch (error) {
@@ -11830,7 +12083,12 @@ var performTokenRefresh = async (organizationId, workspaceId, authContext, conse
11830
12083
  authContext.onError(
11831
12084
  error instanceof Error ? error : new Error(String(error))
11832
12085
  );
11833
- signOutPrivacyCenter();
12086
+ if (isTerminalRefreshError(error)) {
12087
+ markRefreshTokenDead(refreshToken);
12088
+ signOutPrivacyCenter();
12089
+ } else {
12090
+ noteTransientRefreshFailure();
12091
+ }
11834
12092
  return null;
11835
12093
  }
11836
12094
  };
@@ -11877,10 +12135,9 @@ function extractJwtAuthData(token) {
11877
12135
  if (!decoded) {
11878
12136
  return { email: null, organizationId: null, workspaceId: null, organizationName: null };
11879
12137
  }
11880
- const userData = decoded.user_data;
11881
- const userEmail = decoded.contact || decoded.primary_email || decoded.email || decoded.user_uuid || decoded.sub || (userData && typeof userData === "object" ? userData.primary_email || userData.email || userData.contact : null) || null;
12138
+ const contact = resolveContactFromJwt(decoded) || getStoredValue("email");
11882
12139
  return {
11883
- email: typeof userEmail === "string" ? userEmail : null,
12140
+ email: typeof contact === "string" && contact.trim() !== "" ? contact : null,
11884
12141
  organizationId: decoded.organisation_uuid || null,
11885
12142
  workspaceId: decoded.workspace_uuid || null,
11886
12143
  organizationName: decoded.organisation_name || null
@@ -12254,8 +12511,17 @@ function DataAvailabilityProvider({ children }) {
12254
12511
  mountedRef.current = false;
12255
12512
  };
12256
12513
  }, []);
12514
+ (0, import_react7.useEffect)(() => {
12515
+ setSessionExpiredListener(() => {
12516
+ if (!mountedRef.current) return;
12517
+ runIdRef.current += 1;
12518
+ setStatus("session-expired");
12519
+ });
12520
+ return () => setSessionExpiredListener(null);
12521
+ }, []);
12257
12522
  const runCheck = (0, import_react7.useCallback)(async () => {
12258
12523
  if (!organizationId || !workspaceId) return;
12524
+ if (isRefreshBlocked(authContext)) return;
12259
12525
  const runId = ++runIdRef.current;
12260
12526
  setStatus("checking");
12261
12527
  const contact = email;
@@ -18295,6 +18561,7 @@ function useUnreadCount() {
18295
18561
  const loadRef = (0, import_react32.useRef)();
18296
18562
  loadRef.current = async () => {
18297
18563
  if (!organizationId || !workspaceId) return;
18564
+ if (isRefreshBlocked(authContext)) return;
18298
18565
  const res = await fetchUnreadCount(organizationId, workspaceId, authContext, consentClient);
18299
18566
  if (res && typeof res.count === "number") setCount(res.count);
18300
18567
  };
@@ -18620,17 +18887,255 @@ function PrivacyCenterEmptyState() {
18620
18887
  return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(PCEmpty, { iconName: "shield", title: t("noDataTitle"), description: t("noDataDescription") });
18621
18888
  }
18622
18889
 
18890
+ // src/RedactoPrivacyCenter/components/PrivacyCenterSessionExpired.tsx
18891
+ var import_react_i18next21 = require("react-i18next");
18892
+ var import_jsx_runtime50 = require("react/jsx-runtime");
18893
+ function PrivacyCenterSessionExpired() {
18894
+ const { t } = (0, import_react_i18next21.useTranslation)();
18895
+ return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
18896
+ PCEmpty,
18897
+ {
18898
+ iconName: "shield",
18899
+ title: t("sessionExpiredTitle"),
18900
+ description: t("sessionExpiredDescription")
18901
+ }
18902
+ );
18903
+ }
18904
+
18905
+ // src/RedactoPrivacyCenter/components/SelectUserGate.tsx
18906
+ var import_react36 = require("react");
18907
+ var import_react_native51 = require("react-native");
18908
+
18909
+ // src/RedactoPrivacyCenter/context/ProfileSwitchContext.tsx
18910
+ var import_react35 = require("react");
18911
+ var import_jsx_runtime51 = require("react/jsx-runtime");
18912
+ var ProfileSwitchContext = (0, import_react35.createContext)({
18913
+ switchProfile: null
18914
+ });
18915
+ function ProfileSwitchProvider({
18916
+ switchProfile,
18917
+ children
18918
+ }) {
18919
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(ProfileSwitchContext.Provider, { value: { switchProfile }, children });
18920
+ }
18921
+ function useProfileSwitch() {
18922
+ return (0, import_react35.useContext)(ProfileSwitchContext);
18923
+ }
18924
+
18925
+ // src/RedactoPrivacyCenter/components/SelectUser.tsx
18926
+ var import_react_native50 = require("react-native");
18927
+ var import_react_i18next22 = require("react-i18next");
18928
+
18929
+ // src/RedactoPrivacyCenter/lib/identityLabels.ts
18930
+ var identityPrimaryValue = (candidate) => {
18931
+ const orgUserId = candidate.org_user_id || "";
18932
+ const email = candidate.primary_email || "";
18933
+ const mobile = candidate.primary_mobile || "";
18934
+ return { orgUserId, fallback: email || mobile || candidate.uuid };
18935
+ };
18936
+ var identitySecondaryLabels = (candidate, primaryLabel) => {
18937
+ const email = candidate.primary_email || "";
18938
+ const mobile = candidate.primary_mobile || "";
18939
+ return [email, mobile].filter(
18940
+ (value, index, all) => value !== "" && value !== primaryLabel && all.indexOf(value) === index
18941
+ );
18942
+ };
18943
+ var selectableIdentities = (candidates) => candidates.filter((candidate) => Boolean(candidate.uuid));
18944
+
18945
+ // src/RedactoPrivacyCenter/components/SelectUser.tsx
18946
+ var import_jsx_runtime52 = require("react/jsx-runtime");
18947
+ var SelectUser = ({
18948
+ candidates,
18949
+ onSelect,
18950
+ busyUuid,
18951
+ error
18952
+ }) => {
18953
+ const { t } = (0, import_react_i18next22.useTranslation)();
18954
+ const { colors } = useTheme();
18955
+ const selectable = selectableIdentities(candidates);
18956
+ const busy = busyUuid !== null;
18957
+ return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_react_native50.ScrollView, { contentContainerStyle: styles39.container, children: [
18958
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_native50.Text, { style: [typography.title, styles39.heading, { color: colors.text }], children: t("chooseYourProfile") }),
18959
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_native50.Text, { style: [typography.body, styles39.subtitle, { color: colors.textSecondary }], children: t("loginIdentifierLinkedToMultipleProfiles") }),
18960
+ error ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_native50.Text, { style: [typography.caption, styles39.error, { color: colors.error }], children: error }) : null,
18961
+ selectable.map((candidate) => {
18962
+ const { orgUserId, fallback } = identityPrimaryValue(candidate);
18963
+ const primaryLabel = orgUserId ? t("userIdLabel", { id: orgUserId }) : fallback;
18964
+ const secondaryLabels = identitySecondaryLabels(candidate, primaryLabel);
18965
+ const isBusy = busyUuid === candidate.uuid;
18966
+ return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(
18967
+ import_react_native50.TouchableOpacity,
18968
+ {
18969
+ accessibilityRole: "button",
18970
+ disabled: busy,
18971
+ onPress: () => onSelect(candidate.uuid),
18972
+ style: [
18973
+ styles39.row,
18974
+ {
18975
+ backgroundColor: colors.surface,
18976
+ borderColor: isBusy ? colors.primary : colors.border
18977
+ }
18978
+ ],
18979
+ children: [
18980
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_react_native50.View, { style: styles39.rowText, children: [
18981
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_native50.Text, { style: [typography.label, { color: colors.text }], children: primaryLabel }),
18982
+ secondaryLabels.map((label) => /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
18983
+ import_react_native50.Text,
18984
+ {
18985
+ style: [typography.caption, styles39.secondary, { color: colors.textSecondary }],
18986
+ children: label
18987
+ },
18988
+ label
18989
+ ))
18990
+ ] }),
18991
+ isBusy ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_native50.Text, { style: [typography.caption, { color: colors.textSecondary }], children: t("signingInEllipsis") }) : /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Icon, { name: "chevron-right", size: 18, color: colors.textSecondary })
18992
+ ]
18993
+ },
18994
+ candidate.uuid
18995
+ );
18996
+ })
18997
+ ] });
18998
+ };
18999
+ var styles39 = import_react_native50.StyleSheet.create({
19000
+ container: { padding: spacing.lg },
19001
+ heading: { textAlign: "center" },
19002
+ subtitle: { textAlign: "center", marginTop: spacing.xs, marginBottom: spacing.lg },
19003
+ error: { textAlign: "center", marginBottom: spacing.md },
19004
+ row: {
19005
+ flexDirection: "row",
19006
+ alignItems: "center",
19007
+ borderWidth: 1,
19008
+ borderRadius: radii.md,
19009
+ padding: spacing.md,
19010
+ marginBottom: spacing.sm
19011
+ },
19012
+ rowText: { flex: 1 },
19013
+ secondary: { marginTop: 2 }
19014
+ });
19015
+
19016
+ // src/RedactoPrivacyCenter/components/SelectUserGate.tsx
19017
+ var import_jsx_runtime53 = require("react/jsx-runtime");
19018
+ function SelectUserGate({ children }) {
19019
+ var _a3, _b;
19020
+ const { accessToken, organizationId, workspaceId, updateTokens } = useAuth();
19021
+ const { consentClient } = useBaseUrl();
19022
+ const { colors } = useTheme();
19023
+ const insets = useSafeInsets();
19024
+ const [phase, setPhase] = (0, import_react36.useState)("checking");
19025
+ const [candidates, setCandidates] = (0, import_react36.useState)([]);
19026
+ const [busyUuid, setBusyUuid] = (0, import_react36.useState)(null);
19027
+ const [selectError, setSelectError] = (0, import_react36.useState)(null);
19028
+ const [pinnedOrgUserId, setPinnedOrgUserId] = (0, import_react36.useState)(null);
19029
+ const tokenOrgUserId = ((_b = (_a3 = decodeJwtToken(accessToken)) == null ? void 0 : _a3.user_data) == null ? void 0 : _b.org_user_id) || "";
19030
+ (0, import_react36.useEffect)(() => {
19031
+ let cancelled = false;
19032
+ if (isSandboxMode() || !organizationId || !workspaceId || !accessToken) {
19033
+ setPhase("resolved");
19034
+ return;
19035
+ }
19036
+ const isPinned = Boolean(pinnedOrgUserId) && pinnedOrgUserId === tokenOrgUserId;
19037
+ setPhase(isPinned ? "resolved" : "checking");
19038
+ (async () => {
19039
+ var _a4;
19040
+ try {
19041
+ const res = await consentClient.listIdentities({
19042
+ organisationUuid: organizationId,
19043
+ workspaceUuid: workspaceId,
19044
+ authToken: accessToken
19045
+ });
19046
+ if (cancelled) return;
19047
+ const list = (_a4 = res == null ? void 0 : res.identities) != null ? _a4 : [];
19048
+ setCandidates(list);
19049
+ setPhase(list.length > 1 && !isPinned ? "picking" : "resolved");
19050
+ } catch {
19051
+ if (cancelled) return;
19052
+ setCandidates([]);
19053
+ setPhase("resolved");
19054
+ }
19055
+ })();
19056
+ return () => {
19057
+ cancelled = true;
19058
+ };
19059
+ }, [organizationId, workspaceId, tokenOrgUserId]);
19060
+ const handleSelect = (0, import_react36.useCallback)(
19061
+ async (principalUuid) => {
19062
+ var _a4, _b2;
19063
+ if (!principalUuid || busyUuid || !organizationId || !workspaceId) return;
19064
+ setBusyUuid(principalUuid);
19065
+ setSelectError(null);
19066
+ try {
19067
+ const res = await consentClient.selectPrincipal(
19068
+ {
19069
+ organisationUuid: organizationId,
19070
+ workspaceUuid: workspaceId,
19071
+ authToken: accessToken
19072
+ },
19073
+ principalUuid
19074
+ );
19075
+ if (!(res == null ? void 0 : res.token) || !(res == null ? void 0 : res.refresh_token)) {
19076
+ throw new Error("select-principal returned no tokens");
19077
+ }
19078
+ const pinned = ((_b2 = (_a4 = decodeJwtToken(res.token)) == null ? void 0 : _a4.user_data) == null ? void 0 : _b2.org_user_id) || null;
19079
+ setPinnedOrgUserId(pinned);
19080
+ setPhase("resolved");
19081
+ updateTokens(res.token, res.refresh_token);
19082
+ } catch (error) {
19083
+ setSelectError(
19084
+ error instanceof Error ? error.message : "Failed to switch profile"
19085
+ );
19086
+ } finally {
19087
+ setBusyUuid(null);
19088
+ }
19089
+ },
19090
+ [accessToken, busyUuid, consentClient, organizationId, workspaceId, updateTokens]
19091
+ );
19092
+ const canSwitch = candidates.length > 1;
19093
+ const switchProfile = (0, import_react36.useCallback)(() => {
19094
+ if (!canSwitch) return;
19095
+ setSelectError(null);
19096
+ setPhase("picking");
19097
+ }, [canSwitch]);
19098
+ if (phase === "checking" || phase === "picking") {
19099
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
19100
+ import_react_native51.View,
19101
+ {
19102
+ style: [
19103
+ styles40.screen,
19104
+ {
19105
+ backgroundColor: colors.canvasSubtle,
19106
+ paddingTop: insets.top,
19107
+ paddingBottom: insets.bottom
19108
+ }
19109
+ ],
19110
+ children: phase === "checking" ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(PCLoader, {}) : /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
19111
+ SelectUser,
19112
+ {
19113
+ candidates,
19114
+ onSelect: handleSelect,
19115
+ busyUuid,
19116
+ error: selectError
19117
+ }
19118
+ )
19119
+ }
19120
+ );
19121
+ }
19122
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(ProfileSwitchProvider, { switchProfile: canSwitch ? switchProfile : null, children });
19123
+ }
19124
+ var styles40 = import_react_native51.StyleSheet.create({
19125
+ screen: { flex: 1 }
19126
+ });
19127
+
18623
19128
  // src/RedactoPrivacyCenter/components/CaseDetails/CaseDetailsPage.tsx
18624
- var import_react39 = require("react");
18625
- var import_react_native57 = require("react-native");
18626
- var import_react_i18next26 = require("react-i18next");
19129
+ var import_react41 = require("react");
19130
+ var import_react_native59 = require("react-native");
19131
+ var import_react_i18next28 = require("react-i18next");
18627
19132
 
18628
19133
  // src/RedactoPrivacyCenter/components/CaseDetails/RequestDetailsTab.tsx
18629
- var import_react_native50 = require("react-native");
18630
- var import_react_i18next21 = require("react-i18next");
18631
- var import_jsx_runtime50 = require("react/jsx-runtime");
19134
+ var import_react_native52 = require("react-native");
19135
+ var import_react_i18next23 = require("react-i18next");
19136
+ var import_jsx_runtime54 = require("react/jsx-runtime");
18632
19137
  function RequestDetailsTab({ selectedCase, requestTypeLabel }) {
18633
- const { t } = (0, import_react_i18next21.useTranslation)();
19138
+ const { t } = (0, import_react_i18next23.useTranslation)();
18634
19139
  const { colors } = useTheme();
18635
19140
  const { listBottom } = usePrivacyCenterInsets({ hasFooter: true });
18636
19141
  const details = selectedCase.request_details;
@@ -18662,36 +19167,36 @@ function RequestDetailsTab({ selectedCase, requestTypeLabel }) {
18662
19167
  }
18663
19168
  const description = selectedCase.description_display || selectedCase.description;
18664
19169
  const hasDetails = description || details && (details.purposes && details.purposes.length > 0 || details.correction_data && details.correction_data.length > 0 || details.grievance_types && details.grievance_types.length > 0 || details.nomination_data);
18665
- return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_react_native50.ScrollView, { style: [styles39.container, { backgroundColor: colors.canvasSubtle }], contentContainerStyle: [styles39.content, { flexGrow: 1, paddingBottom: listBottom }], showsVerticalScrollIndicator: false, children: [
18666
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react_native50.View, { style: styles39.timeline, children: steps.map((step, i) => {
19170
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.ScrollView, { style: [styles41.container, { backgroundColor: colors.canvasSubtle }], contentContainerStyle: [styles41.content, { flexGrow: 1, paddingBottom: listBottom }], showsVerticalScrollIndicator: false, children: [
19171
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.View, { style: styles41.timeline, children: steps.map((step, i) => {
18667
19172
  const isLast = i === steps.length - 1;
18668
- return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_react_native50.View, { style: styles39.stepRow, children: [
18669
- /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_react_native50.View, { style: styles39.gutter, children: [
18670
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
18671
- import_react_native50.View,
19173
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.stepRow, children: [
19174
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.gutter, children: [
19175
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
19176
+ import_react_native52.View,
18672
19177
  {
18673
19178
  style: [
18674
- styles39.dot,
19179
+ styles41.dot,
18675
19180
  step.state === "upcoming" ? { backgroundColor: colors.canvasSubtle, borderWidth: 2, borderColor: step.danger ? colors.error : colors.border } : { backgroundColor: step.color }
18676
19181
  ],
18677
- children: step.state === "done" ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Icon, { name: "check", size: 11, color: colors.primaryText, strokeWidth: 3 }) : step.state === "current" ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react_native50.View, { style: [styles39.dotInner, { backgroundColor: colors.primaryText }] }) : null
19182
+ children: step.state === "done" ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Icon, { name: "check", size: 11, color: colors.primaryText, strokeWidth: 3 }) : step.state === "current" ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.View, { style: [styles41.dotInner, { backgroundColor: colors.primaryText }] }) : null
18678
19183
  }
18679
19184
  ),
18680
- !isLast ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react_native50.View, { style: [styles39.connector, { backgroundColor: colors.border }] }) : null
19185
+ !isLast ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.View, { style: [styles41.connector, { backgroundColor: colors.border }] }) : null
18681
19186
  ] }),
18682
- /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_react_native50.View, { style: [styles39.stepContent, isLast && styles39.stepContentLast], children: [
18683
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react_native50.Text, { style: [styles39.stepLabel, { color: step.danger ? colors.error : colors.text }], children: step.label }),
18684
- step.date ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react_native50.Text, { style: [styles39.stepDate, { color: step.danger ? colors.error : colors.textSecondary }], children: step.date }) : null
19187
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: [styles41.stepContent, isLast && styles41.stepContentLast], children: [
19188
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.stepLabel, { color: step.danger ? colors.error : colors.text }], children: step.label }),
19189
+ step.date ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.stepDate, { color: step.danger ? colors.error : colors.textSecondary }], children: step.date }) : null
18685
19190
  ] })
18686
19191
  ] }, `${step.label}-${i}`);
18687
19192
  }) }),
18688
- hasDetails ? /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_react_native50.View, { style: [styles39.card, elevation.card, { backgroundColor: colors.surface }], children: [
18689
- description ? /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_react_native50.View, { style: styles39.block, children: [
18690
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react_native50.Text, { style: [styles39.blockLabel, { color: colors.textSecondary }], children: t("descriptionLabel") || "Description" }),
18691
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react_native50.Text, { style: [styles39.descriptionText, { color: colors.text }], children: description })
19193
+ hasDetails ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: [styles41.card, elevation.card, { backgroundColor: colors.surface }], children: [
19194
+ description ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.block, children: [
19195
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.blockLabel, { color: colors.textSecondary }], children: t("descriptionLabel") || "Description" }),
19196
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.descriptionText, { color: colors.text }], children: description })
18692
19197
  ] }) : null,
18693
- (details == null ? void 0 : details.purposes) && details.purposes.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_react_native50.View, { style: styles39.block, children: [
18694
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react_native50.Text, { style: [styles39.blockLabel, { color: colors.textSecondary }], children: t("purposesInvolved") || t("purposes") || "Purposes" }),
19198
+ (details == null ? void 0 : details.purposes) && details.purposes.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.block, children: [
19199
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.blockLabel, { color: colors.textSecondary }], children: t("purposesInvolved") || t("purposes") || "Purposes" }),
18695
19200
  details.purposes.map((rawP, idx) => {
18696
19201
  const p = (rawP == null ? void 0 : rawP.purpose) ? rawP.purpose : rawP;
18697
19202
  const purposeId = (p == null ? void 0 : p.uuid) || (p == null ? void 0 : p.purpose_uuid) || (rawP == null ? void 0 : rawP.purpose_uuid) || idx;
@@ -18699,10 +19204,10 @@ function RequestDetailsTab({ selectedCase, requestTypeLabel }) {
18699
19204
  const purposeDescription = (p == null ? void 0 : p.description) || (rawP == null ? void 0 : rawP.description);
18700
19205
  const dataElements = Array.isArray(p == null ? void 0 : p.data_elements) ? p.data_elements.filter((de) => (de == null ? void 0 : de.selected) || (de == null ? void 0 : de.given_consent)) : [];
18701
19206
  const dataElementUuids = Array.isArray(rawP == null ? void 0 : rawP.data_element_uuids) ? rawP.data_element_uuids : Array.isArray(p == null ? void 0 : p.data_element_uuids) ? p.data_element_uuids : [];
18702
- return /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_react_native50.View, { style: [styles39.itemRow, idx > 0 && { borderTopColor: colors.hairline, borderTopWidth: import_react_native50.StyleSheet.hairlineWidth }], children: [
18703
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react_native50.Text, { style: [styles39.itemTitle, { color: colors.text }], children: purposeName }),
18704
- purposeDescription ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react_native50.Text, { style: [styles39.itemDesc, { color: colors.textSecondary }], numberOfLines: 3, children: purposeDescription }) : null,
18705
- dataElements.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react_native50.View, { style: styles39.chipRow, children: dataElements.map((de) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(PCBadge, { status: "info", label: de.name }, de.uuid)) }) : dataElementUuids.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_react_native50.Text, { style: [styles39.itemDesc, { color: colors.textSecondary }], children: [
19207
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: [styles41.itemRow, idx > 0 && { borderTopColor: colors.hairline, borderTopWidth: import_react_native52.StyleSheet.hairlineWidth }], children: [
19208
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.itemTitle, { color: colors.text }], children: purposeName }),
19209
+ purposeDescription ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.itemDesc, { color: colors.textSecondary }], numberOfLines: 3, children: purposeDescription }) : null,
19210
+ dataElements.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.View, { style: styles41.chipRow, children: dataElements.map((de) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(PCBadge, { status: "info", label: de.name }, de.uuid)) }) : dataElementUuids.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.Text, { style: [styles41.itemDesc, { color: colors.textSecondary }], children: [
18706
19211
  dataElementUuids.length,
18707
19212
  " ",
18708
19213
  t("dataElements") || "data elements"
@@ -18710,44 +19215,44 @@ function RequestDetailsTab({ selectedCase, requestTypeLabel }) {
18710
19215
  ] }, purposeId);
18711
19216
  })
18712
19217
  ] }) : null,
18713
- (details == null ? void 0 : details.correction_data) && details.correction_data.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_react_native50.View, { style: styles39.block, children: [
18714
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react_native50.Text, { style: [styles39.blockLabel, { color: colors.textSecondary }], children: t("correctionData") || "Correction" }),
18715
- details.correction_data.map((item, idx) => /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_react_native50.View, { style: [styles39.itemRow, idx > 0 && { borderTopColor: colors.hairline, borderTopWidth: import_react_native50.StyleSheet.hairlineWidth }], children: [
18716
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react_native50.Text, { style: [styles39.itemTitle, { color: colors.text }], children: item.name }),
18717
- /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_react_native50.View, { style: styles39.correctionValues, children: [
18718
- /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_react_native50.View, { style: styles39.correctionValue, children: [
18719
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react_native50.Text, { style: [styles39.correctionLabel, { color: colors.textSecondary }], children: t("currentValue") || "Current" }),
18720
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react_native50.Text, { style: [styles39.correctionText, { color: colors.text }], children: item.curr_value || "-" })
19218
+ (details == null ? void 0 : details.correction_data) && details.correction_data.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.block, children: [
19219
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.blockLabel, { color: colors.textSecondary }], children: t("correctionData") || "Correction" }),
19220
+ details.correction_data.map((item, idx) => /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: [styles41.itemRow, idx > 0 && { borderTopColor: colors.hairline, borderTopWidth: import_react_native52.StyleSheet.hairlineWidth }], children: [
19221
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.itemTitle, { color: colors.text }], children: item.name }),
19222
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.correctionValues, children: [
19223
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.correctionValue, children: [
19224
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.correctionLabel, { color: colors.textSecondary }], children: t("currentValue") || "Current" }),
19225
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.correctionText, { color: colors.text }], children: item.curr_value || "-" })
18721
19226
  ] }),
18722
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Icon, { name: "chevron-right", size: 16, color: colors.textSecondary, strokeWidth: 2.2 }),
18723
- /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_react_native50.View, { style: styles39.correctionValue, children: [
18724
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react_native50.Text, { style: [styles39.correctionLabel, { color: colors.textSecondary }], children: t("newValue") || "New" }),
18725
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react_native50.Text, { style: [styles39.correctionText, { color: colors.primary }], children: item.new_value || "-" })
19227
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Icon, { name: "chevron-right", size: 16, color: colors.textSecondary, strokeWidth: 2.2 }),
19228
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.correctionValue, children: [
19229
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.correctionLabel, { color: colors.textSecondary }], children: t("newValue") || "New" }),
19230
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.correctionText, { color: colors.primary }], children: item.new_value || "-" })
18726
19231
  ] })
18727
19232
  ] })
18728
19233
  ] }, idx))
18729
19234
  ] }) : null,
18730
- (details == null ? void 0 : details.grievance_types) && details.grievance_types.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_react_native50.View, { style: styles39.block, children: [
18731
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react_native50.Text, { style: [styles39.blockLabel, { color: colors.textSecondary }], children: t("grievanceTypes") || "Grievance" }),
18732
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react_native50.View, { style: styles39.chipRow, children: details.grievance_types.map((g, idx) => /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(PCBadge, { status: "warning", label: (g.grievance || "").replace(/_/g, " ") }, idx)) })
19235
+ (details == null ? void 0 : details.grievance_types) && details.grievance_types.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.block, children: [
19236
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.blockLabel, { color: colors.textSecondary }], children: t("grievanceTypes") || "Grievance" }),
19237
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.View, { style: styles41.chipRow, children: details.grievance_types.map((g, idx) => /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(PCBadge, { status: "warning", label: (g.grievance || "").replace(/_/g, " ") }, idx)) })
18733
19238
  ] }) : null,
18734
- (details == null ? void 0 : details.nomination_data) ? /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_react_native50.View, { style: styles39.block, children: [
18735
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react_native50.Text, { style: [styles39.blockLabel, { color: colors.textSecondary }], children: t("nominationData") || "Nomination" }),
18736
- details.nomination_data.nominee_email ? /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_react_native50.View, { style: styles39.kvRow, children: [
18737
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react_native50.Text, { style: [styles39.kvLabel, { color: colors.textSecondary }], children: t("email") || "Email" }),
18738
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react_native50.Text, { style: [styles39.kvValue, { color: colors.text }], children: details.nomination_data.nominee_email })
19239
+ (details == null ? void 0 : details.nomination_data) ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.block, children: [
19240
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.blockLabel, { color: colors.textSecondary }], children: t("nominationData") || "Nomination" }),
19241
+ details.nomination_data.nominee_email ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.kvRow, children: [
19242
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.kvLabel, { color: colors.textSecondary }], children: t("email") || "Email" }),
19243
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.kvValue, { color: colors.text }], children: details.nomination_data.nominee_email })
18739
19244
  ] }) : null,
18740
- details.nomination_data.nominee_mobile ? /* @__PURE__ */ (0, import_jsx_runtime50.jsxs)(import_react_native50.View, { style: styles39.kvRow, children: [
18741
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react_native50.Text, { style: [styles39.kvLabel, { color: colors.textSecondary }], children: t("mobile") || "Mobile" }),
18742
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react_native50.Text, { style: [styles39.kvValue, { color: colors.text }], children: details.nomination_data.nominee_mobile })
19245
+ details.nomination_data.nominee_mobile ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.kvRow, children: [
19246
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.kvLabel, { color: colors.textSecondary }], children: t("mobile") || "Mobile" }),
19247
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.kvValue, { color: colors.text }], children: details.nomination_data.nominee_mobile })
18743
19248
  ] }) : null
18744
19249
  ] }) : null
18745
19250
  ] }) : null,
18746
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react_native50.View, { style: { marginTop: "auto" }, children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Footer, {}) })
19251
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.View, { style: { marginTop: "auto" }, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Footer, {}) })
18747
19252
  ] });
18748
19253
  }
18749
19254
  var DOT = 22;
18750
- var styles39 = import_react_native50.StyleSheet.create({
19255
+ var styles41 = import_react_native52.StyleSheet.create({
18751
19256
  container: {
18752
19257
  flex: 1
18753
19258
  },
@@ -18868,51 +19373,51 @@ var styles39 = import_react_native50.StyleSheet.create({
18868
19373
  });
18869
19374
 
18870
19375
  // src/RedactoPrivacyCenter/components/CaseDetails/MessagesTab.tsx
18871
- var import_react38 = require("react");
18872
- var import_react_native56 = require("react-native");
18873
- var import_react_i18next25 = require("react-i18next");
19376
+ var import_react40 = require("react");
19377
+ var import_react_native58 = require("react-native");
19378
+ var import_react_i18next27 = require("react-i18next");
18874
19379
 
18875
19380
  // src/RedactoPrivacyCenter/components/CaseDetails/MessageItem.tsx
18876
- var import_react36 = __toESM(require("react"));
18877
- var import_react_i18next23 = require("react-i18next");
19381
+ var import_react38 = __toESM(require("react"));
19382
+ var import_react_i18next25 = require("react-i18next");
18878
19383
 
18879
19384
  // src/RedactoPrivacyCenter/components/CaseDetails/ChatBubble.tsx
18880
- var import_react35 = __toESM(require("react"));
18881
- var import_react_native52 = require("react-native");
19385
+ var import_react37 = __toESM(require("react"));
19386
+ var import_react_native54 = require("react-native");
18882
19387
 
18883
19388
  // src/RedactoPrivacyCenter/components/CaseDetails/AttachmentCard.tsx
18884
- var import_react_native51 = require("react-native");
18885
- var import_jsx_runtime51 = require("react/jsx-runtime");
19389
+ var import_react_native53 = require("react-native");
19390
+ var import_jsx_runtime55 = require("react/jsx-runtime");
18886
19391
  function AttachmentCard({ doc }) {
18887
19392
  const { colors } = useTheme();
18888
19393
  const downloadUrl = getDownloadUrl(doc.file_url);
18889
19394
  const handlePress = () => {
18890
19395
  if (downloadUrl) {
18891
- import_react_native51.Linking.openURL(downloadUrl);
19396
+ import_react_native53.Linking.openURL(downloadUrl);
18892
19397
  }
18893
19398
  };
18894
- return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
18895
- import_react_native51.TouchableOpacity,
19399
+ return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(
19400
+ import_react_native53.TouchableOpacity,
18896
19401
  {
18897
- style: [styles40.container, { backgroundColor: colors.surface, borderColor: colors.border }],
19402
+ style: [styles42.container, { backgroundColor: colors.surface, borderColor: colors.border }],
18898
19403
  onPress: handlePress,
18899
19404
  disabled: !downloadUrl,
18900
19405
  activeOpacity: 0.7,
18901
19406
  children: [
18902
- /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(Icon, { name: "file-text", size: 18, color: colors.textSecondary }),
18903
- /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(import_react_native51.View, { style: styles40.info, children: [
18904
- /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_react_native51.Text, { style: [styles40.fileName, { color: colors.text }], numberOfLines: 1, children: doc.file_name || "Document" }),
18905
- doc.file_size ? /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(import_react_native51.Text, { style: [styles40.fileSize, { color: colors.textSecondary }], children: formatFileSize(doc.file_size) }) : null
19407
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Icon, { name: "file-text", size: 18, color: colors.textSecondary }),
19408
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(import_react_native53.View, { style: styles42.info, children: [
19409
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_react_native53.Text, { style: [styles42.fileName, { color: colors.text }], numberOfLines: 1, children: doc.file_name || "Document" }),
19410
+ doc.file_size ? /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_react_native53.Text, { style: [styles42.fileSize, { color: colors.textSecondary }], children: formatFileSize(doc.file_size) }) : null
18906
19411
  ] })
18907
19412
  ]
18908
19413
  }
18909
19414
  );
18910
19415
  }
18911
- var styles40 = import_react_native51.StyleSheet.create({
19416
+ var styles42 = import_react_native53.StyleSheet.create({
18912
19417
  container: {
18913
19418
  flexDirection: "row",
18914
19419
  alignItems: "center",
18915
- borderWidth: import_react_native51.StyleSheet.hairlineWidth,
19420
+ borderWidth: import_react_native53.StyleSheet.hairlineWidth,
18916
19421
  borderRadius: radii.md,
18917
19422
  paddingHorizontal: spacing.sm + 2,
18918
19423
  paddingVertical: spacing.sm,
@@ -18932,11 +19437,11 @@ var styles40 = import_react_native51.StyleSheet.create({
18932
19437
  });
18933
19438
 
18934
19439
  // src/RedactoPrivacyCenter/components/CaseDetails/ChatBubble.tsx
18935
- var import_jsx_runtime52 = require("react/jsx-runtime");
19440
+ var import_jsx_runtime56 = require("react/jsx-runtime");
18936
19441
  var AVATAR_SIZE = 28;
18937
19442
  var AVATAR_GUTTER = 36;
18938
19443
  function TeamAvatar({ tint }) {
18939
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_native52.View, { style: [styles41.avatar, { backgroundColor: withAlpha(tint, 0.13) }], children: /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Icon, { name: "shield-check", size: 15, color: tint, strokeWidth: 2 }) });
19444
+ return /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_react_native54.View, { style: [styles43.avatar, { backgroundColor: withAlpha(tint, 0.13) }], children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(Icon, { name: "shield-check", size: 15, color: tint, strokeWidth: 2 }) });
18940
19445
  }
18941
19446
  function ChatBubbleImpl({
18942
19447
  message,
@@ -18963,28 +19468,28 @@ function ChatBubbleImpl({
18963
19468
  borderBottomRightRadius: BUBBLE_RADIUS,
18964
19469
  borderBottomLeftRadius: tailRadius
18965
19470
  };
18966
- const bubble = /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_react_native52.View, { style: [styles41.bubble, bubbleStyle], children: [
18967
- !isPrincipal && isFirstInGroup ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_native52.Text, { style: [styles41.bubbleSender, { color: colors.primary }], numberOfLines: 1, children: senderLabel }) : null,
18968
- message.body ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_native52.Text, { style: [styles41.body, { color: isPrincipal ? colors.primaryText : colors.text }], children: message.body }) : null,
18969
- message.documents && message.documents.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_native52.View, { style: styles41.attachments, children: message.documents.map((doc) => /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(AttachmentCard, { doc }, doc.uuid)) }) : null
19471
+ const bubble = /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_react_native54.View, { style: [styles43.bubble, bubbleStyle], children: [
19472
+ !isPrincipal && isFirstInGroup ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_react_native54.Text, { style: [styles43.bubbleSender, { color: colors.primary }], numberOfLines: 1, children: senderLabel }) : null,
19473
+ message.body ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_react_native54.Text, { style: [styles43.body, { color: isPrincipal ? colors.primaryText : colors.text }], children: message.body }) : null,
19474
+ message.documents && message.documents.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_react_native54.View, { style: styles43.attachments, children: message.documents.map((doc) => /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(AttachmentCard, { doc }, doc.uuid)) }) : null
18970
19475
  ] });
18971
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(
18972
- import_react_native52.View,
19476
+ return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(
19477
+ import_react_native54.View,
18973
19478
  {
18974
19479
  style: [
18975
- styles41.row,
18976
- isPrincipal ? styles41.rowRight : styles41.rowLeft,
19480
+ styles43.row,
19481
+ isPrincipal ? styles43.rowRight : styles43.rowLeft,
18977
19482
  { marginTop: isFirstInGroup ? spacing.md : 2 }
18978
19483
  ],
18979
19484
  children: [
18980
- !isPrincipal ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_native52.View, { style: styles41.avatarSlot, children: isFirstInGroup ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(TeamAvatar, { tint: colors.primary }) : null }) : null,
18981
- /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_react_native52.View, { style: [styles41.column, isPrincipal ? styles41.columnRight : styles41.columnLeft], children: [
19485
+ !isPrincipal ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_react_native54.View, { style: styles43.avatarSlot, children: isFirstInGroup ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(TeamAvatar, { tint: colors.primary }) : null }) : null,
19486
+ /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_react_native54.View, { style: [styles43.column, isPrincipal ? styles43.columnRight : styles43.columnLeft], children: [
18982
19487
  bubble,
18983
- isLastInGroup ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
18984
- import_react_native52.Text,
19488
+ isLastInGroup ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
19489
+ import_react_native54.Text,
18985
19490
  {
18986
19491
  style: [
18987
- styles41.timestamp,
19492
+ styles43.timestamp,
18988
19493
  { color: colors.textSecondary, textAlign: isPrincipal ? "right" : "left" }
18989
19494
  ],
18990
19495
  children: formatMessageTime(timestamp)
@@ -18995,8 +19500,8 @@ function ChatBubbleImpl({
18995
19500
  }
18996
19501
  );
18997
19502
  }
18998
- var ChatBubble = import_react35.default.memo(ChatBubbleImpl);
18999
- var styles41 = import_react_native52.StyleSheet.create({
19503
+ var ChatBubble = import_react37.default.memo(ChatBubbleImpl);
19504
+ var styles43 = import_react_native54.StyleSheet.create({
19000
19505
  row: {
19001
19506
  flexDirection: "row",
19002
19507
  paddingHorizontal: spacing.md,
@@ -19056,9 +19561,9 @@ var styles41 = import_react_native52.StyleSheet.create({
19056
19561
  });
19057
19562
 
19058
19563
  // src/RedactoPrivacyCenter/components/CaseDetails/DocumentRequestCard.tsx
19059
- var import_react_native53 = require("react-native");
19060
- var import_react_i18next22 = require("react-i18next");
19061
- var import_jsx_runtime53 = require("react/jsx-runtime");
19564
+ var import_react_native55 = require("react-native");
19565
+ var import_react_i18next24 = require("react-i18next");
19566
+ var import_jsx_runtime57 = require("react/jsx-runtime");
19062
19567
  var STATUS_BADGE_MAP = {
19063
19568
  pending: "warning",
19064
19569
  under_review: "info",
@@ -19078,20 +19583,20 @@ function humanize(value) {
19078
19583
  }
19079
19584
  function DocumentRequestCard({ message, onUpload, isSubmitting, isCaseFinalized = false }) {
19080
19585
  var _a3;
19081
- const { t } = (0, import_react_i18next22.useTranslation)();
19586
+ const { t } = (0, import_react_i18next24.useTranslation)();
19082
19587
  const { colors } = useTheme();
19083
19588
  const meta = message.document_request_metadata;
19084
19589
  if (!meta) return null;
19085
19590
  const status = meta.document_request_status;
19086
19591
  const canUpload = (status === "pending" || status === "replacement_requested") && !isCaseFinalized;
19087
19592
  const requestEventUuid = meta.document_request_uuid;
19088
- return /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(import_react_native53.View, { style: [styles42.container, { borderColor: colors.border, backgroundColor: colors.surface }], children: [
19089
- /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(import_react_native53.View, { style: styles42.header, children: [
19090
- /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(import_react_native53.View, { style: styles42.titleRow, children: [
19091
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(Icon, { name: "file-check", size: 16, color: colors.primary, strokeWidth: 2 }),
19092
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_native53.Text, { style: [styles42.title, { color: colors.text }], children: meta.title || t("documentRequestedLabel") || "Document Requested" })
19593
+ return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_react_native55.View, { style: [styles44.container, { borderColor: colors.border, backgroundColor: colors.surface }], children: [
19594
+ /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_react_native55.View, { style: styles44.header, children: [
19595
+ /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_react_native55.View, { style: styles44.titleRow, children: [
19596
+ /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(Icon, { name: "file-check", size: 16, color: colors.primary, strokeWidth: 2 }),
19597
+ /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_react_native55.Text, { style: [styles44.title, { color: colors.text }], children: meta.title || t("documentRequestedLabel") || "Document Requested" })
19093
19598
  ] }),
19094
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
19599
+ /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
19095
19600
  PCBadge,
19096
19601
  {
19097
19602
  status: STATUS_BADGE_MAP[status] || "info",
@@ -19099,30 +19604,30 @@ function DocumentRequestCard({ message, onUpload, isSubmitting, isCaseFinalized
19099
19604
  }
19100
19605
  )
19101
19606
  ] }),
19102
- meta.accepted_document ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_native53.Text, { style: [styles42.accepted, { color: colors.textSecondary }], children: t("acceptedLabel", {
19607
+ meta.accepted_document ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_react_native55.Text, { style: [styles44.accepted, { color: colors.textSecondary }], children: t("acceptedLabel", {
19103
19608
  accepted: meta.accepted_document,
19104
19609
  defaultValue: `Accepted: ${meta.accepted_document}`
19105
19610
  }) }) : null,
19106
- meta.rejection_reason ? /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(import_react_native53.View, { style: [styles42.rejectionBox, { backgroundColor: colors.errorSoft }], children: [
19107
- /* @__PURE__ */ (0, import_jsx_runtime53.jsxs)(import_react_native53.Text, { style: [styles42.rejectionLabel, { color: colors.error }], children: [
19611
+ meta.rejection_reason ? /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_react_native55.View, { style: [styles44.rejectionBox, { backgroundColor: colors.errorSoft }], children: [
19612
+ /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_react_native55.Text, { style: [styles44.rejectionLabel, { color: colors.error }], children: [
19108
19613
  t("rejectionReasonLabel") || "Rejection reason",
19109
19614
  ":"
19110
19615
  ] }),
19111
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_native53.Text, { style: [styles42.rejectionText, { color: colors.error }], children: meta.rejection_reason })
19616
+ /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_react_native55.Text, { style: [styles44.rejectionText, { color: colors.error }], children: meta.rejection_reason })
19112
19617
  ] }) : null,
19113
- canUpload && requestEventUuid ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
19114
- import_react_native53.TouchableOpacity,
19618
+ canUpload && requestEventUuid ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
19619
+ import_react_native55.TouchableOpacity,
19115
19620
  {
19116
- style: [styles42.uploadButton, { backgroundColor: colors.primary }],
19621
+ style: [styles44.uploadButton, { backgroundColor: colors.primary }],
19117
19622
  onPress: () => onUpload(requestEventUuid),
19118
19623
  disabled: isSubmitting,
19119
19624
  activeOpacity: 0.7,
19120
- children: /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_native53.Text, { style: [styles42.uploadButtonText, { color: colors.primaryText }], children: isSubmitting ? t("loading") || "Loading..." : t("uploadAndSubmit") || "Upload & Submit" })
19625
+ children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_react_native55.Text, { style: [styles44.uploadButtonText, { color: colors.primaryText }], children: isSubmitting ? t("loading") || "Loading..." : t("uploadAndSubmit") || "Upload & Submit" })
19121
19626
  }
19122
19627
  ) : null
19123
19628
  ] });
19124
19629
  }
19125
- var styles42 = import_react_native53.StyleSheet.create({
19630
+ var styles44 = import_react_native55.StyleSheet.create({
19126
19631
  container: {
19127
19632
  borderWidth: 1.5,
19128
19633
  borderStyle: "dashed",
@@ -19175,20 +19680,20 @@ var styles42 = import_react_native53.StyleSheet.create({
19175
19680
  });
19176
19681
 
19177
19682
  // src/RedactoPrivacyCenter/components/CaseDetails/StatusEvent.tsx
19178
- var import_react_native54 = require("react-native");
19179
- var import_jsx_runtime54 = require("react/jsx-runtime");
19683
+ var import_react_native56 = require("react-native");
19684
+ var import_jsx_runtime58 = require("react/jsx-runtime");
19180
19685
  function StatusEvent({ icon, color, bgColor, borderColor, text, subText, timestamp }) {
19181
19686
  const { colors } = useTheme();
19182
- return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native54.View, { style: [styles43.container, { backgroundColor: bgColor }], children: [
19183
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native54.View, { style: [styles43.iconBubble, { backgroundColor: `${color}1F` }], children: icon }),
19184
- /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native54.View, { style: styles43.textContainer, children: [
19185
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native54.Text, { style: [styles43.text, { color }], children: text }),
19186
- subText ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native54.Text, { style: [styles43.subText, { color: colors.textSecondary }], numberOfLines: 2, children: subText }) : null
19687
+ return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(import_react_native56.View, { style: [styles45.container, { backgroundColor: bgColor }], children: [
19688
+ /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_react_native56.View, { style: [styles45.iconBubble, { backgroundColor: `${color}1F` }], children: icon }),
19689
+ /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(import_react_native56.View, { style: styles45.textContainer, children: [
19690
+ /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_react_native56.Text, { style: [styles45.text, { color }], children: text }),
19691
+ subText ? /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_react_native56.Text, { style: [styles45.subText, { color: colors.textSecondary }], numberOfLines: 2, children: subText }) : null
19187
19692
  ] }),
19188
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native54.Text, { style: [styles43.timestamp, { color: colors.textSecondary }], children: formatMessageTime(timestamp) })
19693
+ /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_react_native56.Text, { style: [styles45.timestamp, { color: colors.textSecondary }], children: formatMessageTime(timestamp) })
19189
19694
  ] });
19190
19695
  }
19191
- var styles43 = import_react_native54.StyleSheet.create({
19696
+ var styles45 = import_react_native56.StyleSheet.create({
19192
19697
  container: {
19193
19698
  flexDirection: "row",
19194
19699
  alignItems: "center",
@@ -19227,10 +19732,10 @@ var styles43 = import_react_native54.StyleSheet.create({
19227
19732
  });
19228
19733
 
19229
19734
  // src/RedactoPrivacyCenter/components/CaseDetails/MessageItem.tsx
19230
- var import_jsx_runtime55 = require("react/jsx-runtime");
19231
- var CheckIcon = ({ color }) => /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Icon, { name: "check", size: 14, color, strokeWidth: 2.6 });
19232
- var XIcon = ({ color }) => /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Icon, { name: "x", size: 14, color, strokeWidth: 2.6 });
19233
- var RefreshIcon = ({ color }) => /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Icon, { name: "refresh-cw", size: 14, color, strokeWidth: 2.2 });
19735
+ var import_jsx_runtime59 = require("react/jsx-runtime");
19736
+ var CheckIcon = ({ color }) => /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Icon, { name: "check", size: 14, color, strokeWidth: 2.6 });
19737
+ var XIcon = ({ color }) => /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Icon, { name: "x", size: 14, color, strokeWidth: 2.6 });
19738
+ var RefreshIcon = ({ color }) => /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Icon, { name: "refresh-cw", size: 14, color, strokeWidth: 2.2 });
19234
19739
  function MessageItemImpl({
19235
19740
  message,
19236
19741
  onUploadForRequest,
@@ -19240,14 +19745,14 @@ function MessageItemImpl({
19240
19745
  isLastInGroup = true
19241
19746
  }) {
19242
19747
  var _a3, _b;
19243
- const { t } = (0, import_react_i18next23.useTranslation)();
19748
+ const { t } = (0, import_react_i18next25.useTranslation)();
19244
19749
  const isPrincipal = message.sender_role === "data_principal";
19245
19750
  const senderLabel = isPrincipal ? t("senderYou") || "You" : t("senderPrivacyTeam") || "Privacy Team";
19246
19751
  switch (message.message_type) {
19247
19752
  case "message_sent":
19248
19753
  case "document_submitted":
19249
19754
  case "document_replaced":
19250
- return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
19755
+ return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
19251
19756
  ChatBubble,
19252
19757
  {
19253
19758
  message,
@@ -19259,8 +19764,8 @@ function MessageItemImpl({
19259
19764
  }
19260
19765
  );
19261
19766
  case "document_requested":
19262
- return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(import_jsx_runtime55.Fragment, { children: [
19263
- /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
19767
+ return /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(import_jsx_runtime59.Fragment, { children: [
19768
+ /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
19264
19769
  ChatBubble,
19265
19770
  {
19266
19771
  message,
@@ -19271,7 +19776,7 @@ function MessageItemImpl({
19271
19776
  isLastInGroup
19272
19777
  }
19273
19778
  ),
19274
- /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
19779
+ /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
19275
19780
  DocumentRequestCard,
19276
19781
  {
19277
19782
  message,
@@ -19282,10 +19787,10 @@ function MessageItemImpl({
19282
19787
  )
19283
19788
  ] });
19284
19789
  case "document_approved":
19285
- return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
19790
+ return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
19286
19791
  StatusEvent,
19287
19792
  {
19288
- icon: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(CheckIcon, { color: "#059669" }),
19793
+ icon: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(CheckIcon, { color: "#059669" }),
19289
19794
  color: "#059669",
19290
19795
  bgColor: "rgba(16, 185, 129, 0.08)",
19291
19796
  borderColor: "rgba(16, 185, 129, 0.2)",
@@ -19294,10 +19799,10 @@ function MessageItemImpl({
19294
19799
  }
19295
19800
  );
19296
19801
  case "document_rejected":
19297
- return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
19802
+ return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
19298
19803
  StatusEvent,
19299
19804
  {
19300
- icon: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(XIcon, { color: "#DC2626" }),
19805
+ icon: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(XIcon, { color: "#DC2626" }),
19301
19806
  color: "#DC2626",
19302
19807
  bgColor: "rgba(220, 38, 38, 0.08)",
19303
19808
  borderColor: "rgba(220, 38, 38, 0.2)",
@@ -19307,10 +19812,10 @@ function MessageItemImpl({
19307
19812
  }
19308
19813
  );
19309
19814
  case "document_replacement_requested":
19310
- return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
19815
+ return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
19311
19816
  StatusEvent,
19312
19817
  {
19313
- icon: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(RefreshIcon, { color: "#D97706" }),
19818
+ icon: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(RefreshIcon, { color: "#D97706" }),
19314
19819
  color: "#D97706",
19315
19820
  bgColor: "rgba(245, 158, 11, 0.08)",
19316
19821
  borderColor: "rgba(245, 158, 11, 0.2)",
@@ -19320,7 +19825,7 @@ function MessageItemImpl({
19320
19825
  }
19321
19826
  );
19322
19827
  default:
19323
- return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
19828
+ return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
19324
19829
  ChatBubble,
19325
19830
  {
19326
19831
  message,
@@ -19333,13 +19838,13 @@ function MessageItemImpl({
19333
19838
  );
19334
19839
  }
19335
19840
  }
19336
- var MessageItem = import_react36.default.memo(MessageItemImpl);
19841
+ var MessageItem = import_react38.default.memo(MessageItemImpl);
19337
19842
 
19338
19843
  // src/RedactoPrivacyCenter/components/CaseDetails/MessageComposer.tsx
19339
- var import_react37 = require("react");
19340
- var import_react_native55 = require("react-native");
19341
- var import_react_i18next24 = require("react-i18next");
19342
- var import_jsx_runtime56 = require("react/jsx-runtime");
19844
+ var import_react39 = require("react");
19845
+ var import_react_native57 = require("react-native");
19846
+ var import_react_i18next26 = require("react-i18next");
19847
+ var import_jsx_runtime60 = require("react/jsx-runtime");
19343
19848
  function MessageComposer({
19344
19849
  messageText,
19345
19850
  onMessageTextChange,
@@ -19351,15 +19856,15 @@ function MessageComposer({
19351
19856
  isUploading,
19352
19857
  isCaseFinalized = false
19353
19858
  }) {
19354
- const { t } = (0, import_react_i18next24.useTranslation)();
19859
+ const { t } = (0, import_react_i18next26.useTranslation)();
19355
19860
  const { colors } = useTheme();
19356
19861
  const canSend = (messageText.trim().length > 0 || pendingUpload) && !isSending && !isUploading && !isCaseFinalized;
19357
- const activate = (0, import_react37.useRef)(new import_react_native55.Animated.Value(canSend ? 1 : 0)).current;
19358
- (0, import_react37.useEffect)(() => {
19359
- import_react_native55.Animated.timing(activate, {
19862
+ const activate = (0, import_react39.useRef)(new import_react_native57.Animated.Value(canSend ? 1 : 0)).current;
19863
+ (0, import_react39.useEffect)(() => {
19864
+ import_react_native57.Animated.timing(activate, {
19360
19865
  toValue: canSend ? 1 : 0,
19361
19866
  duration: 180,
19362
- easing: import_react_native55.Easing.out(import_react_native55.Easing.quad),
19867
+ easing: import_react_native57.Easing.out(import_react_native57.Easing.quad),
19363
19868
  useNativeDriver: false
19364
19869
  }).start();
19365
19870
  }, [canSend, activate]);
@@ -19367,30 +19872,30 @@ function MessageComposer({
19367
19872
  inputRange: [0, 1],
19368
19873
  outputRange: [colors.border, colors.primary]
19369
19874
  });
19370
- const pressScale = (0, import_react37.useRef)(new import_react_native55.Animated.Value(1)).current;
19875
+ const pressScale = (0, import_react39.useRef)(new import_react_native57.Animated.Value(1)).current;
19371
19876
  const handlePressIn = () => {
19372
- import_react_native55.Animated.spring(pressScale, { toValue: 0.88, useNativeDriver: true, speed: 30, bounciness: 0 }).start();
19877
+ import_react_native57.Animated.spring(pressScale, { toValue: 0.88, useNativeDriver: true, speed: 30, bounciness: 0 }).start();
19373
19878
  };
19374
19879
  const handlePressOut = () => {
19375
- import_react_native55.Animated.spring(pressScale, { toValue: 1, useNativeDriver: true, speed: 20, bounciness: 6 }).start();
19880
+ import_react_native57.Animated.spring(pressScale, { toValue: 1, useNativeDriver: true, speed: 20, bounciness: 6 }).start();
19376
19881
  };
19377
- const pillIn = (0, import_react37.useRef)(new import_react_native55.Animated.Value(0)).current;
19378
- (0, import_react37.useEffect)(() => {
19379
- import_react_native55.Animated.timing(pillIn, {
19882
+ const pillIn = (0, import_react39.useRef)(new import_react_native57.Animated.Value(0)).current;
19883
+ (0, import_react39.useEffect)(() => {
19884
+ import_react_native57.Animated.timing(pillIn, {
19380
19885
  toValue: pendingUpload ? 1 : 0,
19381
19886
  duration: 220,
19382
- easing: import_react_native55.Easing.out(import_react_native55.Easing.cubic),
19887
+ easing: import_react_native57.Easing.out(import_react_native57.Easing.cubic),
19383
19888
  useNativeDriver: true
19384
19889
  }).start();
19385
19890
  }, [pendingUpload, pillIn]);
19386
19891
  const pillOpacity = pillIn;
19387
19892
  const pillTranslateY = pillIn.interpolate({ inputRange: [0, 1], outputRange: [8, 0] });
19388
- return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_react_native55.View, { style: [styles44.container, { borderTopColor: colors.hairline, backgroundColor: colors.canvasSubtle, paddingBottom: spacing.sm }], children: [
19389
- pendingUpload && /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(
19390
- import_react_native55.Animated.View,
19893
+ return /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(import_react_native57.View, { style: [styles46.container, { borderTopColor: colors.hairline, backgroundColor: colors.canvasSubtle, paddingBottom: spacing.sm }], children: [
19894
+ pendingUpload && /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(
19895
+ import_react_native57.Animated.View,
19391
19896
  {
19392
19897
  style: [
19393
- styles44.uploadPill,
19898
+ styles46.uploadPill,
19394
19899
  {
19395
19900
  backgroundColor: colors.primarySoft,
19396
19901
  opacity: pillOpacity,
@@ -19398,34 +19903,34 @@ function MessageComposer({
19398
19903
  }
19399
19904
  ],
19400
19905
  children: [
19401
- /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(Icon, { name: "file", size: 14, color: colors.primary }),
19402
- /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_react_native55.Text, { style: [styles44.uploadFileName, { color: colors.primary }], numberOfLines: 1, children: [
19906
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Icon, { name: "file", size: 14, color: colors.primary }),
19907
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(import_react_native57.Text, { style: [styles46.uploadFileName, { color: colors.primary }], numberOfLines: 1, children: [
19403
19908
  pendingUpload.file_name,
19404
19909
  " (",
19405
19910
  formatFileSize(pendingUpload.file_size),
19406
19911
  ")"
19407
19912
  ] }),
19408
- /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_react_native55.TouchableOpacity, { onPress: onRemovePendingUpload, hitSlop: { top: 8, bottom: 8, left: 8, right: 8 }, children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(Icon, { name: "x", size: 14, color: colors.textSecondary, strokeWidth: 2.4 }) })
19913
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_react_native57.TouchableOpacity, { onPress: onRemovePendingUpload, hitSlop: { top: 8, bottom: 8, left: 8, right: 8 }, children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Icon, { name: "x", size: 14, color: colors.textSecondary, strokeWidth: 2.4 }) })
19409
19914
  ]
19410
19915
  }
19411
19916
  ),
19412
- /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_react_native55.View, { style: [styles44.pill, { backgroundColor: colors.surface, borderColor: colors.border }, isCaseFinalized && styles44.pillDisabled], children: [
19413
- /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
19414
- import_react_native55.TouchableOpacity,
19917
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(import_react_native57.View, { style: [styles46.pill, { backgroundColor: colors.surface, borderColor: colors.border }, isCaseFinalized && styles46.pillDisabled], children: [
19918
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
19919
+ import_react_native57.TouchableOpacity,
19415
19920
  {
19416
- style: styles44.attachButton,
19921
+ style: styles46.attachButton,
19417
19922
  onPress: onAttachClick,
19418
19923
  disabled: isUploading || isCaseFinalized,
19419
19924
  activeOpacity: 0.6,
19420
19925
  hitSlop: DEFAULT_HIT_SLOP,
19421
19926
  accessibilityLabel: t("uploadFile") || "Attach file",
19422
- children: isUploading ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_react_native55.ActivityIndicator, { size: "small", color: colors.primary }) : /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(Icon, { name: "paperclip", size: 20, color: colors.textSecondary })
19927
+ children: isUploading ? /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_react_native57.ActivityIndicator, { size: "small", color: colors.primary }) : /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Icon, { name: "paperclip", size: 20, color: colors.textSecondary })
19423
19928
  }
19424
19929
  ),
19425
- /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
19426
- import_react_native55.TextInput,
19930
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
19931
+ import_react_native57.TextInput,
19427
19932
  {
19428
- style: [styles44.input, { color: colors.text }],
19933
+ style: [styles46.input, { color: colors.text }],
19429
19934
  value: messageText,
19430
19935
  onChangeText: onMessageTextChange,
19431
19936
  placeholder: t("messageInputPlaceholder", { defaultValue: "Message\u2026" }),
@@ -19435,8 +19940,8 @@ function MessageComposer({
19435
19940
  editable: !isSending && !isCaseFinalized
19436
19941
  }
19437
19942
  ),
19438
- /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_react_native55.Animated.View, { style: { transform: [{ scale: pressScale }] }, children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
19439
- import_react_native55.TouchableOpacity,
19943
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_react_native57.Animated.View, { style: { transform: [{ scale: pressScale }] }, children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
19944
+ import_react_native57.TouchableOpacity,
19440
19945
  {
19441
19946
  onPress: onSend,
19442
19947
  onPressIn: handlePressIn,
@@ -19444,15 +19949,15 @@ function MessageComposer({
19444
19949
  disabled: !canSend,
19445
19950
  activeOpacity: 0.85,
19446
19951
  accessibilityLabel: t("send") || "Send",
19447
- children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_react_native55.Animated.View, { style: [styles44.sendButton, { backgroundColor: sendBgColor }], children: isSending ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_react_native55.ActivityIndicator, { size: "small", color: colors.primaryText }) : /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_react_native55.View, { style: styles44.sendIcon, children: /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(Icon, { name: "send", size: 18, color: canSend ? colors.primaryText : colors.textSecondary }) }) })
19952
+ children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_react_native57.Animated.View, { style: [styles46.sendButton, { backgroundColor: sendBgColor }], children: isSending ? /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_react_native57.ActivityIndicator, { size: "small", color: colors.primaryText }) : /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_react_native57.View, { style: styles46.sendIcon, children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Icon, { name: "send", size: 18, color: canSend ? colors.primaryText : colors.textSecondary }) }) })
19448
19953
  }
19449
19954
  ) })
19450
19955
  ] })
19451
19956
  ] });
19452
19957
  }
19453
- var styles44 = import_react_native55.StyleSheet.create({
19958
+ var styles46 = import_react_native57.StyleSheet.create({
19454
19959
  container: {
19455
- borderTopWidth: import_react_native55.StyleSheet.hairlineWidth,
19960
+ borderTopWidth: import_react_native57.StyleSheet.hairlineWidth,
19456
19961
  paddingHorizontal: spacing.md,
19457
19962
  paddingVertical: spacing.sm
19458
19963
  },
@@ -19475,7 +19980,7 @@ var styles44 = import_react_native55.StyleSheet.create({
19475
19980
  pill: {
19476
19981
  flexDirection: "row",
19477
19982
  alignItems: "center",
19478
- borderWidth: import_react_native55.StyleSheet.hairlineWidth,
19983
+ borderWidth: import_react_native57.StyleSheet.hairlineWidth,
19479
19984
  borderRadius: radii.xxl + 4,
19480
19985
  paddingHorizontal: spacing.xs + 2,
19481
19986
  paddingVertical: spacing.xs,
@@ -19514,7 +20019,7 @@ var styles44 = import_react_native55.StyleSheet.create({
19514
20019
  });
19515
20020
 
19516
20021
  // src/RedactoPrivacyCenter/components/CaseDetails/MessagesTab.tsx
19517
- var import_jsx_runtime57 = require("react/jsx-runtime");
20022
+ var import_jsx_runtime61 = require("react/jsx-runtime");
19518
20023
  var STREAK_GAP_MS = 5 * 60 * 1e3;
19519
20024
  function isStreakBoundary(a, b) {
19520
20025
  if (!a || !b) return true;
@@ -19544,11 +20049,11 @@ function sameDay(a, b) {
19544
20049
  }
19545
20050
  var MESSAGE_POLL_INTERVAL = 3e4;
19546
20051
  function MessagesTab({ caseUuid, isCaseFinalized = false }) {
19547
- const { t } = (0, import_react_i18next25.useTranslation)();
20052
+ const { t } = (0, import_react_i18next27.useTranslation)();
19548
20053
  const { accessToken, refreshToken, email, organizationId, workspaceId, onError, updateTokens } = useAuth();
19549
20054
  const { consentClient } = useBaseUrl();
19550
20055
  const { colors } = useTheme();
19551
- const authContext = (0, import_react38.useMemo)(() => ({
20056
+ const authContext = (0, import_react40.useMemo)(() => ({
19552
20057
  accessToken,
19553
20058
  refreshToken,
19554
20059
  onError,
@@ -19560,13 +20065,13 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
19560
20065
  caseUuid,
19561
20066
  authContext
19562
20067
  );
19563
- const [messageText, setMessageText] = (0, import_react38.useState)("");
19564
- const [pendingUpload, setPendingUpload] = (0, import_react38.useState)(null);
19565
- const [isSending, setIsSending] = (0, import_react38.useState)(false);
19566
- const [isUploading, setIsUploading] = (0, import_react38.useState)(false);
19567
- const [isSubmittingForRequest, setIsSubmittingForRequest] = (0, import_react38.useState)(false);
19568
- const flatListRef = (0, import_react38.useRef)(null);
19569
- (0, import_react38.useEffect)(() => {
20068
+ const [messageText, setMessageText] = (0, import_react40.useState)("");
20069
+ const [pendingUpload, setPendingUpload] = (0, import_react40.useState)(null);
20070
+ const [isSending, setIsSending] = (0, import_react40.useState)(false);
20071
+ const [isUploading, setIsUploading] = (0, import_react40.useState)(false);
20072
+ const [isSubmittingForRequest, setIsSubmittingForRequest] = (0, import_react40.useState)(false);
20073
+ const flatListRef = (0, import_react40.useRef)(null);
20074
+ (0, import_react40.useEffect)(() => {
19570
20075
  if (messages && messages.length > 0) {
19571
20076
  setTimeout(() => {
19572
20077
  var _a3;
@@ -19574,16 +20079,19 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
19574
20079
  }, 100);
19575
20080
  }
19576
20081
  }, [messages == null ? void 0 : messages.length]);
19577
- const refetchRef = (0, import_react38.useRef)(refetch);
20082
+ const refetchRef = (0, import_react40.useRef)(refetch);
19578
20083
  refetchRef.current = refetch;
19579
- (0, import_react38.useEffect)(() => {
20084
+ const authContextRef = (0, import_react40.useRef)(authContext);
20085
+ authContextRef.current = authContext;
20086
+ (0, import_react40.useEffect)(() => {
19580
20087
  if (isCaseFinalized) return;
19581
20088
  const id = setInterval(() => {
20089
+ if (isRefreshBlocked(authContextRef.current)) return;
19582
20090
  refetchRef.current();
19583
20091
  }, MESSAGE_POLL_INTERVAL);
19584
20092
  return () => clearInterval(id);
19585
20093
  }, [isCaseFinalized]);
19586
- const handleSend = (0, import_react38.useCallback)(async () => {
20094
+ const handleSend = (0, import_react40.useCallback)(async () => {
19587
20095
  if (isCaseFinalized) return;
19588
20096
  if (!messageText.trim() && !pendingUpload) return;
19589
20097
  if (!organizationId || !workspaceId) return;
@@ -19608,7 +20116,7 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
19608
20116
  setIsSending(false);
19609
20117
  }
19610
20118
  }, [isCaseFinalized, messageText, pendingUpload, organizationId, workspaceId, caseUuid, authContext, consentClient, refetch]);
19611
- const handleAttach = (0, import_react38.useCallback)(async () => {
20119
+ const handleAttach = (0, import_react40.useCallback)(async () => {
19612
20120
  if (isCaseFinalized) return;
19613
20121
  if (!organizationId || !workspaceId) return;
19614
20122
  try {
@@ -19643,10 +20151,10 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
19643
20151
  setIsUploading(false);
19644
20152
  }
19645
20153
  }, [isCaseFinalized, organizationId, workspaceId, caseUuid, authContext, consentClient]);
19646
- const handleUploadForRequest = (0, import_react38.useCallback)((_requestEventUuid) => {
20154
+ const handleUploadForRequest = (0, import_react40.useCallback)((_requestEventUuid) => {
19647
20155
  handleAttach();
19648
20156
  }, [handleAttach]);
19649
- const messagesList = (0, import_react38.useMemo)(() => {
20157
+ const messagesList = (0, import_react40.useMemo)(() => {
19650
20158
  const list = messages ? [...messages] : [];
19651
20159
  list.sort((a, b) => {
19652
20160
  const ta = new Date(a.created_at).getTime();
@@ -19655,17 +20163,17 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
19655
20163
  });
19656
20164
  return list;
19657
20165
  }, [messages]);
19658
- const keyExtractor = (0, import_react38.useCallback)((item) => item.uuid, []);
19659
- const renderMessage = (0, import_react38.useCallback)(
20166
+ const keyExtractor = (0, import_react40.useCallback)((item) => item.uuid, []);
20167
+ const renderMessage = (0, import_react40.useCallback)(
19660
20168
  ({ item, index }) => {
19661
20169
  const prev = index > 0 ? messagesList[index - 1] : void 0;
19662
20170
  const next = index < messagesList.length - 1 ? messagesList[index + 1] : void 0;
19663
20171
  const isFirstInGroup = isStreakBoundary(prev, item);
19664
20172
  const isLastInGroup = isStreakBoundary(item, next);
19665
20173
  const dateSeparator = getDateSeparator(prev == null ? void 0 : prev.created_at, item.created_at, t);
19666
- return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_jsx_runtime57.Fragment, { children: [
19667
- dateSeparator ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_react_native56.View, { style: styles45.daySeparator, children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_react_native56.View, { style: [styles45.dayPill, { backgroundColor: colors.surfaceAlt }], children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_react_native56.Text, { style: [styles45.dayPillText, { color: colors.textSecondary }], children: dateSeparator }) }) }) : null,
19668
- /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
20174
+ return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_jsx_runtime61.Fragment, { children: [
20175
+ dateSeparator ? /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_react_native58.View, { style: styles47.daySeparator, children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_react_native58.View, { style: [styles47.dayPill, { backgroundColor: colors.surfaceAlt }], children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_react_native58.Text, { style: [styles47.dayPillText, { color: colors.textSecondary }], children: dateSeparator }) }) }) : null,
20176
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
19669
20177
  MessageItem,
19670
20178
  {
19671
20179
  message: item,
@@ -19681,32 +20189,32 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
19681
20189
  [messagesList, handleUploadForRequest, isSubmittingForRequest, isCaseFinalized, colors, t]
19682
20190
  );
19683
20191
  if (isLoading) {
19684
- return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_react_native56.View, { style: styles45.centered, children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_react_native56.ActivityIndicator, { size: "large", color: colors.primary }) });
20192
+ return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_react_native58.View, { style: styles47.centered, children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_react_native58.ActivityIndicator, { size: "large", color: colors.primary }) });
19685
20193
  }
19686
20194
  if (error) {
19687
- return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_react_native56.View, { style: styles45.centered, children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_react_native56.Text, { style: [styles45.errorText, { color: colors.error }], children: t("errorLoadingMessages") || "Error loading messages" }) });
20195
+ return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_react_native58.View, { style: styles47.centered, children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_react_native58.Text, { style: [styles47.errorText, { color: colors.error }], children: t("errorLoadingMessages") || "Error loading messages" }) });
19688
20196
  }
19689
- return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_react_native56.View, { style: [styles45.container, { backgroundColor: colors.canvasSubtle }], children: [
19690
- /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_react_native56.View, { style: styles45.secureRow, children: [
19691
- /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(Icon, { name: "lock", size: 12, color: colors.textSecondary, strokeWidth: 2.2 }),
19692
- /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_react_native56.Text, { style: [styles45.secureText, { color: colors.textSecondary }], children: isCaseFinalized ? t("caseFinalizedMessagesTooltip") || "This case is finalized \u2014 messages can no longer be sent." : `${t("private", { defaultValue: "Private" })} \xB7 ${t("senderPrivacyTeam") || "Privacy Team"}` })
20197
+ return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_react_native58.View, { style: [styles47.container, { backgroundColor: colors.canvasSubtle }], children: [
20198
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_react_native58.View, { style: styles47.secureRow, children: [
20199
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Icon, { name: "lock", size: 12, color: colors.textSecondary, strokeWidth: 2.2 }),
20200
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_react_native58.Text, { style: [styles47.secureText, { color: colors.textSecondary }], children: isCaseFinalized ? t("caseFinalizedMessagesTooltip") || "This case is finalized \u2014 messages can no longer be sent." : `${t("private", { defaultValue: "Private" })} \xB7 ${t("senderPrivacyTeam") || "Privacy Team"}` })
19693
20201
  ] }),
19694
- /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
19695
- import_react_native56.FlatList,
20202
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
20203
+ import_react_native58.FlatList,
19696
20204
  {
19697
20205
  ref: flatListRef,
19698
- style: styles45.list,
20206
+ style: styles47.list,
19699
20207
  data: messagesList,
19700
20208
  keyExtractor,
19701
20209
  renderItem: renderMessage,
19702
20210
  contentContainerStyle: [
19703
- styles45.messagesList,
19704
- messagesList.length ? styles45.messagesListFill : styles45.messagesListCenter
20211
+ styles47.messagesList,
20212
+ messagesList.length ? styles47.messagesListFill : styles47.messagesListCenter
19705
20213
  ],
19706
- ListEmptyComponent: /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_react_native56.View, { style: styles45.emptyContainer, children: [
19707
- /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_react_native56.View, { style: [styles45.emptyIconWrap, { backgroundColor: colors.primarySoft }], children: /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(Icon, { name: "messages-square", size: 28, color: colors.primary, strokeWidth: 2 }) }),
19708
- /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_react_native56.Text, { style: [styles45.emptyTitle, { color: colors.text }], children: t("noMessagesYet") || "No messages yet" }),
19709
- /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_react_native56.Text, { style: [styles45.emptySubtitle, { color: colors.textSecondary }], children: t("noMessagesYetSubtitle", "Start the conversation below") })
20214
+ ListEmptyComponent: /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_react_native58.View, { style: styles47.emptyContainer, children: [
20215
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_react_native58.View, { style: [styles47.emptyIconWrap, { backgroundColor: colors.primarySoft }], children: /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Icon, { name: "messages-square", size: 28, color: colors.primary, strokeWidth: 2 }) }),
20216
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_react_native58.Text, { style: [styles47.emptyTitle, { color: colors.text }], children: t("noMessagesYet") || "No messages yet" }),
20217
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_react_native58.Text, { style: [styles47.emptySubtitle, { color: colors.textSecondary }], children: t("noMessagesYetSubtitle", "Start the conversation below") })
19710
20218
  ] }),
19711
20219
  onContentSizeChange: () => {
19712
20220
  var _a3;
@@ -19718,7 +20226,7 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
19718
20226
  removeClippedSubviews: true
19719
20227
  }
19720
20228
  ),
19721
- /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
20229
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
19722
20230
  MessageComposer,
19723
20231
  {
19724
20232
  messageText,
@@ -19734,7 +20242,7 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
19734
20242
  )
19735
20243
  ] });
19736
20244
  }
19737
- var styles45 = import_react_native56.StyleSheet.create({
20245
+ var styles47 = import_react_native58.StyleSheet.create({
19738
20246
  container: {
19739
20247
  flex: 1
19740
20248
  },
@@ -19817,17 +20325,17 @@ var styles45 = import_react_native56.StyleSheet.create({
19817
20325
  });
19818
20326
 
19819
20327
  // src/RedactoPrivacyCenter/components/CaseDetails/CaseDetailsPage.tsx
19820
- var import_jsx_runtime58 = require("react/jsx-runtime");
20328
+ var import_jsx_runtime62 = require("react/jsx-runtime");
19821
20329
  function CaseDetailsPage() {
19822
20330
  var _a3, _b;
19823
- const { t } = (0, import_react_i18next26.useTranslation)();
20331
+ const { t } = (0, import_react_i18next28.useTranslation)();
19824
20332
  const { navigateTo, selectedCase, setSelectedCase, pendingCaseUuid } = useInternalNavigation();
19825
20333
  const { accessToken, refreshToken, email, organizationId, workspaceId, onError, updateTokens } = useAuth();
19826
20334
  const { colors } = useTheme();
19827
20335
  const { keyboardOffset } = usePrivacyCenterInsets();
19828
20336
  const requestTypeLabels = useRequestTypeLabels();
19829
- const [activeTab, setActiveTab] = (0, import_react39.useState)("request-details");
19830
- const authContext = (0, import_react39.useMemo)(() => ({
20337
+ const [activeTab, setActiveTab] = (0, import_react41.useState)("request-details");
20338
+ const authContext = (0, import_react41.useMemo)(() => ({
19831
20339
  accessToken,
19832
20340
  refreshToken,
19833
20341
  onError,
@@ -19840,7 +20348,7 @@ function CaseDetailsPage() {
19840
20348
  email != null ? email : void 0,
19841
20349
  authContext
19842
20350
  );
19843
- (0, import_react39.useEffect)(() => {
20351
+ (0, import_react41.useEffect)(() => {
19844
20352
  if (!cases) return;
19845
20353
  if (cases.length === 0) {
19846
20354
  navigateTo("form");
@@ -19854,33 +20362,33 @@ function CaseDetailsPage() {
19854
20362
  navigateTo("form");
19855
20363
  }
19856
20364
  }, [cases, targetUuid, setSelectedCase, navigateTo]);
19857
- (0, import_react39.useEffect)(() => {
20365
+ (0, import_react41.useEffect)(() => {
19858
20366
  if (!selectedCase && !targetUuid && !isLoading) {
19859
20367
  navigateTo("form");
19860
20368
  }
19861
20369
  }, [selectedCase, targetUuid, isLoading, navigateTo]);
19862
20370
  if (!selectedCase) {
19863
- return /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_react_native57.View, { style: styles46.centered, children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_react_native57.ActivityIndicator, { size: "large", color: colors.primary }) : /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_react_native57.Text, { style: [styles46.emptyText, { color: colors.textSecondary }], children: t("noCasesYet") || "No case selected" }) });
20371
+ return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_native59.View, { style: styles48.centered, children: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_native59.ActivityIndicator, { size: "large", color: colors.primary }) : /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_native59.Text, { style: [styles48.emptyText, { color: colors.textSecondary }], children: t("noCasesYet") || "No case selected" }) });
19864
20372
  }
19865
20373
  const requestTypeLabel = requestTypeLabels[(_b = selectedCase.request_type) == null ? void 0 : _b.toUpperCase()] || selectedCase.request_type_display || formatCaseStatus(selectedCase.request_type || "");
19866
20374
  const tabs = [
19867
20375
  { id: "request-details", label: t("requestDetails") || "Request Details" },
19868
20376
  { id: "messages", label: t("messages") || "Messages" }
19869
20377
  ];
19870
- return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(
20378
+ return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(
19871
20379
  KeyboardAvoidingViewCompat,
19872
20380
  {
19873
- style: [styles46.container, { backgroundColor: colors.canvasSubtle }],
20381
+ style: [styles48.container, { backgroundColor: colors.canvasSubtle }],
19874
20382
  behavior: "padding",
19875
- keyboardVerticalOffset: import_react_native57.Platform.OS === "ios" ? keyboardOffset : 0,
20383
+ keyboardVerticalOffset: import_react_native59.Platform.OS === "ios" ? keyboardOffset : 0,
19876
20384
  children: [
19877
- /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(import_react_native57.View, { style: styles46.headerWrap, children: [
19878
- /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_react_native57.View, { style: [styles46.heroCard, elevation.card, { backgroundColor: colors.surface }], children: /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(import_react_native57.View, { style: styles46.heroInner, children: [
19879
- /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_react_native57.View, { style: [styles46.accent, { backgroundColor: getCaseStatusColor(selectedCase.status, colors) }] }),
19880
- /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(import_react_native57.View, { style: styles46.heroBody, children: [
19881
- /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(import_react_native57.View, { style: styles46.heroTopRow, children: [
19882
- /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_react_native57.View, { style: [styles46.typeChip, { backgroundColor: withAlpha(getRequestTypeColor(selectedCase.request_type, colors), 0.12) }], children: /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_react_native57.Text, { style: [styles46.typeChipText, { color: getRequestTypeColor(selectedCase.request_type, colors) }], numberOfLines: 1, children: requestTypeLabel }) }),
19883
- /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
20385
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_react_native59.View, { style: styles48.headerWrap, children: [
20386
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_native59.View, { style: [styles48.heroCard, elevation.card, { backgroundColor: colors.surface }], children: /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_react_native59.View, { style: styles48.heroInner, children: [
20387
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_native59.View, { style: [styles48.accent, { backgroundColor: getCaseStatusColor(selectedCase.status, colors) }] }),
20388
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_react_native59.View, { style: styles48.heroBody, children: [
20389
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_react_native59.View, { style: styles48.heroTopRow, children: [
20390
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_native59.View, { style: [styles48.typeChip, { backgroundColor: withAlpha(getRequestTypeColor(selectedCase.request_type, colors), 0.12) }], children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_native59.Text, { style: [styles48.typeChipText, { color: getRequestTypeColor(selectedCase.request_type, colors) }], numberOfLines: 1, children: requestTypeLabel }) }),
20391
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
19884
20392
  PCBadge,
19885
20393
  {
19886
20394
  status: getCaseStatusVariant(selectedCase.status),
@@ -19889,10 +20397,10 @@ function CaseDetailsPage() {
19889
20397
  }
19890
20398
  )
19891
20399
  ] }),
19892
- /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_react_native57.Text, { style: [styles46.caseId, { color: colors.text }], numberOfLines: 1, children: selectedCase.case_id })
20400
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_native59.Text, { style: [styles48.caseId, { color: colors.text }], numberOfLines: 1, children: selectedCase.case_id })
19893
20401
  ] })
19894
20402
  ] }) }),
19895
- /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
20403
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
19896
20404
  Segmented,
19897
20405
  {
19898
20406
  options: tabs.map((tab) => ({ value: tab.id, label: tab.label })),
@@ -19901,18 +20409,18 @@ function CaseDetailsPage() {
19901
20409
  }
19902
20410
  )
19903
20411
  ] }),
19904
- /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_react_native57.View, { style: styles46.tabContent, children: activeTab === "request-details" ? /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
20412
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_native59.View, { style: styles48.tabContent, children: activeTab === "request-details" ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
19905
20413
  RequestDetailsTab,
19906
20414
  {
19907
20415
  selectedCase,
19908
20416
  requestTypeLabel
19909
20417
  }
19910
- ) : /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(MessagesTab, { caseUuid: selectedCase.uuid, isCaseFinalized: isTerminalCaseStatus(selectedCase.status) }) })
20418
+ ) : /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(MessagesTab, { caseUuid: selectedCase.uuid, isCaseFinalized: isTerminalCaseStatus(selectedCase.status) }) })
19911
20419
  ]
19912
20420
  }
19913
20421
  );
19914
20422
  }
19915
- var styles46 = import_react_native57.StyleSheet.create({
20423
+ var styles48 = import_react_native59.StyleSheet.create({
19916
20424
  container: {
19917
20425
  flex: 1
19918
20426
  },
@@ -19977,36 +20485,36 @@ var styles46 = import_react_native57.StyleSheet.create({
19977
20485
  });
19978
20486
 
19979
20487
  // src/RedactoPrivacyCenter/components/NotificationHub/NotificationsScreen.tsx
19980
- var import_react42 = require("react");
19981
- var import_react_native63 = require("react-native");
19982
- var import_react_i18next28 = require("react-i18next");
20488
+ var import_react44 = require("react");
20489
+ var import_react_native65 = require("react-native");
20490
+ var import_react_i18next30 = require("react-i18next");
19983
20491
 
19984
20492
  // src/RedactoPrivacyCenter/components/NotificationHub/NotificationRow.tsx
19985
- var import_react_native61 = require("react-native");
19986
- var import_react_i18next27 = require("react-i18next");
20493
+ var import_react_native63 = require("react-native");
20494
+ var import_react_i18next29 = require("react-i18next");
19987
20495
 
19988
20496
  // src/RedactoPrivacyCenter/components/NotificationHub/NotificationCTAButton.tsx
19989
- var import_react_native58 = require("react-native");
19990
- var import_jsx_runtime59 = require("react/jsx-runtime");
20497
+ var import_react_native60 = require("react-native");
20498
+ var import_jsx_runtime63 = require("react/jsx-runtime");
19991
20499
  var NotificationCTAButton = ({ cta, onPress }) => {
19992
20500
  const { colors } = useTheme();
19993
20501
  const tone = cta.style === "danger" ? colors.error : colors.primary;
19994
20502
  const isPrimary = cta.style === "primary" || cta.style === "danger";
19995
- return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
19996
- import_react_native58.TouchableOpacity,
20503
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
20504
+ import_react_native60.TouchableOpacity,
19997
20505
  {
19998
20506
  onPress,
19999
20507
  activeOpacity: 0.7,
20000
20508
  style: [
20001
- styles47.button,
20509
+ styles49.button,
20002
20510
  isPrimary ? { backgroundColor: tone } : { backgroundColor: colors.primarySoft }
20003
20511
  ],
20004
20512
  accessibilityRole: "button",
20005
- children: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(import_react_native58.Text, { style: [styles47.label, { color: isPrimary ? colors.primaryText : colors.primary }], numberOfLines: 1, children: cta.label })
20513
+ children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_react_native60.Text, { style: [styles49.label, { color: isPrimary ? colors.primaryText : colors.primary }], numberOfLines: 1, children: cta.label })
20006
20514
  }
20007
20515
  );
20008
20516
  };
20009
- var styles47 = import_react_native58.StyleSheet.create({
20517
+ var styles49 = import_react_native60.StyleSheet.create({
20010
20518
  button: {
20011
20519
  paddingHorizontal: spacing.lg,
20012
20520
  paddingVertical: spacing.sm,
@@ -20021,8 +20529,8 @@ var styles47 = import_react_native58.StyleSheet.create({
20021
20529
  });
20022
20530
 
20023
20531
  // src/RedactoPrivacyCenter/components/NotificationHub/NotificationIcon.tsx
20024
- var import_react_native59 = require("react-native");
20025
- var import_jsx_runtime60 = require("react/jsx-runtime");
20532
+ var import_react_native61 = require("react-native");
20533
+ var import_jsx_runtime64 = require("react/jsx-runtime");
20026
20534
  var CATEGORY_ICON = {
20027
20535
  guardian: "user-round",
20028
20536
  consent: "clock",
@@ -20035,18 +20543,18 @@ var NotificationIcon = ({ notificationType, size = 40 }) => {
20035
20543
  var _a3;
20036
20544
  const category = (_a3 = TYPE_TO_ICON_CATEGORY[notificationType]) != null ? _a3 : "system";
20037
20545
  const color = ICON_COLORS[category];
20038
- return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
20039
- import_react_native59.View,
20546
+ return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
20547
+ import_react_native61.View,
20040
20548
  {
20041
20549
  style: [
20042
- styles48.wrap,
20550
+ styles50.wrap,
20043
20551
  { width: size, height: size, borderRadius: radii.md, backgroundColor: withAlpha(color, 0.13) }
20044
20552
  ],
20045
- children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Icon, { name: CATEGORY_ICON[category], size: Math.round(size * 0.5), color, strokeWidth: 2 })
20553
+ children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(Icon, { name: CATEGORY_ICON[category], size: Math.round(size * 0.5), color, strokeWidth: 2 })
20046
20554
  }
20047
20555
  );
20048
20556
  };
20049
- var styles48 = import_react_native59.StyleSheet.create({
20557
+ var styles50 = import_react_native61.StyleSheet.create({
20050
20558
  wrap: {
20051
20559
  alignItems: "center",
20052
20560
  justifyContent: "center"
@@ -20054,15 +20562,15 @@ var styles48 = import_react_native59.StyleSheet.create({
20054
20562
  });
20055
20563
 
20056
20564
  // src/RedactoPrivacyCenter/components/NotificationHub/SwipeableRow.tsx
20057
- var import_react40 = require("react");
20058
- var import_react_native60 = require("react-native");
20059
- var import_jsx_runtime61 = require("react/jsx-runtime");
20565
+ var import_react42 = require("react");
20566
+ var import_react_native62 = require("react-native");
20567
+ var import_jsx_runtime65 = require("react/jsx-runtime");
20060
20568
  var ACTION_WIDTH = 80;
20061
20569
  var CLAIM_THRESHOLD = 8;
20062
20570
  var SwipeableRow = ({ actions, background, children }) => {
20063
20571
  const { colors } = useTheme();
20064
- const translateX = (0, import_react40.useRef)(new import_react_native60.Animated.Value(0)).current;
20065
- const baseX = (0, import_react40.useRef)(0);
20572
+ const translateX = (0, import_react42.useRef)(new import_react_native62.Animated.Value(0)).current;
20573
+ const baseX = (0, import_react42.useRef)(0);
20066
20574
  const maxOpen = actions.length * ACTION_WIDTH;
20067
20575
  const toneColor2 = {
20068
20576
  primary: colors.primary,
@@ -20071,10 +20579,10 @@ var SwipeableRow = ({ actions, background, children }) => {
20071
20579
  };
20072
20580
  const settle = (to) => {
20073
20581
  baseX.current = to;
20074
- import_react_native60.Animated.spring(translateX, { toValue: to, useNativeDriver: true, bounciness: 0, speed: 18 }).start();
20582
+ import_react_native62.Animated.spring(translateX, { toValue: to, useNativeDriver: true, bounciness: 0, speed: 18 }).start();
20075
20583
  };
20076
- const panResponder = (0, import_react40.useMemo)(
20077
- () => import_react_native60.PanResponder.create({
20584
+ const panResponder = (0, import_react42.useMemo)(
20585
+ () => import_react_native62.PanResponder.create({
20078
20586
  onMoveShouldSetPanResponder: (_, g) => {
20079
20587
  const horizontal = Math.abs(g.dx) > Math.abs(g.dy) * 1.5;
20080
20588
  if (!horizontal) return false;
@@ -20095,37 +20603,37 @@ var SwipeableRow = ({ actions, background, children }) => {
20095
20603
  [maxOpen]
20096
20604
  );
20097
20605
  if (actions.length === 0) {
20098
- return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_jsx_runtime61.Fragment, { children });
20606
+ return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_jsx_runtime65.Fragment, { children });
20099
20607
  }
20100
20608
  const runAction = (action) => {
20101
20609
  settle(0);
20102
20610
  action.onPress();
20103
20611
  };
20104
- return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_react_native60.View, { style: styles49.root, children: [
20105
- /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_react_native60.View, { style: styles49.actionsLayer, pointerEvents: "box-none", children: actions.map((action) => /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(
20106
- import_react_native60.TouchableOpacity,
20612
+ return /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(import_react_native62.View, { style: styles51.root, children: [
20613
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_react_native62.View, { style: styles51.actionsLayer, pointerEvents: "box-none", children: actions.map((action) => /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(
20614
+ import_react_native62.TouchableOpacity,
20107
20615
  {
20108
- style: [styles49.action, { width: ACTION_WIDTH, backgroundColor: toneColor2[action.tone] }],
20616
+ style: [styles51.action, { width: ACTION_WIDTH, backgroundColor: toneColor2[action.tone] }],
20109
20617
  onPress: () => runAction(action),
20110
20618
  activeOpacity: 0.85,
20111
20619
  accessibilityRole: "button",
20112
20620
  accessibilityLabel: action.label,
20113
20621
  children: [
20114
- /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Icon, { name: action.icon, size: 20, color: colors.primaryText, strokeWidth: 2.2 }),
20115
- /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_react_native60.Text, { style: [styles49.actionLabel, { color: colors.primaryText }], numberOfLines: 1, children: action.label })
20622
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Icon, { name: action.icon, size: 20, color: colors.primaryText, strokeWidth: 2.2 }),
20623
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_react_native62.Text, { style: [styles51.actionLabel, { color: colors.primaryText }], numberOfLines: 1, children: action.label })
20116
20624
  ]
20117
20625
  },
20118
20626
  action.key
20119
20627
  )) }),
20120
- /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_react_native60.Animated.View, { style: [{ backgroundColor: background, transform: [{ translateX }] }], ...panResponder.panHandlers, children })
20628
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_react_native62.Animated.View, { style: [{ backgroundColor: background, transform: [{ translateX }] }], ...panResponder.panHandlers, children })
20121
20629
  ] });
20122
20630
  };
20123
- var styles49 = import_react_native60.StyleSheet.create({
20631
+ var styles51 = import_react_native62.StyleSheet.create({
20124
20632
  root: {
20125
20633
  position: "relative"
20126
20634
  },
20127
20635
  actionsLayer: {
20128
- ...import_react_native60.StyleSheet.absoluteFillObject,
20636
+ ...import_react_native62.StyleSheet.absoluteFillObject,
20129
20637
  flexDirection: "row",
20130
20638
  justifyContent: "flex-end"
20131
20639
  },
@@ -20158,10 +20666,10 @@ var formatTimeAgo = (dateString, t) => {
20158
20666
  };
20159
20667
 
20160
20668
  // src/RedactoPrivacyCenter/components/NotificationHub/NotificationRow.tsx
20161
- var import_jsx_runtime62 = require("react/jsx-runtime");
20669
+ var import_jsx_runtime66 = require("react/jsx-runtime");
20162
20670
  var NotificationRow = ({ notification, onPress, onMarkRead, onAcknowledge }) => {
20163
20671
  var _a3, _b;
20164
- const { t } = (0, import_react_i18next27.useTranslation)();
20672
+ const { t } = (0, import_react_i18next29.useTranslation)();
20165
20673
  const { colors } = useTheme();
20166
20674
  const isUnread = !notification.is_read;
20167
20675
  const statusLabel = notification.status_label_display || notification.status_label;
@@ -20188,35 +20696,35 @@ var NotificationRow = ({ notification, onPress, onMarkRead, onAcknowledge }) =>
20188
20696
  onPress: onAcknowledge
20189
20697
  });
20190
20698
  }
20191
- return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(SwipeableRow, { actions, background: colors.surface, children: /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_react_native61.TouchableOpacity, { onPress, activeOpacity: 0.6, accessibilityRole: "button", style: styles50.row, children: [
20192
- isUnread ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_native61.View, { style: [styles50.accent, { backgroundColor: accent }] }) : null,
20193
- /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(NotificationIcon, { notificationType: notification.notification_type, size: 36 }),
20194
- /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_react_native61.View, { style: styles50.content, children: [
20195
- /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_react_native61.View, { style: styles50.titleRow, children: [
20196
- /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
20197
- import_react_native61.Text,
20699
+ return /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(SwipeableRow, { actions, background: colors.surface, children: /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(import_react_native63.TouchableOpacity, { onPress, activeOpacity: 0.6, accessibilityRole: "button", style: styles52.row, children: [
20700
+ isUnread ? /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_native63.View, { style: [styles52.accent, { backgroundColor: accent }] }) : null,
20701
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(NotificationIcon, { notificationType: notification.notification_type, size: 36 }),
20702
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(import_react_native63.View, { style: styles52.content, children: [
20703
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(import_react_native63.View, { style: styles52.titleRow, children: [
20704
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
20705
+ import_react_native63.Text,
20198
20706
  {
20199
- style: [styles50.title, { color: colors.text, fontWeight: isUnread ? "700" : "600" }],
20707
+ style: [styles52.title, { color: colors.text, fontWeight: isUnread ? "700" : "600" }],
20200
20708
  numberOfLines: 2,
20201
20709
  children: notification.title
20202
20710
  }
20203
20711
  ),
20204
- isUnread ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_native61.View, { style: [styles50.unreadDot, { backgroundColor: colors.primary }] }) : null
20712
+ isUnread ? /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_native63.View, { style: [styles52.unreadDot, { backgroundColor: colors.primary }] }) : null
20205
20713
  ] }),
20206
- /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_react_native61.View, { style: styles50.metaRow, children: [
20207
- statusLabel ? /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_jsx_runtime62.Fragment, { children: [
20208
- /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_native61.View, { style: [styles50.statusDot, { backgroundColor: accent }] }),
20209
- /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_native61.Text, { style: [styles50.metaText, { color: colors.textSecondary }], numberOfLines: 1, children: statusLabel }),
20210
- /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_native61.Text, { style: [styles50.metaDivider, { color: colors.textSecondary }], children: "\xB7" })
20714
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(import_react_native63.View, { style: styles52.metaRow, children: [
20715
+ statusLabel ? /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(import_jsx_runtime66.Fragment, { children: [
20716
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_native63.View, { style: [styles52.statusDot, { backgroundColor: accent }] }),
20717
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_native63.Text, { style: [styles52.metaText, { color: colors.textSecondary }], numberOfLines: 1, children: statusLabel }),
20718
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_native63.Text, { style: [styles52.metaDivider, { color: colors.textSecondary }], children: "\xB7" })
20211
20719
  ] }) : null,
20212
- /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_native61.Text, { style: [styles50.metaText, { color: colors.textSecondary }], children: formatTimeAgo(notification.created_at, t) })
20720
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_native63.Text, { style: [styles52.metaText, { color: colors.textSecondary }], children: formatTimeAgo(notification.created_at, t) })
20213
20721
  ] }),
20214
- showAcknowledge && ackCta ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_native61.View, { style: styles50.ackWrap, children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(NotificationCTAButton, { cta: ackCta, onPress: onAcknowledge }) }) : null
20722
+ showAcknowledge && ackCta ? /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_native63.View, { style: styles52.ackWrap, children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(NotificationCTAButton, { cta: ackCta, onPress: onAcknowledge }) }) : null
20215
20723
  ] }),
20216
- /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_native61.View, { style: styles50.chevron, children: /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(Icon, { name: "chevron-right", size: 18, color: colors.textSecondary }) })
20724
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_native63.View, { style: styles52.chevron, children: /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(Icon, { name: "chevron-right", size: 18, color: colors.textSecondary }) })
20217
20725
  ] }) });
20218
20726
  };
20219
- var styles50 = import_react_native61.StyleSheet.create({
20727
+ var styles52 = import_react_native63.StyleSheet.create({
20220
20728
  row: {
20221
20729
  flexDirection: "row",
20222
20730
  alignItems: "center",
@@ -20279,25 +20787,25 @@ var styles50 = import_react_native61.StyleSheet.create({
20279
20787
  });
20280
20788
 
20281
20789
  // src/RedactoPrivacyCenter/components/NotificationHub/useNotificationActions.ts
20282
- var import_react41 = require("react");
20283
- var import_react_native62 = require("react-native");
20790
+ var import_react43 = require("react");
20791
+ var import_react_native64 = require("react-native");
20284
20792
  var useNotificationActions = () => {
20285
20793
  const { navigateTo, setSelectedCase } = useInternalNavigation();
20286
20794
  const { accessToken, refreshToken, onError, updateTokens, organizationId, workspaceId, email } = useAuth();
20287
20795
  const { consentClient } = useBaseUrl();
20288
20796
  const { langParam } = useCurrentLanguage();
20289
- const authContext = (0, import_react41.useMemo)(
20797
+ const authContext = (0, import_react43.useMemo)(
20290
20798
  () => ({ accessToken, refreshToken, onError, updateTokens }),
20291
20799
  [accessToken, refreshToken, onError, updateTokens]
20292
20800
  );
20293
- const hasAcknowledgeCTA = (0, import_react41.useCallback)(
20801
+ const hasAcknowledgeCTA = (0, import_react43.useCallback)(
20294
20802
  (notification) => {
20295
20803
  var _a3, _b;
20296
20804
  return (_b = (_a3 = notification.ctas) == null ? void 0 : _a3.some((cta) => cta.action_type === "acknowledge")) != null ? _b : false;
20297
20805
  },
20298
20806
  []
20299
20807
  );
20300
- const handleMarkRead = (0, import_react41.useCallback)(
20808
+ const handleMarkRead = (0, import_react43.useCallback)(
20301
20809
  async (notificationUuid) => {
20302
20810
  if (!organizationId || !workspaceId) return false;
20303
20811
  const result = await markNotificationRead(organizationId, workspaceId, notificationUuid, authContext, consentClient);
@@ -20305,12 +20813,12 @@ var useNotificationActions = () => {
20305
20813
  },
20306
20814
  [organizationId, workspaceId, authContext, consentClient]
20307
20815
  );
20308
- const handleMarkAllRead = (0, import_react41.useCallback)(async () => {
20816
+ const handleMarkAllRead = (0, import_react43.useCallback)(async () => {
20309
20817
  if (!organizationId || !workspaceId) return false;
20310
20818
  const result = await markAllRead(organizationId, workspaceId, authContext, consentClient);
20311
20819
  return result !== null;
20312
20820
  }, [organizationId, workspaceId, authContext, consentClient]);
20313
- const handleAcknowledge = (0, import_react41.useCallback)(
20821
+ const handleAcknowledge = (0, import_react43.useCallback)(
20314
20822
  async (notificationUuid) => {
20315
20823
  if (!organizationId || !workspaceId) return false;
20316
20824
  const result = await acknowledgeNotification(organizationId, workspaceId, notificationUuid, authContext, consentClient);
@@ -20318,7 +20826,7 @@ var useNotificationActions = () => {
20318
20826
  },
20319
20827
  [organizationId, workspaceId, authContext, consentClient]
20320
20828
  );
20321
- const handleCTAClick = (0, import_react41.useCallback)(
20829
+ const handleCTAClick = (0, import_react43.useCallback)(
20322
20830
  async (notification, cta) => {
20323
20831
  var _a3;
20324
20832
  if (cta.action_type === "acknowledge") {
@@ -20352,7 +20860,7 @@ var useNotificationActions = () => {
20352
20860
  const url = cta.url;
20353
20861
  if (!/^https?:\/\//i.test(url)) return null;
20354
20862
  try {
20355
- await import_react_native62.Linking.openURL(url);
20863
+ await import_react_native64.Linking.openURL(url);
20356
20864
  return "opened";
20357
20865
  } catch {
20358
20866
  return null;
@@ -20375,7 +20883,7 @@ var useNotificationActions = () => {
20375
20883
  };
20376
20884
 
20377
20885
  // src/RedactoPrivacyCenter/components/NotificationHub/NotificationsScreen.tsx
20378
- var import_jsx_runtime63 = require("react/jsx-runtime");
20886
+ var import_jsx_runtime67 = require("react/jsx-runtime");
20379
20887
  var EMPTY_SUMMARY = { total: 0, unread: 0, action_needed: 0, acknowledged: 0 };
20380
20888
  var READ_FILTER_TO_PARAM = {
20381
20889
  all: void 0,
@@ -20383,7 +20891,7 @@ var READ_FILTER_TO_PARAM = {
20383
20891
  read: true
20384
20892
  };
20385
20893
  var NotificationsScreen = () => {
20386
- const { t } = (0, import_react_i18next28.useTranslation)();
20894
+ const { t } = (0, import_react_i18next30.useTranslation)();
20387
20895
  const { colors } = useTheme();
20388
20896
  const { langParam } = useCurrentLanguage();
20389
20897
  const { listBottom } = usePrivacyCenterInsets();
@@ -20400,15 +20908,15 @@ var NotificationsScreen = () => {
20400
20908
  handleAcknowledge,
20401
20909
  handleCTAClick
20402
20910
  } = useNotificationActions();
20403
- const [notifications, setNotifications] = (0, import_react42.useState)([]);
20404
- const [summary, setSummary] = (0, import_react42.useState)(EMPTY_SUMMARY);
20405
- const [activeTab, setActiveTab] = (0, import_react42.useState)("all");
20406
- const [readFilter, setReadFilter] = (0, import_react42.useState)("all");
20407
- const [isLoading, setIsLoading] = (0, import_react42.useState)(true);
20408
- const [isRefreshing2, setIsRefreshing] = (0, import_react42.useState)(false);
20409
- const [filterOpen, setFilterOpen] = (0, import_react42.useState)(false);
20911
+ const [notifications, setNotifications] = (0, import_react44.useState)([]);
20912
+ const [summary, setSummary] = (0, import_react44.useState)(EMPTY_SUMMARY);
20913
+ const [activeTab, setActiveTab] = (0, import_react44.useState)("all");
20914
+ const [readFilter, setReadFilter] = (0, import_react44.useState)("all");
20915
+ const [isLoading, setIsLoading] = (0, import_react44.useState)(true);
20916
+ const [isRefreshing2, setIsRefreshing] = (0, import_react44.useState)(false);
20917
+ const [filterOpen, setFilterOpen] = (0, import_react44.useState)(false);
20410
20918
  const isFiltered = activeTab !== "all" || readFilter !== "all";
20411
- const loadNotifications = (0, import_react42.useCallback)(
20919
+ const loadNotifications = (0, import_react44.useCallback)(
20412
20920
  async (includeSummary = false, silent = false) => {
20413
20921
  if (!organizationId || !workspaceId) return;
20414
20922
  if (!silent) setIsLoading(true);
@@ -20438,18 +20946,21 @@ var NotificationsScreen = () => {
20438
20946
  },
20439
20947
  [organizationId, workspaceId, activeTab, readFilter, authContext, consentClient, langParam]
20440
20948
  );
20441
- (0, import_react42.useEffect)(() => {
20949
+ (0, import_react44.useEffect)(() => {
20442
20950
  loadNotifications(true);
20443
20951
  }, [loadNotifications]);
20444
- const loadRef = (0, import_react42.useRef)(loadNotifications);
20952
+ const loadRef = (0, import_react44.useRef)(loadNotifications);
20445
20953
  loadRef.current = loadNotifications;
20446
- (0, import_react42.useEffect)(() => {
20954
+ const authContextRef = (0, import_react44.useRef)(authContext);
20955
+ authContextRef.current = authContext;
20956
+ (0, import_react44.useEffect)(() => {
20447
20957
  const id = setInterval(() => {
20958
+ if (isRefreshBlocked(authContextRef.current)) return;
20448
20959
  loadRef.current(false, true);
20449
20960
  }, POLL_INTERVAL);
20450
20961
  return () => clearInterval(id);
20451
20962
  }, []);
20452
- const onNotificationClick = (0, import_react42.useCallback)(
20963
+ const onNotificationClick = (0, import_react44.useCallback)(
20453
20964
  async (notification) => {
20454
20965
  const shouldMarkRead = !notification.is_read;
20455
20966
  const shouldAutoAcknowledge = !notification.is_acknowledged && !hasAcknowledgeCTA(notification);
@@ -20470,7 +20981,7 @@ var NotificationsScreen = () => {
20470
20981
  },
20471
20982
  [hasAcknowledgeCTA, handleAcknowledge, handleMarkRead]
20472
20983
  );
20473
- const onRowPress = (0, import_react42.useCallback)(
20984
+ const onRowPress = (0, import_react44.useCallback)(
20474
20985
  async (notification) => {
20475
20986
  var _a3;
20476
20987
  const linkCta = (_a3 = notification.ctas) == null ? void 0 : _a3.find((cta) => cta.action_type === "link" && cta.url);
@@ -20488,7 +20999,7 @@ var NotificationsScreen = () => {
20488
20999
  },
20489
21000
  [handleCTAClick, onNotificationClick]
20490
21001
  );
20491
- const onMarkReadRow = (0, import_react42.useCallback)(
21002
+ const onMarkReadRow = (0, import_react44.useCallback)(
20492
21003
  async (notification) => {
20493
21004
  if (notification.is_read) return;
20494
21005
  const ok = await handleMarkRead(notification.uuid);
@@ -20498,7 +21009,7 @@ var NotificationsScreen = () => {
20498
21009
  },
20499
21010
  [handleMarkRead]
20500
21011
  );
20501
- const onAcknowledgeRow = (0, import_react42.useCallback)(
21012
+ const onAcknowledgeRow = (0, import_react44.useCallback)(
20502
21013
  async (notification) => {
20503
21014
  if (notification.is_acknowledged) return;
20504
21015
  const ok = await handleAcknowledge(notification.uuid);
@@ -20515,22 +21026,29 @@ var NotificationsScreen = () => {
20515
21026
  },
20516
21027
  [handleAcknowledge]
20517
21028
  );
20518
- const onRefresh = (0, import_react42.useCallback)(() => {
21029
+ const onMarkAllRead = (0, import_react44.useCallback)(async () => {
21030
+ const ok = await handleMarkAllRead();
21031
+ if (!ok) return;
21032
+ setNotifications((prev) => prev.map((item) => ({ ...item, is_read: true })));
21033
+ setSummary((prev) => ({ ...prev, unread: 0 }));
21034
+ if (readFilter !== "all") loadNotifications(true, true);
21035
+ }, [handleMarkAllRead, readFilter, loadNotifications]);
21036
+ const onRefresh = (0, import_react44.useCallback)(() => {
20519
21037
  setIsRefreshing(true);
20520
21038
  loadNotifications(true, true);
20521
21039
  }, [loadNotifications]);
20522
- const sections = (0, import_react42.useMemo)(
21040
+ const sections = (0, import_react44.useMemo)(
20523
21041
  () => groupByTime(notifications, (item) => item.created_at, classifyTime),
20524
21042
  [notifications, classifyTime]
20525
21043
  );
20526
- const header = /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_react_native63.View, { style: styles51.header, children: [
20527
- /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_react_native63.View, { style: styles51.titleRow, children: [
20528
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_react_native63.Text, { style: [styles51.screenTitle, { color: colors.text }], children: t("notifications", { defaultValue: "Notifications" }) }),
20529
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
20530
- import_react_native63.TouchableOpacity,
21044
+ const header = /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_react_native65.View, { style: styles53.header, children: [
21045
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_react_native65.View, { style: styles53.titleRow, children: [
21046
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.Text, { style: [styles53.screenTitle, { color: colors.text }], children: t("notifications", { defaultValue: "Notifications" }) }),
21047
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
21048
+ import_react_native65.TouchableOpacity,
20531
21049
  {
20532
21050
  style: [
20533
- styles51.filterBtn,
21051
+ styles53.filterBtn,
20534
21052
  {
20535
21053
  backgroundColor: isFiltered ? colors.primarySoft : colors.surface,
20536
21054
  borderColor: isFiltered ? colors.primary : colors.border
@@ -20539,30 +21057,30 @@ var NotificationsScreen = () => {
20539
21057
  onPress: () => setFilterOpen(true),
20540
21058
  accessibilityRole: "button",
20541
21059
  accessibilityLabel: t("filter") || "Filter",
20542
- children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Icon, { name: "sliders-horizontal", size: 18, color: isFiltered ? colors.primary : colors.text })
21060
+ children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Icon, { name: "sliders-horizontal", size: 18, color: isFiltered ? colors.primary : colors.text })
20543
21061
  }
20544
21062
  )
20545
21063
  ] }),
20546
- summary.unread > 0 ? /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_react_native63.TouchableOpacity, { style: styles51.markAllBtn, onPress: handleMarkAllRead, activeOpacity: 0.7, accessibilityRole: "button", children: [
20547
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Icon, { name: "check-check", size: 15, color: colors.primary, strokeWidth: 2.2 }),
20548
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_react_native63.Text, { style: [styles51.markAllLabel, { color: colors.primary }], children: t("markAllAsRead") || "Mark all as read" })
21064
+ summary.unread > 0 ? /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_react_native65.TouchableOpacity, { style: styles53.markAllBtn, onPress: onMarkAllRead, activeOpacity: 0.7, accessibilityRole: "button", children: [
21065
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Icon, { name: "check-check", size: 15, color: colors.primary, strokeWidth: 2.2 }),
21066
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.Text, { style: [styles53.markAllLabel, { color: colors.primary }], children: t("markAllAsRead") || "Mark all as read" })
20549
21067
  ] }) : null
20550
21068
  ] });
20551
- return /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_jsx_runtime63.Fragment, { children: [
20552
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
20553
- import_react_native63.FlatList,
21069
+ return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_jsx_runtime67.Fragment, { children: [
21070
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
21071
+ import_react_native65.FlatList,
20554
21072
  {
20555
21073
  data: sections,
20556
21074
  keyExtractor: (section2) => section2.key,
20557
- style: [styles51.list, { backgroundColor: colors.canvasSubtle }],
20558
- contentContainerStyle: [styles51.listContent, { flexGrow: 1, paddingBottom: listBottom }],
21075
+ style: [styles53.list, { backgroundColor: colors.canvasSubtle }],
21076
+ contentContainerStyle: [styles53.listContent, { flexGrow: 1, paddingBottom: listBottom }],
20559
21077
  ListHeaderComponent: header,
20560
21078
  showsVerticalScrollIndicator: false,
20561
- refreshControl: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_react_native63.RefreshControl, { refreshing: isRefreshing2, onRefresh, tintColor: colors.primary, colors: [colors.primary] }),
20562
- renderItem: ({ item: section2 }) => /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_react_native63.View, { style: styles51.section, children: [
20563
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_react_native63.Text, { style: [styles51.sectionTitle, { color: colors.textSecondary }], children: section2.title }),
20564
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_react_native63.View, { style: [styles51.cardShadow, elevation.card], children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_react_native63.View, { style: [styles51.cardClip, { backgroundColor: colors.surface }], children: section2.data.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_react_native63.View, { children: [
20565
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
21079
+ refreshControl: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.RefreshControl, { refreshing: isRefreshing2, onRefresh, tintColor: colors.primary, colors: [colors.primary] }),
21080
+ renderItem: ({ item: section2 }) => /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_react_native65.View, { style: styles53.section, children: [
21081
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.Text, { style: [styles53.sectionTitle, { color: colors.textSecondary }], children: section2.title }),
21082
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.View, { style: [styles53.cardShadow, elevation.card], children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.View, { style: [styles53.cardClip, { backgroundColor: colors.surface }], children: section2.data.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_react_native65.View, { children: [
21083
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
20566
21084
  NotificationRow,
20567
21085
  {
20568
21086
  notification: item,
@@ -20571,19 +21089,19 @@ var NotificationsScreen = () => {
20571
21089
  onAcknowledge: () => onAcknowledgeRow(item)
20572
21090
  }
20573
21091
  ),
20574
- index < section2.data.length - 1 ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_react_native63.View, { style: [styles51.separator, { backgroundColor: colors.hairline }] }) : null
21092
+ index < section2.data.length - 1 ? /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.View, { style: [styles53.separator, { backgroundColor: colors.hairline }] }) : null
20575
21093
  ] }, item.uuid)) }) })
20576
21094
  ] }),
20577
- ListEmptyComponent: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_react_native63.View, { style: styles51.skeletonWrap, children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_react_native63.View, { style: [styles51.cardClip, elevation.card, { backgroundColor: colors.surface }], children: [0, 1, 2, 3].map((i) => /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_react_native63.View, { children: [
20578
- /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_react_native63.View, { style: styles51.skeletonRow, children: [
20579
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Skeleton, { width: 36, height: 36, radius: radii.md }),
20580
- /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_react_native63.View, { style: styles51.skeletonLines, children: [
20581
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Skeleton, { width: "70%", height: 13 }),
20582
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Skeleton, { width: "40%", height: 10 })
21095
+ ListEmptyComponent: isLoading ? /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.View, { style: styles53.skeletonWrap, children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.View, { style: [styles53.cardClip, elevation.card, { backgroundColor: colors.surface }], children: [0, 1, 2, 3].map((i) => /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_react_native65.View, { children: [
21096
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_react_native65.View, { style: styles53.skeletonRow, children: [
21097
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Skeleton, { width: 36, height: 36, radius: radii.md }),
21098
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_react_native65.View, { style: styles53.skeletonLines, children: [
21099
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Skeleton, { width: "70%", height: 13 }),
21100
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Skeleton, { width: "40%", height: 10 })
20583
21101
  ] })
20584
21102
  ] }),
20585
- i < 3 ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_react_native63.View, { style: [styles51.separator, { backgroundColor: colors.hairline }] }) : null
20586
- ] }, i)) }) }) : /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_react_native63.View, { style: styles51.emptyWrap, children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
21103
+ i < 3 ? /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.View, { style: [styles53.separator, { backgroundColor: colors.hairline }] }) : null
21104
+ ] }, i)) }) }) : /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.View, { style: styles53.emptyWrap, children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
20587
21105
  PCEmpty,
20588
21106
  {
20589
21107
  iconName: "circle-check",
@@ -20592,14 +21110,14 @@ var NotificationsScreen = () => {
20592
21110
  }
20593
21111
  ) }),
20594
21112
  ListFooterComponentStyle: { marginTop: "auto" },
20595
- ListFooterComponent: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Footer, {})
21113
+ ListFooterComponent: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Footer, {})
20596
21114
  }
20597
21115
  ),
20598
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(BottomSheet, { visible: filterOpen, onClose: () => setFilterOpen(false), title: t("filter") || "Filter", children: /* @__PURE__ */ (0, import_jsx_runtime63.jsxs)(import_react_native63.View, { style: styles51.filterSheet, children: [
20599
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_react_native63.Text, { style: [styles51.filterGroupLabel, { color: colors.textSecondary }], children: t("category", { defaultValue: "Category" }) }),
20600
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_react_native63.View, { style: styles51.chipWrap, children: filterTabs.map((tab) => {
21116
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(BottomSheet, { visible: filterOpen, onClose: () => setFilterOpen(false), title: t("filter") || "Filter", children: /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_react_native65.View, { style: styles53.filterSheet, children: [
21117
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.Text, { style: [styles53.filterGroupLabel, { color: colors.textSecondary }], children: t("category", { defaultValue: "Category" }) }),
21118
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.View, { style: styles53.chipWrap, children: filterTabs.map((tab) => {
20601
21119
  const selected = tab.key === activeTab;
20602
- return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
21120
+ return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
20603
21121
  FilterChip,
20604
21122
  {
20605
21123
  label: tab.label,
@@ -20609,12 +21127,12 @@ var NotificationsScreen = () => {
20609
21127
  tab.key
20610
21128
  );
20611
21129
  }) }),
20612
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_react_native63.Text, { style: [styles51.filterGroupLabel, { color: colors.textSecondary, marginTop: spacing.lg }], children: t("readStatus", { defaultValue: "Status" }) }),
20613
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_react_native63.View, { style: styles51.chipWrap, children: [
21130
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.Text, { style: [styles53.filterGroupLabel, { color: colors.textSecondary, marginTop: spacing.lg }], children: t("readStatus", { defaultValue: "Status" }) }),
21131
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.View, { style: styles53.chipWrap, children: [
20614
21132
  { key: "all", label: t("all") || "All" },
20615
21133
  { key: "unread", label: t("unread") || "Unread" },
20616
21134
  { key: "read", label: t("read", { defaultValue: "Read" }) }
20617
- ].map((opt) => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
21135
+ ].map((opt) => /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
20618
21136
  FilterChip,
20619
21137
  {
20620
21138
  label: opt.label,
@@ -20623,13 +21141,13 @@ var NotificationsScreen = () => {
20623
21141
  },
20624
21142
  opt.key
20625
21143
  )) }),
20626
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
20627
- import_react_native63.TouchableOpacity,
21144
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
21145
+ import_react_native65.TouchableOpacity,
20628
21146
  {
20629
- style: [styles51.applyBtn, { backgroundColor: colors.primary }],
21147
+ style: [styles53.applyBtn, { backgroundColor: colors.primary }],
20630
21148
  onPress: () => setFilterOpen(false),
20631
21149
  accessibilityRole: "button",
20632
- children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_react_native63.Text, { style: [styles51.applyLabel, { color: colors.primaryText }], children: t("done", { defaultValue: "Done" }) })
21150
+ children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.Text, { style: [styles53.applyLabel, { color: colors.primaryText }], children: t("done", { defaultValue: "Done" }) })
20633
21151
  }
20634
21152
  )
20635
21153
  ] }) })
@@ -20637,25 +21155,25 @@ var NotificationsScreen = () => {
20637
21155
  };
20638
21156
  var FilterChip = ({ label, selected, onPress }) => {
20639
21157
  const { colors } = useTheme();
20640
- return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
20641
- import_react_native63.TouchableOpacity,
21158
+ return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
21159
+ import_react_native65.TouchableOpacity,
20642
21160
  {
20643
21161
  onPress,
20644
21162
  activeOpacity: 0.7,
20645
21163
  accessibilityRole: "button",
20646
21164
  accessibilityState: { selected },
20647
21165
  style: [
20648
- styles51.chip,
21166
+ styles53.chip,
20649
21167
  {
20650
21168
  backgroundColor: selected ? colors.primary : colors.surfaceAlt,
20651
21169
  borderColor: selected ? colors.primary : colors.border
20652
21170
  }
20653
21171
  ],
20654
- children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_react_native63.Text, { style: [styles51.chipLabel, { color: selected ? colors.primaryText : colors.text }], children: label })
21172
+ children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.Text, { style: [styles53.chipLabel, { color: selected ? colors.primaryText : colors.text }], children: label })
20655
21173
  }
20656
21174
  );
20657
21175
  };
20658
- var styles51 = import_react_native63.StyleSheet.create({
21176
+ var styles53 = import_react_native65.StyleSheet.create({
20659
21177
  list: {
20660
21178
  flex: 1
20661
21179
  },
@@ -20689,7 +21207,7 @@ var styles51 = import_react_native63.StyleSheet.create({
20689
21207
  filterBtn: {
20690
21208
  width: 40,
20691
21209
  height: 40,
20692
- borderWidth: import_react_native63.StyleSheet.hairlineWidth,
21210
+ borderWidth: import_react_native65.StyleSheet.hairlineWidth,
20693
21211
  borderRadius: radii.md,
20694
21212
  justifyContent: "center",
20695
21213
  alignItems: "center"
@@ -20710,7 +21228,7 @@ var styles51 = import_react_native63.StyleSheet.create({
20710
21228
  overflow: "hidden"
20711
21229
  },
20712
21230
  separator: {
20713
- height: import_react_native63.StyleSheet.hairlineWidth,
21231
+ height: import_react_native65.StyleSheet.hairlineWidth,
20714
21232
  marginLeft: spacing.lg + 36 + spacing.md
20715
21233
  },
20716
21234
  emptyWrap: {
@@ -20748,7 +21266,7 @@ var styles51 = import_react_native63.StyleSheet.create({
20748
21266
  justifyContent: "center",
20749
21267
  paddingHorizontal: spacing.lg,
20750
21268
  borderRadius: radii.pill,
20751
- borderWidth: import_react_native63.StyleSheet.hairlineWidth
21269
+ borderWidth: import_react_native65.StyleSheet.hairlineWidth
20752
21270
  },
20753
21271
  chipLabel: {
20754
21272
  ...typography.label
@@ -20767,7 +21285,7 @@ var styles51 = import_react_native63.StyleSheet.create({
20767
21285
  });
20768
21286
 
20769
21287
  // src/RedactoPrivacyCenter/RedactoPrivacyCenter.tsx
20770
- var import_jsx_runtime64 = require("react/jsx-runtime");
21288
+ var import_jsx_runtime68 = require("react/jsx-runtime");
20771
21289
  var privacyCenterQueryClient = new import_react_query2.QueryClient();
20772
21290
  function PrivacyCenterContent({ onBack }) {
20773
21291
  const { currentPage } = useInternalNavigation();
@@ -20777,24 +21295,24 @@ function PrivacyCenterContent({ onBack }) {
20777
21295
  const chromeMode = getPageChromeMode(currentPage);
20778
21296
  const canvasIsLight = isLightColor(colors.canvasSubtle);
20779
21297
  const barStyle = canvasIsLight ? "dark-content" : "light-content";
20780
- (0, import_react43.useEffect)(() => {
20781
- import_react_native64.StatusBar.setBarStyle(barStyle, true);
20782
- if (import_react_native64.Platform.OS === "android") {
21298
+ (0, import_react45.useEffect)(() => {
21299
+ import_react_native66.StatusBar.setBarStyle(barStyle, true);
21300
+ if (import_react_native66.Platform.OS === "android") {
20783
21301
  setNavBarIconStyle(canvasIsLight ? "dark" : "light");
20784
21302
  }
20785
21303
  }, [barStyle, canvasIsLight]);
20786
- return /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(import_react_native64.View, { style: [styles52.container, { backgroundColor: colors.canvasSubtle }], children: [
20787
- /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_react_native64.StatusBar, { barStyle, translucent: true }),
20788
- /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_react_native64.View, { style: styles52.mainColumn, children: brandingLoading ? /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(PCLoader, {}) : /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(import_jsx_runtime64.Fragment, { children: [
20789
- /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(SlimTopBar, { mode: chromeMode, onBack }),
20790
- /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_react_native64.View, { style: [styles52.content, { paddingBottom: insets.bottom }], children: status === "checking" ? /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(PCLoader, {}) : status === "empty" ? /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(PrivacyCenterEmptyState, {}) : /* @__PURE__ */ (0, import_jsx_runtime64.jsxs)(import_jsx_runtime64.Fragment, { children: [
20791
- currentPage === "home" && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(HomeHub, {}),
20792
- currentPage === "consent-manager" && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(ConsentManager, {}),
20793
- currentPage === "form" && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(FormPage, {}),
20794
- currentPage === "activity" && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(ActivitiesList, {}),
20795
- currentPage === "receipts" && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(ReceiptsList, {}),
20796
- currentPage === "case-details" && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(CaseDetailsPage, {}),
20797
- currentPage === "notifications" && /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(NotificationsScreen, {})
21304
+ return /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(import_react_native66.View, { style: [styles54.container, { backgroundColor: colors.canvasSubtle }], children: [
21305
+ /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_react_native66.StatusBar, { barStyle, translucent: true }),
21306
+ /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_react_native66.View, { style: styles54.mainColumn, children: brandingLoading ? /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(PCLoader, {}) : /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(import_jsx_runtime68.Fragment, { children: [
21307
+ /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(SlimTopBar, { mode: chromeMode, onBack }),
21308
+ /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_react_native66.View, { style: [styles54.content, { paddingBottom: insets.bottom }], children: status === "checking" ? /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(PCLoader, {}) : status === "session-expired" ? /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(PrivacyCenterSessionExpired, {}) : status === "empty" ? /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(PrivacyCenterEmptyState, {}) : /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(import_jsx_runtime68.Fragment, { children: [
21309
+ currentPage === "home" && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(HomeHub, {}),
21310
+ currentPage === "consent-manager" && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(ConsentManager, {}),
21311
+ currentPage === "form" && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(FormPage, {}),
21312
+ currentPage === "activity" && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(ActivitiesList, {}),
21313
+ currentPage === "receipts" && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(ReceiptsList, {}),
21314
+ currentPage === "case-details" && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(CaseDetailsPage, {}),
21315
+ currentPage === "notifications" && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(NotificationsScreen, {})
20798
21316
  ] }) })
20799
21317
  ] }) })
20800
21318
  ] });
@@ -20819,7 +21337,7 @@ function RedactoPrivacyCenter({
20819
21337
  initialCaseUuid,
20820
21338
  onBack
20821
21339
  }) {
20822
- return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(SafeAreaBoundary, { children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(KeyboardProviderCompat, { children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_react_query2.QueryClientProvider, { client: privacyCenterQueryClient, children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(import_react_i18next29.I18nextProvider, { i18n: i18n_default, children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(ThemeProvider, { slug, baseUrl, children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(BaseUrlProvider, { baseUrl, ledgerBaseUrl, children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
21340
+ return /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(SafeAreaBoundary, { children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(KeyboardProviderCompat, { children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_react_query2.QueryClientProvider, { client: privacyCenterQueryClient, children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_react_i18next31.I18nextProvider, { i18n: i18n_default, children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(ThemeProvider, { slug, baseUrl, children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(BaseUrlProvider, { baseUrl, ledgerBaseUrl, children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
20823
21341
  AuthProvider,
20824
21342
  {
20825
21343
  accessToken: accessToken != null ? accessToken : "",
@@ -20831,11 +21349,11 @@ function RedactoPrivacyCenter({
20831
21349
  workspaceUuid,
20832
21350
  slug,
20833
21351
  onError,
20834
- children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(NavigationProvider, { initialPage, initialPendingCaseUuid: initialCaseUuid != null ? initialCaseUuid : null, children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(DataAvailabilityProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(PageStatusProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(PrivacyCenterContent, { onBack }) }) }) })
21352
+ children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(NavigationProvider, { initialPage, initialPendingCaseUuid: initialCaseUuid != null ? initialCaseUuid : null, children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(SelectUserGate, { children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(DataAvailabilityProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(PageStatusProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(PrivacyCenterContent, { onBack }) }) }) }) })
20835
21353
  }
20836
21354
  ) }) }) }) }) }) });
20837
21355
  }
20838
- var styles52 = import_react_native64.StyleSheet.create({
21356
+ var styles54 = import_react_native66.StyleSheet.create({
20839
21357
  container: {
20840
21358
  flex: 1
20841
21359
  },
@@ -20849,74 +21367,74 @@ var styles52 = import_react_native64.StyleSheet.create({
20849
21367
  });
20850
21368
 
20851
21369
  // src/RedactoPrivacyCenter/components/SideMenu.tsx
20852
- var import_react_native65 = require("react-native");
20853
- var import_react_i18next30 = require("react-i18next");
21370
+ var import_react_native67 = require("react-native");
21371
+ var import_react_i18next32 = require("react-i18next");
20854
21372
  var import_react_native_svg4 = __toESM(require("react-native-svg"));
20855
- var import_jsx_runtime65 = require("react/jsx-runtime");
21373
+ var import_jsx_runtime69 = require("react/jsx-runtime");
20856
21374
  var MENU_ITEMS = [
20857
21375
  { page: "consent-manager", labelKey: "consentManager", fallback: "Consent Manager", icon: "shield-check" },
20858
21376
  { page: "form", labelKey: "grievanceRequests", fallback: "Privacy Requests", icon: "message-circle-warning" },
20859
21377
  { page: "activity", labelKey: "activity", fallback: "Activity", icon: "activity" }
20860
21378
  ];
20861
21379
  function SideMenu({ onBack } = {}) {
20862
- const { t } = (0, import_react_i18next30.useTranslation)();
21380
+ const { t } = (0, import_react_i18next32.useTranslation)();
20863
21381
  const { currentPage, navigateTo } = useInternalNavigation();
20864
21382
  const { organizationName, email } = useAuth();
20865
21383
  const { colors } = useTheme();
20866
21384
  const orgInitial = organizationName ? organizationName.charAt(0).toUpperCase() : "R";
20867
21385
  const displayName = organizationName || "Organization";
20868
- return /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(import_react_native65.View, { style: [styles53.container, { backgroundColor: colors.surface }], children: [
20869
- /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(import_react_native65.View, { style: styles53.orgSection, children: [
20870
- /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_react_native65.View, { style: [styles53.avatar, { backgroundColor: colors.primary }], children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_react_native65.Text, { style: [styles53.avatarText, { color: colors.primaryText }], children: orgInitial }) }),
20871
- /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(import_react_native65.View, { style: styles53.orgInfo, children: [
20872
- /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_react_native65.Text, { style: [styles53.orgName, { color: colors.text }], numberOfLines: 1, children: displayName }),
20873
- email ? /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_react_native65.Text, { style: [styles53.orgEmail, { color: colors.textSecondary }], numberOfLines: 1, children: email }) : null
21386
+ return /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(import_react_native67.View, { style: [styles55.container, { backgroundColor: colors.surface }], children: [
21387
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(import_react_native67.View, { style: styles55.orgSection, children: [
21388
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.View, { style: [styles55.avatar, { backgroundColor: colors.primary }], children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.Text, { style: [styles55.avatarText, { color: colors.primaryText }], children: orgInitial }) }),
21389
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(import_react_native67.View, { style: styles55.orgInfo, children: [
21390
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.Text, { style: [styles55.orgName, { color: colors.text }], numberOfLines: 1, children: displayName }),
21391
+ email ? /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.Text, { style: [styles55.orgEmail, { color: colors.textSecondary }], numberOfLines: 1, children: email }) : null
20874
21392
  ] })
20875
21393
  ] }),
20876
- /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_react_native65.View, { style: [styles53.divider, { backgroundColor: colors.border }] }),
20877
- /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_react_native65.View, { style: styles53.menuSection, children: MENU_ITEMS.map((item) => {
21394
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.View, { style: [styles55.divider, { backgroundColor: colors.border }] }),
21395
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.View, { style: styles55.menuSection, children: MENU_ITEMS.map((item) => {
20878
21396
  const isActive = currentPage === item.page || item.page === "form" && currentPage === "case-details";
20879
- return /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(
20880
- import_react_native65.TouchableOpacity,
21397
+ return /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(
21398
+ import_react_native67.TouchableOpacity,
20881
21399
  {
20882
21400
  style: [
20883
- styles53.menuItem,
20884
- isActive && [styles53.menuItemActive, { backgroundColor: `${colors.primary}14` }]
21401
+ styles55.menuItem,
21402
+ isActive && [styles55.menuItemActive, { backgroundColor: `${colors.primary}14` }]
20885
21403
  ],
20886
21404
  onPress: () => navigateTo(item.page),
20887
21405
  activeOpacity: 0.7,
20888
21406
  accessibilityRole: "button",
20889
21407
  accessibilityState: { selected: isActive },
20890
21408
  children: [
20891
- /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_react_native65.View, { style: styles53.menuIconWrap, children: /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Icon, { name: item.icon, size: 18, color: isActive ? colors.primary : colors.textSecondary }) }),
20892
- /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
20893
- import_react_native65.Text,
21409
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.View, { style: styles55.menuIconWrap, children: /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(Icon, { name: item.icon, size: 18, color: isActive ? colors.primary : colors.textSecondary }) }),
21410
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
21411
+ import_react_native67.Text,
20894
21412
  {
20895
21413
  style: [
20896
- styles53.menuLabel,
21414
+ styles55.menuLabel,
20897
21415
  { color: isActive ? colors.primary : colors.text },
20898
- isActive && styles53.menuLabelActive
21416
+ isActive && styles55.menuLabelActive
20899
21417
  ],
20900
21418
  children: t(item.labelKey) || item.fallback
20901
21419
  }
20902
21420
  ),
20903
- isActive ? /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_react_native65.View, { style: [styles53.activeIndicator, { backgroundColor: colors.primary }] }) : null
21421
+ isActive ? /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.View, { style: [styles55.activeIndicator, { backgroundColor: colors.primary }] }) : null
20904
21422
  ]
20905
21423
  },
20906
21424
  item.page
20907
21425
  );
20908
21426
  }) }),
20909
- onBack ? /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(import_jsx_runtime65.Fragment, { children: [
20910
- /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_react_native65.View, { style: { flex: 1 } }),
20911
- /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_react_native65.View, { style: [styles53.divider, { backgroundColor: colors.border }] }),
20912
- /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(
20913
- import_react_native65.TouchableOpacity,
21427
+ onBack ? /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(import_jsx_runtime69.Fragment, { children: [
21428
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.View, { style: { flex: 1 } }),
21429
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.View, { style: [styles55.divider, { backgroundColor: colors.border }] }),
21430
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(
21431
+ import_react_native67.TouchableOpacity,
20914
21432
  {
20915
- style: styles53.backBtn,
21433
+ style: styles55.backBtn,
20916
21434
  onPress: () => navigateBack(onBack),
20917
21435
  activeOpacity: 0.7,
20918
21436
  children: [
20919
- /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_react_native_svg4.default, { width: 16, height: 16, viewBox: "0 0 24 24", fill: "none", children: onBack === "back" ? /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
21437
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native_svg4.default, { width: 16, height: 16, viewBox: "0 0 24 24", fill: "none", children: onBack === "back" ? /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
20920
21438
  import_react_native_svg4.Path,
20921
21439
  {
20922
21440
  d: "M19 12H5m0 0l7 7m-7-7l7-7",
@@ -20925,7 +21443,7 @@ function SideMenu({ onBack } = {}) {
20925
21443
  strokeLinecap: "round",
20926
21444
  strokeLinejoin: "round"
20927
21445
  }
20928
- ) : /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
21446
+ ) : /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
20929
21447
  import_react_native_svg4.Path,
20930
21448
  {
20931
21449
  d: "M9 21H5a2 2 0 01-2-2V5a2 2 0 012-2h4 M16 17l5-5-5-5 M21 12H9",
@@ -20935,14 +21453,14 @@ function SideMenu({ onBack } = {}) {
20935
21453
  strokeLinejoin: "round"
20936
21454
  }
20937
21455
  ) }),
20938
- /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_react_native65.Text, { style: [styles53.backBtnLabel, { color: colors.textSecondary }], children: onBack === "back" ? t("back") || "Back" : t("signOut") || "Sign Out" })
21456
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.Text, { style: [styles55.backBtnLabel, { color: colors.textSecondary }], children: onBack === "back" ? t("back") || "Back" : t("signOut") || "Sign Out" })
20939
21457
  ]
20940
21458
  }
20941
21459
  )
20942
21460
  ] }) : null
20943
21461
  ] });
20944
21462
  }
20945
- var styles53 = import_react_native65.StyleSheet.create({
21463
+ var styles55 = import_react_native67.StyleSheet.create({
20946
21464
  container: {
20947
21465
  flex: 1,
20948
21466
  paddingTop: 12
@@ -21028,42 +21546,68 @@ var styles53 = import_react_native65.StyleSheet.create({
21028
21546
  });
21029
21547
 
21030
21548
  // src/RedactoPrivacyCenter/components/Navbar.tsx
21031
- var import_react44 = require("react");
21032
- var import_react_native67 = require("react-native");
21033
- var import_react_i18next32 = require("react-i18next");
21549
+ var import_react46 = require("react");
21550
+ var import_react_native69 = require("react-native");
21551
+ var import_react_i18next34 = require("react-i18next");
21034
21552
  var import_react_native_svg6 = __toESM(require("react-native-svg"));
21035
21553
 
21036
21554
  // src/RedactoPrivacyCenter/components/UserOrgMenu.tsx
21037
- var import_react_native66 = require("react-native");
21038
- var import_react_i18next31 = require("react-i18next");
21555
+ var import_react_native68 = require("react-native");
21556
+ var import_react_i18next33 = require("react-i18next");
21039
21557
  var import_react_native_svg5 = __toESM(require("react-native-svg"));
21040
- var import_jsx_runtime66 = require("react/jsx-runtime");
21558
+ var import_jsx_runtime70 = require("react/jsx-runtime");
21041
21559
  var UserOrgMenu = ({ visible, onClose, onBack }) => {
21042
- const { t } = (0, import_react_i18next31.useTranslation)();
21560
+ const { t } = (0, import_react_i18next33.useTranslation)();
21043
21561
  const { organizationName, email } = useAuth();
21044
21562
  const { colors, branding } = useTheme();
21563
+ const { switchProfile } = useProfileSwitch();
21045
21564
  const brandName = (branding == null ? void 0 : branding.brand_name) || organizationName || t("privacyCenter") || "Privacy Center";
21046
21565
  const handleAction = () => {
21047
21566
  onClose();
21048
21567
  navigateBack(onBack);
21049
21568
  };
21050
- return /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(BottomSheet, { visible, onClose, title: t("account") || "Account", children: [
21051
- /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(import_react_native66.View, { style: styles54.identity, children: [
21052
- (branding == null ? void 0 : branding.logo_url) ? /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_native66.Image, { source: { uri: branding.logo_url }, style: styles54.logo, resizeMode: "contain" }) : /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(PCAvatar, { name: organizationName || brandName, imageUrl: branding == null ? void 0 : branding.icon_url, size: 52 }),
21053
- /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(import_react_native66.View, { style: styles54.identityText, children: [
21054
- /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_native66.Text, { style: [styles54.orgName, { color: colors.text }], numberOfLines: 2, children: brandName }),
21055
- email ? /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_native66.Text, { style: [styles54.email, { color: colors.textSecondary }], numberOfLines: 1, children: email }) : null
21569
+ return /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(BottomSheet, { visible, onClose, title: t("account") || "Account", children: [
21570
+ /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(import_react_native68.View, { style: styles56.identity, children: [
21571
+ (branding == null ? void 0 : branding.logo_url) ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_react_native68.Image, { source: { uri: branding.logo_url }, style: styles56.logo, resizeMode: "contain" }) : /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(PCAvatar, { name: organizationName || brandName, imageUrl: branding == null ? void 0 : branding.icon_url, size: 52 }),
21572
+ /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(import_react_native68.View, { style: styles56.identityText, children: [
21573
+ /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_react_native68.Text, { style: [styles56.orgName, { color: colors.text }], numberOfLines: 2, children: brandName }),
21574
+ email ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_react_native68.Text, { style: [styles56.email, { color: colors.textSecondary }], numberOfLines: 1, children: email }) : null
21056
21575
  ] })
21057
21576
  ] }),
21058
- onBack ? /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(
21059
- import_react_native66.TouchableOpacity,
21577
+ switchProfile ? /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(
21578
+ import_react_native68.TouchableOpacity,
21060
21579
  {
21061
- style: [styles54.actionRow, { backgroundColor: withAlpha(onBack === "signout" ? colors.error : colors.primary, 0.1) }],
21580
+ style: [styles56.actionRow, { backgroundColor: withAlpha(colors.primary, 0.1) }],
21581
+ onPress: () => {
21582
+ onClose();
21583
+ switchProfile();
21584
+ },
21585
+ activeOpacity: 0.7,
21586
+ accessibilityRole: "button",
21587
+ children: [
21588
+ /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_react_native_svg5.default, { width: 18, height: 18, viewBox: "0 0 24 24", fill: "none", children: /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
21589
+ import_react_native_svg5.Path,
21590
+ {
21591
+ d: "M16 3h5v5 M21 3l-7 7 M8 21H3v-5 M3 21l7-7",
21592
+ stroke: colors.primary,
21593
+ strokeWidth: 2,
21594
+ strokeLinecap: "round",
21595
+ strokeLinejoin: "round"
21596
+ }
21597
+ ) }),
21598
+ /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_react_native68.Text, { style: [styles56.actionLabel, { color: colors.primary }], children: t("switchProfile") })
21599
+ ]
21600
+ }
21601
+ ) : null,
21602
+ onBack ? /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(
21603
+ import_react_native68.TouchableOpacity,
21604
+ {
21605
+ style: [styles56.actionRow, { backgroundColor: withAlpha(onBack === "signout" ? colors.error : colors.primary, 0.1) }],
21062
21606
  onPress: handleAction,
21063
21607
  activeOpacity: 0.7,
21064
21608
  accessibilityRole: "button",
21065
21609
  children: [
21066
- /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_native_svg5.default, { width: 18, height: 18, viewBox: "0 0 24 24", fill: "none", children: onBack === "signout" ? /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
21610
+ /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_react_native_svg5.default, { width: 18, height: 18, viewBox: "0 0 24 24", fill: "none", children: onBack === "signout" ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
21067
21611
  import_react_native_svg5.Path,
21068
21612
  {
21069
21613
  d: "M9 21H5a2 2 0 01-2-2V5a2 2 0 012-2h4 M16 17l5-5-5-5 M21 12H9",
@@ -21072,7 +21616,7 @@ var UserOrgMenu = ({ visible, onClose, onBack }) => {
21072
21616
  strokeLinecap: "round",
21073
21617
  strokeLinejoin: "round"
21074
21618
  }
21075
- ) : /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
21619
+ ) : /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
21076
21620
  import_react_native_svg5.Path,
21077
21621
  {
21078
21622
  d: "M19 12H5m0 0l7 7m-7-7l7-7",
@@ -21082,13 +21626,13 @@ var UserOrgMenu = ({ visible, onClose, onBack }) => {
21082
21626
  strokeLinejoin: "round"
21083
21627
  }
21084
21628
  ) }),
21085
- /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_native66.Text, { style: [styles54.actionLabel, { color: onBack === "signout" ? colors.error : colors.primary }], children: onBack === "signout" ? t("signOut") || "Sign Out" : t("back") || "Back" })
21629
+ /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_react_native68.Text, { style: [styles56.actionLabel, { color: onBack === "signout" ? colors.error : colors.primary }], children: onBack === "signout" ? t("signOut") || "Sign Out" : t("back") || "Back" })
21086
21630
  ]
21087
21631
  }
21088
21632
  ) : null
21089
21633
  ] });
21090
21634
  };
21091
- var styles54 = import_react_native66.StyleSheet.create({
21635
+ var styles56 = import_react_native68.StyleSheet.create({
21092
21636
  identity: {
21093
21637
  flexDirection: "row",
21094
21638
  alignItems: "center",
@@ -21129,33 +21673,33 @@ var styles54 = import_react_native66.StyleSheet.create({
21129
21673
  });
21130
21674
 
21131
21675
  // src/RedactoPrivacyCenter/components/Navbar.tsx
21132
- var import_jsx_runtime67 = require("react/jsx-runtime");
21676
+ var import_jsx_runtime71 = require("react/jsx-runtime");
21133
21677
  function Navbar({ mode = "primary", onBack }) {
21134
- const { t } = (0, import_react_i18next32.useTranslation)();
21678
+ const { t } = (0, import_react_i18next34.useTranslation)();
21135
21679
  const { currentPage, navigateTo } = useInternalNavigation();
21136
21680
  const { organizationName, email } = useAuth();
21137
21681
  const { colors, branding } = useTheme();
21138
- const [locale, setLocale] = (0, import_react44.useState)(i18n_default.language || "en");
21139
- const [menuOpen, setMenuOpen] = (0, import_react44.useState)(false);
21682
+ const [locale, setLocale] = (0, import_react46.useState)(i18n_default.language || "en");
21683
+ const [menuOpen, setMenuOpen] = (0, import_react46.useState)(false);
21140
21684
  const unreadCount = useUnreadCount();
21141
21685
  const { status: pageStatus } = usePageStatus();
21142
21686
  const pageChrome = PAGE_CHROME_BY_PAGE[currentPage] || PAGE_CHROME_BY_PAGE["consent-manager"];
21143
21687
  const isDetail = mode === "detail";
21144
- (0, import_react44.useEffect)(() => {
21688
+ (0, import_react46.useEffect)(() => {
21145
21689
  const handleLanguageChanged = () => setLocale(i18n_default.language);
21146
21690
  i18n_default.on("languageChanged", handleLanguageChanged);
21147
21691
  return () => {
21148
21692
  i18n_default.off("languageChanged", handleLanguageChanged);
21149
21693
  };
21150
21694
  }, []);
21151
- const handleLanguageChange = (0, import_react44.useCallback)((value) => {
21695
+ const handleLanguageChange = (0, import_react46.useCallback)((value) => {
21152
21696
  i18n_default.changeLanguage(value);
21153
21697
  }, []);
21154
21698
  const brandLabel = (branding == null ? void 0 : branding.brand_name) || organizationName || t("privacyCenter") || "Privacy Center";
21155
21699
  const accountLabel = brandLabel || email || t("account") || "Account";
21156
- const brandLockup = /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_react_native67.View, { style: styles55.brandRow, children: [
21157
- /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(PCAvatar, { name: organizationName || brandLabel, imageUrl: branding == null ? void 0 : branding.icon_url, size: 28 }),
21158
- /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native67.Text, { style: [styles55.brandText, { color: colors.text }], numberOfLines: 1, children: brandLabel })
21700
+ const brandLockup = /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_react_native69.View, { style: styles57.brandRow, children: [
21701
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(PCAvatar, { name: organizationName || brandLabel, imageUrl: branding == null ? void 0 : branding.icon_url, size: 28 }),
21702
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_react_native69.Text, { style: [styles57.brandText, { color: colors.text }], numberOfLines: 1, children: brandLabel })
21159
21703
  ] });
21160
21704
  const handleDetailBack = () => {
21161
21705
  if (currentPage === "case-details") {
@@ -21167,26 +21711,26 @@ function Navbar({ mode = "primary", onBack }) {
21167
21711
  }
21168
21712
  };
21169
21713
  if (isDetail) {
21170
- return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_jsx_runtime67.Fragment, { children: [
21171
- /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
21172
- import_react_native67.View,
21714
+ return /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_jsx_runtime71.Fragment, { children: [
21715
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
21716
+ import_react_native69.View,
21173
21717
  {
21174
21718
  style: [
21175
- styles55.container,
21176
- styles55.detailContainer,
21719
+ styles57.container,
21720
+ styles57.detailContainer,
21177
21721
  { backgroundColor: colors.background, borderBottomColor: colors.border, paddingTop: TOP_INSET + spacing.xs }
21178
21722
  ],
21179
- children: /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_react_native67.View, { style: styles55.detailRow, children: [
21180
- /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
21181
- import_react_native67.TouchableOpacity,
21723
+ children: /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_react_native69.View, { style: styles57.detailRow, children: [
21724
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
21725
+ import_react_native69.TouchableOpacity,
21182
21726
  {
21183
- style: styles55.backButton,
21727
+ style: styles57.backButton,
21184
21728
  onPress: handleDetailBack,
21185
21729
  activeOpacity: 0.7,
21186
21730
  hitSlop: DEFAULT_HIT_SLOP,
21187
21731
  accessibilityRole: "button",
21188
21732
  accessibilityLabel: t("back") || "Back",
21189
- children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native_svg6.default, { width: 22, height: 22, viewBox: "0 0 24 24", fill: "none", children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
21733
+ children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_react_native_svg6.default, { width: 22, height: 22, viewBox: "0 0 24 24", fill: "none", children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
21190
21734
  import_react_native_svg6.Path,
21191
21735
  {
21192
21736
  d: "M19 12H5m0 0l7 7m-7-7l7-7",
@@ -21198,36 +21742,36 @@ function Navbar({ mode = "primary", onBack }) {
21198
21742
  ) })
21199
21743
  }
21200
21744
  ),
21201
- /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_react_native67.View, { style: styles55.detailTitleWrap, children: [
21202
- /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native67.Text, { style: [styles55.detailTitle, { color: colors.text }], numberOfLines: 1, children: t(pageChrome.titleKey) }),
21203
- pageStatus ? /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(PCBadge, { status: pageStatus.tone, label: pageStatus.label }) : null
21745
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_react_native69.View, { style: styles57.detailTitleWrap, children: [
21746
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_react_native69.Text, { style: [styles57.detailTitle, { color: colors.text }], numberOfLines: 1, children: t(pageChrome.titleKey) }),
21747
+ pageStatus ? /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(PCBadge, { status: pageStatus.tone, label: pageStatus.label }) : null
21204
21748
  ] })
21205
21749
  ] })
21206
21750
  }
21207
21751
  ),
21208
- /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(UserOrgMenu, { visible: menuOpen, onClose: () => setMenuOpen(false), onBack })
21752
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(UserOrgMenu, { visible: menuOpen, onClose: () => setMenuOpen(false), onBack })
21209
21753
  ] });
21210
21754
  }
21211
- return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_jsx_runtime67.Fragment, { children: [
21212
- /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(
21213
- import_react_native67.View,
21755
+ return /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_jsx_runtime71.Fragment, { children: [
21756
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(
21757
+ import_react_native69.View,
21214
21758
  {
21215
21759
  style: [
21216
- styles55.container,
21760
+ styles57.container,
21217
21761
  { backgroundColor: colors.background, borderBottomColor: colors.border, paddingTop: TOP_INSET + spacing.xs }
21218
21762
  ],
21219
21763
  children: [
21220
- /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_react_native67.View, { style: styles55.appBar, children: [
21221
- onBack ? /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
21222
- import_react_native67.TouchableOpacity,
21764
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_react_native69.View, { style: styles57.appBar, children: [
21765
+ onBack ? /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
21766
+ import_react_native69.TouchableOpacity,
21223
21767
  {
21224
- style: styles55.backButton,
21768
+ style: styles57.backButton,
21225
21769
  onPress: () => navigateBack(onBack),
21226
21770
  activeOpacity: 0.7,
21227
21771
  hitSlop: DEFAULT_HIT_SLOP,
21228
21772
  accessibilityRole: "button",
21229
21773
  accessibilityLabel: onBack === "back" ? t("back") || "Back" : t("signOut") || "Sign Out",
21230
- children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native_svg6.default, { width: 22, height: 22, viewBox: "0 0 24 24", fill: "none", children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
21774
+ children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_react_native_svg6.default, { width: 22, height: 22, viewBox: "0 0 24 24", fill: "none", children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
21231
21775
  import_react_native_svg6.Path,
21232
21776
  {
21233
21777
  d: "M19 12H5m0 0l7 7m-7-7l7-7",
@@ -21239,39 +21783,39 @@ function Navbar({ mode = "primary", onBack }) {
21239
21783
  ) })
21240
21784
  }
21241
21785
  ) : null,
21242
- /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native67.View, { style: styles55.brandWrap, children: (branding == null ? void 0 : branding.logo_url) ? /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(BrandImage, { uri: branding.logo_url, height: 34, maxWidth: 170, fallback: brandLockup }) : brandLockup }),
21243
- /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_react_native67.View, { style: styles55.actions, children: [
21244
- /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(NotificationBell, { count: unreadCount, onPress: () => navigateTo("notifications") }),
21245
- /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(PCSelect, { value: locale, options: languageOptions, onChange: handleLanguageChange, placeholder: t("language"), compact: true }),
21246
- /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
21247
- import_react_native67.TouchableOpacity,
21786
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_react_native69.View, { style: styles57.brandWrap, children: (branding == null ? void 0 : branding.logo_url) ? /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(BrandImage, { uri: branding.logo_url, height: 34, maxWidth: 170, fallback: brandLockup }) : brandLockup }),
21787
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_react_native69.View, { style: styles57.actions, children: [
21788
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(NotificationBell, { count: unreadCount, onPress: () => navigateTo("notifications") }),
21789
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(PCSelect, { value: locale, options: languageOptions, onChange: handleLanguageChange, placeholder: t("language"), compact: true }),
21790
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
21791
+ import_react_native69.TouchableOpacity,
21248
21792
  {
21249
- style: styles55.avatarButton,
21793
+ style: styles57.avatarButton,
21250
21794
  onPress: () => setMenuOpen(true),
21251
21795
  activeOpacity: 0.7,
21252
21796
  hitSlop: DEFAULT_HIT_SLOP,
21253
21797
  accessibilityRole: "button",
21254
21798
  accessibilityLabel: accountLabel,
21255
- children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(PCAvatar, { name: organizationName || accountLabel, imageUrl: branding == null ? void 0 : branding.icon_url, size: 28 })
21799
+ children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(PCAvatar, { name: organizationName || accountLabel, imageUrl: branding == null ? void 0 : branding.icon_url, size: 28 })
21256
21800
  }
21257
21801
  )
21258
21802
  ] })
21259
21803
  ] }),
21260
- /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native67.View, { style: styles55.pageHeader, children: /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_react_native67.View, { style: styles55.titleRow, children: [
21261
- /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native67.Text, { style: [styles55.pageTitle, { color: colors.text }], numberOfLines: 1, children: t(pageChrome.titleKey) }),
21262
- pageStatus ? /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(PCBadge, { status: pageStatus.tone, label: pageStatus.label }) : null
21804
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_react_native69.View, { style: styles57.pageHeader, children: /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_react_native69.View, { style: styles57.titleRow, children: [
21805
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_react_native69.Text, { style: [styles57.pageTitle, { color: colors.text }], numberOfLines: 1, children: t(pageChrome.titleKey) }),
21806
+ pageStatus ? /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(PCBadge, { status: pageStatus.tone, label: pageStatus.label }) : null
21263
21807
  ] }) })
21264
21808
  ]
21265
21809
  }
21266
21810
  ),
21267
- /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(UserOrgMenu, { visible: menuOpen, onClose: () => setMenuOpen(false), onBack })
21811
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(UserOrgMenu, { visible: menuOpen, onClose: () => setMenuOpen(false), onBack })
21268
21812
  ] });
21269
21813
  }
21270
- var styles55 = import_react_native67.StyleSheet.create({
21814
+ var styles57 = import_react_native69.StyleSheet.create({
21271
21815
  container: {
21272
21816
  paddingHorizontal: spacing.lg,
21273
21817
  paddingBottom: spacing.md,
21274
- borderBottomWidth: import_react_native67.StyleSheet.hairlineWidth
21818
+ borderBottomWidth: import_react_native69.StyleSheet.hairlineWidth
21275
21819
  },
21276
21820
  detailContainer: {
21277
21821
  paddingBottom: spacing.sm
@@ -21351,10 +21895,10 @@ var styles55 = import_react_native67.StyleSheet.create({
21351
21895
  });
21352
21896
 
21353
21897
  // src/RedactoPrivacyCenter/components/BottomTabBar.tsx
21354
- var import_react45 = require("react");
21355
- var import_react_native68 = require("react-native");
21356
- var import_react_i18next33 = require("react-i18next");
21357
- var import_jsx_runtime68 = require("react/jsx-runtime");
21898
+ var import_react47 = require("react");
21899
+ var import_react_native70 = require("react-native");
21900
+ var import_react_i18next35 = require("react-i18next");
21901
+ var import_jsx_runtime72 = require("react/jsx-runtime");
21358
21902
  var TAB_ITEMS = [
21359
21903
  { page: "consent-manager", labelKey: "consentManager", fallback: "Consents", icon: "shield-check" },
21360
21904
  { page: "form", labelKey: "grievanceRequests", fallback: "Requests", icon: "message-circle-warning" },
@@ -21365,10 +21909,10 @@ var PAD_H = spacing.lg;
21365
21909
  var PILL_WIDTH = 56;
21366
21910
  var PILL_HEIGHT = 34;
21367
21911
  function BottomTabBar({ showFooter = true }) {
21368
- const { t } = (0, import_react_i18next33.useTranslation)();
21912
+ const { t } = (0, import_react_i18next35.useTranslation)();
21369
21913
  const { currentPage, navigateTo } = useInternalNavigation();
21370
21914
  const { colors } = useTheme();
21371
- const [rowWidth, setRowWidth] = (0, import_react45.useState)(0);
21915
+ const [rowWidth, setRowWidth] = (0, import_react47.useState)(0);
21372
21916
  const innerWidth = Math.max(0, rowWidth - PAD_H * 2);
21373
21917
  const tabWidth = innerWidth > 0 ? innerWidth / TAB_ITEMS.length : 0;
21374
21918
  const activeIndex = TAB_ITEMS.findIndex(
@@ -21376,13 +21920,13 @@ function BottomTabBar({ showFooter = true }) {
21376
21920
  );
21377
21921
  const { translateX } = useAnimatedTabIndicator(Math.max(0, activeIndex), tabWidth);
21378
21922
  const onLayout = (e) => setRowWidth(e.nativeEvent.layout.width);
21379
- return /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(import_react_native68.View, { style: [styles56.wrapper, { backgroundColor: colors.canvasSubtle, borderTopColor: colors.hairline }], children: [
21380
- /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(import_react_native68.View, { style: styles56.container, onLayout, children: [
21381
- tabWidth > 0 && activeIndex >= 0 ? /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
21382
- import_react_native68.Animated.View,
21923
+ return /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)(import_react_native70.View, { style: [styles58.wrapper, { backgroundColor: colors.canvasSubtle, borderTopColor: colors.hairline }], children: [
21924
+ /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)(import_react_native70.View, { style: styles58.container, onLayout, children: [
21925
+ tabWidth > 0 && activeIndex >= 0 ? /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
21926
+ import_react_native70.Animated.View,
21383
21927
  {
21384
21928
  style: [
21385
- styles56.pill,
21929
+ styles58.pill,
21386
21930
  {
21387
21931
  width: PILL_WIDTH,
21388
21932
  left: PAD_H + (tabWidth - PILL_WIDTH) / 2,
@@ -21395,17 +21939,17 @@ function BottomTabBar({ showFooter = true }) {
21395
21939
  TAB_ITEMS.map((item) => {
21396
21940
  const isActive = currentPage === item.page || item.page === "form" && currentPage === "case-details";
21397
21941
  const label = t(item.labelKey) || item.fallback;
21398
- return /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(
21399
- import_react_native68.TouchableOpacity,
21942
+ return /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)(
21943
+ import_react_native70.TouchableOpacity,
21400
21944
  {
21401
- style: styles56.tab,
21945
+ style: styles58.tab,
21402
21946
  onPress: () => navigateTo(item.page),
21403
21947
  activeOpacity: 0.7,
21404
21948
  accessibilityRole: "tab",
21405
21949
  accessibilityState: { selected: isActive },
21406
21950
  accessibilityLabel: label,
21407
21951
  children: [
21408
- /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_react_native68.View, { style: styles56.iconWrap, children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
21952
+ /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(import_react_native70.View, { style: styles58.iconWrap, children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
21409
21953
  Icon,
21410
21954
  {
21411
21955
  name: item.icon,
@@ -21414,10 +21958,10 @@ function BottomTabBar({ showFooter = true }) {
21414
21958
  strokeWidth: isActive ? 2.1 : 1.85
21415
21959
  }
21416
21960
  ) }),
21417
- /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
21418
- import_react_native68.Text,
21961
+ /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
21962
+ import_react_native70.Text,
21419
21963
  {
21420
- style: [styles56.tabLabel, { color: isActive ? colors.primary : colors.textSecondary }],
21964
+ style: [styles58.tabLabel, { color: isActive ? colors.primary : colors.textSecondary }],
21421
21965
  numberOfLines: 1,
21422
21966
  children: label
21423
21967
  }
@@ -21428,13 +21972,13 @@ function BottomTabBar({ showFooter = true }) {
21428
21972
  );
21429
21973
  })
21430
21974
  ] }),
21431
- showFooter ? /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(Footer, { inline: true }) : null,
21432
- /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_react_native68.View, { style: { height: BOTTOM_INSET } })
21975
+ showFooter ? /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(Footer, { inline: true }) : null,
21976
+ /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(import_react_native70.View, { style: { height: BOTTOM_INSET } })
21433
21977
  ] });
21434
21978
  }
21435
- var styles56 = import_react_native68.StyleSheet.create({
21979
+ var styles58 = import_react_native70.StyleSheet.create({
21436
21980
  wrapper: {
21437
- borderTopWidth: import_react_native68.StyleSheet.hairlineWidth
21981
+ borderTopWidth: import_react_native70.StyleSheet.hairlineWidth
21438
21982
  },
21439
21983
  container: {
21440
21984
  flexDirection: "row",