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

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;
@@ -11762,6 +12003,7 @@ var ensureValidToken = async (organizationId, workspaceId, _slug, authContext, c
11762
12003
  return accessToken;
11763
12004
  }
11764
12005
  if (isRefreshing && refreshPromise) return refreshPromise;
12006
+ if (isRefreshBlocked(authContext)) return null;
11765
12007
  isRefreshing = true;
11766
12008
  refreshPromise = performTokenRefresh(
11767
12009
  organizationId,
@@ -11789,6 +12031,7 @@ var performTokenRefresh = async (organizationId, workspaceId, authContext, conse
11789
12031
  if (!refreshToken || typeof refreshToken !== "string" || refreshToken.trim() === "") {
11790
12032
  if (authContext == null ? void 0 : authContext.onError)
11791
12033
  authContext.onError(new Error("No refresh token available"));
12034
+ notifySessionExpired();
11792
12035
  signOutPrivacyCenter();
11793
12036
  return null;
11794
12037
  }
@@ -11818,11 +12061,13 @@ var performTokenRefresh = async (organizationId, workspaceId, authContext, conse
11818
12061
  if (newRefreshToken)
11819
12062
  setStoredValue("refresh_token", newRefreshToken);
11820
12063
  }
12064
+ resetRefreshCircuit();
11821
12065
  return newAccessToken;
11822
12066
  }
11823
12067
  }
11824
12068
  if (authContext == null ? void 0 : authContext.onError)
11825
12069
  authContext.onError(new Error("Refresh token expired or revoked"));
12070
+ markRefreshTokenDead(refreshToken);
11826
12071
  signOutPrivacyCenter();
11827
12072
  return null;
11828
12073
  } catch (error) {
@@ -11830,7 +12075,12 @@ var performTokenRefresh = async (organizationId, workspaceId, authContext, conse
11830
12075
  authContext.onError(
11831
12076
  error instanceof Error ? error : new Error(String(error))
11832
12077
  );
11833
- signOutPrivacyCenter();
12078
+ if (isTerminalRefreshError(error)) {
12079
+ markRefreshTokenDead(refreshToken);
12080
+ signOutPrivacyCenter();
12081
+ } else {
12082
+ noteTransientRefreshFailure();
12083
+ }
11834
12084
  return null;
11835
12085
  }
11836
12086
  };
@@ -12254,8 +12504,17 @@ function DataAvailabilityProvider({ children }) {
12254
12504
  mountedRef.current = false;
12255
12505
  };
12256
12506
  }, []);
12507
+ (0, import_react7.useEffect)(() => {
12508
+ setSessionExpiredListener(() => {
12509
+ if (!mountedRef.current) return;
12510
+ runIdRef.current += 1;
12511
+ setStatus("session-expired");
12512
+ });
12513
+ return () => setSessionExpiredListener(null);
12514
+ }, []);
12257
12515
  const runCheck = (0, import_react7.useCallback)(async () => {
12258
12516
  if (!organizationId || !workspaceId) return;
12517
+ if (isRefreshBlocked(authContext)) return;
12259
12518
  const runId = ++runIdRef.current;
12260
12519
  setStatus("checking");
12261
12520
  const contact = email;
@@ -18295,6 +18554,7 @@ function useUnreadCount() {
18295
18554
  const loadRef = (0, import_react32.useRef)();
18296
18555
  loadRef.current = async () => {
18297
18556
  if (!organizationId || !workspaceId) return;
18557
+ if (isRefreshBlocked(authContext)) return;
18298
18558
  const res = await fetchUnreadCount(organizationId, workspaceId, authContext, consentClient);
18299
18559
  if (res && typeof res.count === "number") setCount(res.count);
18300
18560
  };
@@ -18620,17 +18880,255 @@ function PrivacyCenterEmptyState() {
18620
18880
  return /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(PCEmpty, { iconName: "shield", title: t("noDataTitle"), description: t("noDataDescription") });
18621
18881
  }
18622
18882
 
18883
+ // src/RedactoPrivacyCenter/components/PrivacyCenterSessionExpired.tsx
18884
+ var import_react_i18next21 = require("react-i18next");
18885
+ var import_jsx_runtime50 = require("react/jsx-runtime");
18886
+ function PrivacyCenterSessionExpired() {
18887
+ const { t } = (0, import_react_i18next21.useTranslation)();
18888
+ return /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(
18889
+ PCEmpty,
18890
+ {
18891
+ iconName: "shield",
18892
+ title: t("sessionExpiredTitle"),
18893
+ description: t("sessionExpiredDescription")
18894
+ }
18895
+ );
18896
+ }
18897
+
18898
+ // src/RedactoPrivacyCenter/components/SelectUserGate.tsx
18899
+ var import_react36 = require("react");
18900
+ var import_react_native51 = require("react-native");
18901
+
18902
+ // src/RedactoPrivacyCenter/context/ProfileSwitchContext.tsx
18903
+ var import_react35 = require("react");
18904
+ var import_jsx_runtime51 = require("react/jsx-runtime");
18905
+ var ProfileSwitchContext = (0, import_react35.createContext)({
18906
+ switchProfile: null
18907
+ });
18908
+ function ProfileSwitchProvider({
18909
+ switchProfile,
18910
+ children
18911
+ }) {
18912
+ return /* @__PURE__ */ (0, import_jsx_runtime51.jsx)(ProfileSwitchContext.Provider, { value: { switchProfile }, children });
18913
+ }
18914
+ function useProfileSwitch() {
18915
+ return (0, import_react35.useContext)(ProfileSwitchContext);
18916
+ }
18917
+
18918
+ // src/RedactoPrivacyCenter/components/SelectUser.tsx
18919
+ var import_react_native50 = require("react-native");
18920
+ var import_react_i18next22 = require("react-i18next");
18921
+
18922
+ // src/RedactoPrivacyCenter/lib/identityLabels.ts
18923
+ var identityPrimaryValue = (candidate) => {
18924
+ const orgUserId = candidate.org_user_id || "";
18925
+ const email = candidate.primary_email || "";
18926
+ const mobile = candidate.primary_mobile || "";
18927
+ return { orgUserId, fallback: email || mobile || candidate.uuid };
18928
+ };
18929
+ var identitySecondaryLabels = (candidate, primaryLabel) => {
18930
+ const email = candidate.primary_email || "";
18931
+ const mobile = candidate.primary_mobile || "";
18932
+ return [email, mobile].filter(
18933
+ (value, index, all) => value !== "" && value !== primaryLabel && all.indexOf(value) === index
18934
+ );
18935
+ };
18936
+ var selectableIdentities = (candidates) => candidates.filter((candidate) => Boolean(candidate.uuid));
18937
+
18938
+ // src/RedactoPrivacyCenter/components/SelectUser.tsx
18939
+ var import_jsx_runtime52 = require("react/jsx-runtime");
18940
+ var SelectUser = ({
18941
+ candidates,
18942
+ onSelect,
18943
+ busyUuid,
18944
+ error
18945
+ }) => {
18946
+ const { t } = (0, import_react_i18next22.useTranslation)();
18947
+ const { colors } = useTheme();
18948
+ const selectable = selectableIdentities(candidates);
18949
+ const busy = busyUuid !== null;
18950
+ return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_react_native50.ScrollView, { contentContainerStyle: styles39.container, children: [
18951
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_native50.Text, { style: [typography.title, styles39.heading, { color: colors.text }], children: t("chooseYourProfile") }),
18952
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_native50.Text, { style: [typography.body, styles39.subtitle, { color: colors.textSecondary }], children: t("loginIdentifierLinkedToMultipleProfiles") }),
18953
+ error ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_native50.Text, { style: [typography.caption, styles39.error, { color: colors.error }], children: error }) : null,
18954
+ selectable.map((candidate) => {
18955
+ const { orgUserId, fallback } = identityPrimaryValue(candidate);
18956
+ const primaryLabel = orgUserId ? t("userIdLabel", { id: orgUserId }) : fallback;
18957
+ const secondaryLabels = identitySecondaryLabels(candidate, primaryLabel);
18958
+ const isBusy = busyUuid === candidate.uuid;
18959
+ return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(
18960
+ import_react_native50.TouchableOpacity,
18961
+ {
18962
+ accessibilityRole: "button",
18963
+ disabled: busy,
18964
+ onPress: () => onSelect(candidate.uuid),
18965
+ style: [
18966
+ styles39.row,
18967
+ {
18968
+ backgroundColor: colors.surface,
18969
+ borderColor: isBusy ? colors.primary : colors.border
18970
+ }
18971
+ ],
18972
+ children: [
18973
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(import_react_native50.View, { style: styles39.rowText, children: [
18974
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(import_react_native50.Text, { style: [typography.label, { color: colors.text }], children: primaryLabel }),
18975
+ secondaryLabels.map((label) => /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
18976
+ import_react_native50.Text,
18977
+ {
18978
+ style: [typography.caption, styles39.secondary, { color: colors.textSecondary }],
18979
+ children: label
18980
+ },
18981
+ label
18982
+ ))
18983
+ ] }),
18984
+ 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 })
18985
+ ]
18986
+ },
18987
+ candidate.uuid
18988
+ );
18989
+ })
18990
+ ] });
18991
+ };
18992
+ var styles39 = import_react_native50.StyleSheet.create({
18993
+ container: { padding: spacing.lg },
18994
+ heading: { textAlign: "center" },
18995
+ subtitle: { textAlign: "center", marginTop: spacing.xs, marginBottom: spacing.lg },
18996
+ error: { textAlign: "center", marginBottom: spacing.md },
18997
+ row: {
18998
+ flexDirection: "row",
18999
+ alignItems: "center",
19000
+ borderWidth: 1,
19001
+ borderRadius: radii.md,
19002
+ padding: spacing.md,
19003
+ marginBottom: spacing.sm
19004
+ },
19005
+ rowText: { flex: 1 },
19006
+ secondary: { marginTop: 2 }
19007
+ });
19008
+
19009
+ // src/RedactoPrivacyCenter/components/SelectUserGate.tsx
19010
+ var import_jsx_runtime53 = require("react/jsx-runtime");
19011
+ function SelectUserGate({ children }) {
19012
+ var _a3, _b;
19013
+ const { accessToken, organizationId, workspaceId, updateTokens } = useAuth();
19014
+ const { consentClient } = useBaseUrl();
19015
+ const { colors } = useTheme();
19016
+ const insets = useSafeInsets();
19017
+ const [phase, setPhase] = (0, import_react36.useState)("checking");
19018
+ const [candidates, setCandidates] = (0, import_react36.useState)([]);
19019
+ const [busyUuid, setBusyUuid] = (0, import_react36.useState)(null);
19020
+ const [selectError, setSelectError] = (0, import_react36.useState)(null);
19021
+ const [pinnedOrgUserId, setPinnedOrgUserId] = (0, import_react36.useState)(null);
19022
+ const tokenOrgUserId = ((_b = (_a3 = decodeJwtToken(accessToken)) == null ? void 0 : _a3.user_data) == null ? void 0 : _b.org_user_id) || "";
19023
+ (0, import_react36.useEffect)(() => {
19024
+ let cancelled = false;
19025
+ if (isSandboxMode() || !organizationId || !workspaceId || !accessToken) {
19026
+ setPhase("resolved");
19027
+ return;
19028
+ }
19029
+ const isPinned = Boolean(pinnedOrgUserId) && pinnedOrgUserId === tokenOrgUserId;
19030
+ setPhase(isPinned ? "resolved" : "checking");
19031
+ (async () => {
19032
+ var _a4;
19033
+ try {
19034
+ const res = await consentClient.listIdentities({
19035
+ organisationUuid: organizationId,
19036
+ workspaceUuid: workspaceId,
19037
+ authToken: accessToken
19038
+ });
19039
+ if (cancelled) return;
19040
+ const list = (_a4 = res == null ? void 0 : res.identities) != null ? _a4 : [];
19041
+ setCandidates(list);
19042
+ setPhase(list.length > 1 && !isPinned ? "picking" : "resolved");
19043
+ } catch {
19044
+ if (cancelled) return;
19045
+ setCandidates([]);
19046
+ setPhase("resolved");
19047
+ }
19048
+ })();
19049
+ return () => {
19050
+ cancelled = true;
19051
+ };
19052
+ }, [organizationId, workspaceId, tokenOrgUserId]);
19053
+ const handleSelect = (0, import_react36.useCallback)(
19054
+ async (principalUuid) => {
19055
+ var _a4, _b2;
19056
+ if (!principalUuid || busyUuid || !organizationId || !workspaceId) return;
19057
+ setBusyUuid(principalUuid);
19058
+ setSelectError(null);
19059
+ try {
19060
+ const res = await consentClient.selectPrincipal(
19061
+ {
19062
+ organisationUuid: organizationId,
19063
+ workspaceUuid: workspaceId,
19064
+ authToken: accessToken
19065
+ },
19066
+ principalUuid
19067
+ );
19068
+ if (!(res == null ? void 0 : res.token) || !(res == null ? void 0 : res.refresh_token)) {
19069
+ throw new Error("select-principal returned no tokens");
19070
+ }
19071
+ const pinned = ((_b2 = (_a4 = decodeJwtToken(res.token)) == null ? void 0 : _a4.user_data) == null ? void 0 : _b2.org_user_id) || null;
19072
+ setPinnedOrgUserId(pinned);
19073
+ setPhase("resolved");
19074
+ updateTokens(res.token, res.refresh_token);
19075
+ } catch (error) {
19076
+ setSelectError(
19077
+ error instanceof Error ? error.message : "Failed to switch profile"
19078
+ );
19079
+ } finally {
19080
+ setBusyUuid(null);
19081
+ }
19082
+ },
19083
+ [accessToken, busyUuid, consentClient, organizationId, workspaceId, updateTokens]
19084
+ );
19085
+ const canSwitch = candidates.length > 1;
19086
+ const switchProfile = (0, import_react36.useCallback)(() => {
19087
+ if (!canSwitch) return;
19088
+ setSelectError(null);
19089
+ setPhase("picking");
19090
+ }, [canSwitch]);
19091
+ if (phase === "checking" || phase === "picking") {
19092
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
19093
+ import_react_native51.View,
19094
+ {
19095
+ style: [
19096
+ styles40.screen,
19097
+ {
19098
+ backgroundColor: colors.canvasSubtle,
19099
+ paddingTop: insets.top,
19100
+ paddingBottom: insets.bottom
19101
+ }
19102
+ ],
19103
+ children: phase === "checking" ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(PCLoader, {}) : /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
19104
+ SelectUser,
19105
+ {
19106
+ candidates,
19107
+ onSelect: handleSelect,
19108
+ busyUuid,
19109
+ error: selectError
19110
+ }
19111
+ )
19112
+ }
19113
+ );
19114
+ }
19115
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(ProfileSwitchProvider, { switchProfile: canSwitch ? switchProfile : null, children });
19116
+ }
19117
+ var styles40 = import_react_native51.StyleSheet.create({
19118
+ screen: { flex: 1 }
19119
+ });
19120
+
18623
19121
  // 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");
19122
+ var import_react41 = require("react");
19123
+ var import_react_native59 = require("react-native");
19124
+ var import_react_i18next28 = require("react-i18next");
18627
19125
 
18628
19126
  // 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");
19127
+ var import_react_native52 = require("react-native");
19128
+ var import_react_i18next23 = require("react-i18next");
19129
+ var import_jsx_runtime54 = require("react/jsx-runtime");
18632
19130
  function RequestDetailsTab({ selectedCase, requestTypeLabel }) {
18633
- const { t } = (0, import_react_i18next21.useTranslation)();
19131
+ const { t } = (0, import_react_i18next23.useTranslation)();
18634
19132
  const { colors } = useTheme();
18635
19133
  const { listBottom } = usePrivacyCenterInsets({ hasFooter: true });
18636
19134
  const details = selectedCase.request_details;
@@ -18662,36 +19160,36 @@ function RequestDetailsTab({ selectedCase, requestTypeLabel }) {
18662
19160
  }
18663
19161
  const description = selectedCase.description_display || selectedCase.description;
18664
19162
  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) => {
19163
+ 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: [
19164
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.View, { style: styles41.timeline, children: steps.map((step, i) => {
18667
19165
  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,
19166
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.stepRow, children: [
19167
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.gutter, children: [
19168
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
19169
+ import_react_native52.View,
18672
19170
  {
18673
19171
  style: [
18674
- styles39.dot,
19172
+ styles41.dot,
18675
19173
  step.state === "upcoming" ? { backgroundColor: colors.canvasSubtle, borderWidth: 2, borderColor: step.danger ? colors.error : colors.border } : { backgroundColor: step.color }
18676
19174
  ],
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
19175
+ 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
19176
  }
18679
19177
  ),
18680
- !isLast ? /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react_native50.View, { style: [styles39.connector, { backgroundColor: colors.border }] }) : null
19178
+ !isLast ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.View, { style: [styles41.connector, { backgroundColor: colors.border }] }) : null
18681
19179
  ] }),
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
19180
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: [styles41.stepContent, isLast && styles41.stepContentLast], children: [
19181
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.stepLabel, { color: step.danger ? colors.error : colors.text }], children: step.label }),
19182
+ 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
19183
  ] })
18686
19184
  ] }, `${step.label}-${i}`);
18687
19185
  }) }),
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 })
19186
+ hasDetails ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: [styles41.card, elevation.card, { backgroundColor: colors.surface }], children: [
19187
+ description ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.block, children: [
19188
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.blockLabel, { color: colors.textSecondary }], children: t("descriptionLabel") || "Description" }),
19189
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.descriptionText, { color: colors.text }], children: description })
18692
19190
  ] }) : 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" }),
19191
+ (details == null ? void 0 : details.purposes) && details.purposes.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.block, children: [
19192
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.blockLabel, { color: colors.textSecondary }], children: t("purposesInvolved") || t("purposes") || "Purposes" }),
18695
19193
  details.purposes.map((rawP, idx) => {
18696
19194
  const p = (rawP == null ? void 0 : rawP.purpose) ? rawP.purpose : rawP;
18697
19195
  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 +19197,10 @@ function RequestDetailsTab({ selectedCase, requestTypeLabel }) {
18699
19197
  const purposeDescription = (p == null ? void 0 : p.description) || (rawP == null ? void 0 : rawP.description);
18700
19198
  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
19199
  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: [
19200
+ 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: [
19201
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.itemTitle, { color: colors.text }], children: purposeName }),
19202
+ purposeDescription ? /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.itemDesc, { color: colors.textSecondary }], numberOfLines: 3, children: purposeDescription }) : null,
19203
+ 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
19204
  dataElementUuids.length,
18707
19205
  " ",
18708
19206
  t("dataElements") || "data elements"
@@ -18710,44 +19208,44 @@ function RequestDetailsTab({ selectedCase, requestTypeLabel }) {
18710
19208
  ] }, purposeId);
18711
19209
  })
18712
19210
  ] }) : 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 || "-" })
19211
+ (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: [
19212
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.blockLabel, { color: colors.textSecondary }], children: t("correctionData") || "Correction" }),
19213
+ 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: [
19214
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.itemTitle, { color: colors.text }], children: item.name }),
19215
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.correctionValues, children: [
19216
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.correctionValue, children: [
19217
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.correctionLabel, { color: colors.textSecondary }], children: t("currentValue") || "Current" }),
19218
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.correctionText, { color: colors.text }], children: item.curr_value || "-" })
18721
19219
  ] }),
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 || "-" })
19220
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Icon, { name: "chevron-right", size: 16, color: colors.textSecondary, strokeWidth: 2.2 }),
19221
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.correctionValue, children: [
19222
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.correctionLabel, { color: colors.textSecondary }], children: t("newValue") || "New" }),
19223
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.correctionText, { color: colors.primary }], children: item.new_value || "-" })
18726
19224
  ] })
18727
19225
  ] })
18728
19226
  ] }, idx))
18729
19227
  ] }) : 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)) })
19228
+ (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: [
19229
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.blockLabel, { color: colors.textSecondary }], children: t("grievanceTypes") || "Grievance" }),
19230
+ /* @__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
19231
  ] }) : 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 })
19232
+ (details == null ? void 0 : details.nomination_data) ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.block, children: [
19233
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.blockLabel, { color: colors.textSecondary }], children: t("nominationData") || "Nomination" }),
19234
+ details.nomination_data.nominee_email ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.kvRow, children: [
19235
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.kvLabel, { color: colors.textSecondary }], children: t("email") || "Email" }),
19236
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.kvValue, { color: colors.text }], children: details.nomination_data.nominee_email })
18739
19237
  ] }) : 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 })
19238
+ details.nomination_data.nominee_mobile ? /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react_native52.View, { style: styles41.kvRow, children: [
19239
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.kvLabel, { color: colors.textSecondary }], children: t("mobile") || "Mobile" }),
19240
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.Text, { style: [styles41.kvValue, { color: colors.text }], children: details.nomination_data.nominee_mobile })
18743
19241
  ] }) : null
18744
19242
  ] }) : null
18745
19243
  ] }) : null,
18746
- /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(import_react_native50.View, { style: { marginTop: "auto" }, children: /* @__PURE__ */ (0, import_jsx_runtime50.jsx)(Footer, {}) })
19244
+ /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native52.View, { style: { marginTop: "auto" }, children: /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(Footer, {}) })
18747
19245
  ] });
18748
19246
  }
18749
19247
  var DOT = 22;
18750
- var styles39 = import_react_native50.StyleSheet.create({
19248
+ var styles41 = import_react_native52.StyleSheet.create({
18751
19249
  container: {
18752
19250
  flex: 1
18753
19251
  },
@@ -18868,51 +19366,51 @@ var styles39 = import_react_native50.StyleSheet.create({
18868
19366
  });
18869
19367
 
18870
19368
  // 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");
19369
+ var import_react40 = require("react");
19370
+ var import_react_native58 = require("react-native");
19371
+ var import_react_i18next27 = require("react-i18next");
18874
19372
 
18875
19373
  // src/RedactoPrivacyCenter/components/CaseDetails/MessageItem.tsx
18876
- var import_react36 = __toESM(require("react"));
18877
- var import_react_i18next23 = require("react-i18next");
19374
+ var import_react38 = __toESM(require("react"));
19375
+ var import_react_i18next25 = require("react-i18next");
18878
19376
 
18879
19377
  // src/RedactoPrivacyCenter/components/CaseDetails/ChatBubble.tsx
18880
- var import_react35 = __toESM(require("react"));
18881
- var import_react_native52 = require("react-native");
19378
+ var import_react37 = __toESM(require("react"));
19379
+ var import_react_native54 = require("react-native");
18882
19380
 
18883
19381
  // src/RedactoPrivacyCenter/components/CaseDetails/AttachmentCard.tsx
18884
- var import_react_native51 = require("react-native");
18885
- var import_jsx_runtime51 = require("react/jsx-runtime");
19382
+ var import_react_native53 = require("react-native");
19383
+ var import_jsx_runtime55 = require("react/jsx-runtime");
18886
19384
  function AttachmentCard({ doc }) {
18887
19385
  const { colors } = useTheme();
18888
19386
  const downloadUrl = getDownloadUrl(doc.file_url);
18889
19387
  const handlePress = () => {
18890
19388
  if (downloadUrl) {
18891
- import_react_native51.Linking.openURL(downloadUrl);
19389
+ import_react_native53.Linking.openURL(downloadUrl);
18892
19390
  }
18893
19391
  };
18894
- return /* @__PURE__ */ (0, import_jsx_runtime51.jsxs)(
18895
- import_react_native51.TouchableOpacity,
19392
+ return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(
19393
+ import_react_native53.TouchableOpacity,
18896
19394
  {
18897
- style: [styles40.container, { backgroundColor: colors.surface, borderColor: colors.border }],
19395
+ style: [styles42.container, { backgroundColor: colors.surface, borderColor: colors.border }],
18898
19396
  onPress: handlePress,
18899
19397
  disabled: !downloadUrl,
18900
19398
  activeOpacity: 0.7,
18901
19399
  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
19400
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(Icon, { name: "file-text", size: 18, color: colors.textSecondary }),
19401
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(import_react_native53.View, { style: styles42.info, children: [
19402
+ /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(import_react_native53.Text, { style: [styles42.fileName, { color: colors.text }], numberOfLines: 1, children: doc.file_name || "Document" }),
19403
+ 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
19404
  ] })
18907
19405
  ]
18908
19406
  }
18909
19407
  );
18910
19408
  }
18911
- var styles40 = import_react_native51.StyleSheet.create({
19409
+ var styles42 = import_react_native53.StyleSheet.create({
18912
19410
  container: {
18913
19411
  flexDirection: "row",
18914
19412
  alignItems: "center",
18915
- borderWidth: import_react_native51.StyleSheet.hairlineWidth,
19413
+ borderWidth: import_react_native53.StyleSheet.hairlineWidth,
18916
19414
  borderRadius: radii.md,
18917
19415
  paddingHorizontal: spacing.sm + 2,
18918
19416
  paddingVertical: spacing.sm,
@@ -18932,11 +19430,11 @@ var styles40 = import_react_native51.StyleSheet.create({
18932
19430
  });
18933
19431
 
18934
19432
  // src/RedactoPrivacyCenter/components/CaseDetails/ChatBubble.tsx
18935
- var import_jsx_runtime52 = require("react/jsx-runtime");
19433
+ var import_jsx_runtime56 = require("react/jsx-runtime");
18936
19434
  var AVATAR_SIZE = 28;
18937
19435
  var AVATAR_GUTTER = 36;
18938
19436
  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 }) });
19437
+ 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
19438
  }
18941
19439
  function ChatBubbleImpl({
18942
19440
  message,
@@ -18963,28 +19461,28 @@ function ChatBubbleImpl({
18963
19461
  borderBottomRightRadius: BUBBLE_RADIUS,
18964
19462
  borderBottomLeftRadius: tailRadius
18965
19463
  };
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
19464
+ const bubble = /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_react_native54.View, { style: [styles43.bubble, bubbleStyle], children: [
19465
+ !isPrincipal && isFirstInGroup ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(import_react_native54.Text, { style: [styles43.bubbleSender, { color: colors.primary }], numberOfLines: 1, children: senderLabel }) : null,
19466
+ 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,
19467
+ 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
19468
  ] });
18971
- return /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(
18972
- import_react_native52.View,
19469
+ return /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(
19470
+ import_react_native54.View,
18973
19471
  {
18974
19472
  style: [
18975
- styles41.row,
18976
- isPrincipal ? styles41.rowRight : styles41.rowLeft,
19473
+ styles43.row,
19474
+ isPrincipal ? styles43.rowRight : styles43.rowLeft,
18977
19475
  { marginTop: isFirstInGroup ? spacing.md : 2 }
18978
19476
  ],
18979
19477
  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: [
19478
+ !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,
19479
+ /* @__PURE__ */ (0, import_jsx_runtime56.jsxs)(import_react_native54.View, { style: [styles43.column, isPrincipal ? styles43.columnRight : styles43.columnLeft], children: [
18982
19480
  bubble,
18983
- isLastInGroup ? /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
18984
- import_react_native52.Text,
19481
+ isLastInGroup ? /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
19482
+ import_react_native54.Text,
18985
19483
  {
18986
19484
  style: [
18987
- styles41.timestamp,
19485
+ styles43.timestamp,
18988
19486
  { color: colors.textSecondary, textAlign: isPrincipal ? "right" : "left" }
18989
19487
  ],
18990
19488
  children: formatMessageTime(timestamp)
@@ -18995,8 +19493,8 @@ function ChatBubbleImpl({
18995
19493
  }
18996
19494
  );
18997
19495
  }
18998
- var ChatBubble = import_react35.default.memo(ChatBubbleImpl);
18999
- var styles41 = import_react_native52.StyleSheet.create({
19496
+ var ChatBubble = import_react37.default.memo(ChatBubbleImpl);
19497
+ var styles43 = import_react_native54.StyleSheet.create({
19000
19498
  row: {
19001
19499
  flexDirection: "row",
19002
19500
  paddingHorizontal: spacing.md,
@@ -19056,9 +19554,9 @@ var styles41 = import_react_native52.StyleSheet.create({
19056
19554
  });
19057
19555
 
19058
19556
  // 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");
19557
+ var import_react_native55 = require("react-native");
19558
+ var import_react_i18next24 = require("react-i18next");
19559
+ var import_jsx_runtime57 = require("react/jsx-runtime");
19062
19560
  var STATUS_BADGE_MAP = {
19063
19561
  pending: "warning",
19064
19562
  under_review: "info",
@@ -19078,20 +19576,20 @@ function humanize(value) {
19078
19576
  }
19079
19577
  function DocumentRequestCard({ message, onUpload, isSubmitting, isCaseFinalized = false }) {
19080
19578
  var _a3;
19081
- const { t } = (0, import_react_i18next22.useTranslation)();
19579
+ const { t } = (0, import_react_i18next24.useTranslation)();
19082
19580
  const { colors } = useTheme();
19083
19581
  const meta = message.document_request_metadata;
19084
19582
  if (!meta) return null;
19085
19583
  const status = meta.document_request_status;
19086
19584
  const canUpload = (status === "pending" || status === "replacement_requested") && !isCaseFinalized;
19087
19585
  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" })
19586
+ return /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_react_native55.View, { style: [styles44.container, { borderColor: colors.border, backgroundColor: colors.surface }], children: [
19587
+ /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_react_native55.View, { style: styles44.header, children: [
19588
+ /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_react_native55.View, { style: styles44.titleRow, children: [
19589
+ /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(Icon, { name: "file-check", size: 16, color: colors.primary, strokeWidth: 2 }),
19590
+ /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_react_native55.Text, { style: [styles44.title, { color: colors.text }], children: meta.title || t("documentRequestedLabel") || "Document Requested" })
19093
19591
  ] }),
19094
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
19592
+ /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
19095
19593
  PCBadge,
19096
19594
  {
19097
19595
  status: STATUS_BADGE_MAP[status] || "info",
@@ -19099,30 +19597,30 @@ function DocumentRequestCard({ message, onUpload, isSubmitting, isCaseFinalized
19099
19597
  }
19100
19598
  )
19101
19599
  ] }),
19102
- meta.accepted_document ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_native53.Text, { style: [styles42.accepted, { color: colors.textSecondary }], children: t("acceptedLabel", {
19600
+ meta.accepted_document ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_react_native55.Text, { style: [styles44.accepted, { color: colors.textSecondary }], children: t("acceptedLabel", {
19103
19601
  accepted: meta.accepted_document,
19104
19602
  defaultValue: `Accepted: ${meta.accepted_document}`
19105
19603
  }) }) : 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: [
19604
+ meta.rejection_reason ? /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_react_native55.View, { style: [styles44.rejectionBox, { backgroundColor: colors.errorSoft }], children: [
19605
+ /* @__PURE__ */ (0, import_jsx_runtime57.jsxs)(import_react_native55.Text, { style: [styles44.rejectionLabel, { color: colors.error }], children: [
19108
19606
  t("rejectionReasonLabel") || "Rejection reason",
19109
19607
  ":"
19110
19608
  ] }),
19111
- /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(import_react_native53.Text, { style: [styles42.rejectionText, { color: colors.error }], children: meta.rejection_reason })
19609
+ /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(import_react_native55.Text, { style: [styles44.rejectionText, { color: colors.error }], children: meta.rejection_reason })
19112
19610
  ] }) : null,
19113
- canUpload && requestEventUuid ? /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(
19114
- import_react_native53.TouchableOpacity,
19611
+ canUpload && requestEventUuid ? /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
19612
+ import_react_native55.TouchableOpacity,
19115
19613
  {
19116
- style: [styles42.uploadButton, { backgroundColor: colors.primary }],
19614
+ style: [styles44.uploadButton, { backgroundColor: colors.primary }],
19117
19615
  onPress: () => onUpload(requestEventUuid),
19118
19616
  disabled: isSubmitting,
19119
19617
  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" })
19618
+ 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
19619
  }
19122
19620
  ) : null
19123
19621
  ] });
19124
19622
  }
19125
- var styles42 = import_react_native53.StyleSheet.create({
19623
+ var styles44 = import_react_native55.StyleSheet.create({
19126
19624
  container: {
19127
19625
  borderWidth: 1.5,
19128
19626
  borderStyle: "dashed",
@@ -19175,20 +19673,20 @@ var styles42 = import_react_native53.StyleSheet.create({
19175
19673
  });
19176
19674
 
19177
19675
  // src/RedactoPrivacyCenter/components/CaseDetails/StatusEvent.tsx
19178
- var import_react_native54 = require("react-native");
19179
- var import_jsx_runtime54 = require("react/jsx-runtime");
19676
+ var import_react_native56 = require("react-native");
19677
+ var import_jsx_runtime58 = require("react/jsx-runtime");
19180
19678
  function StatusEvent({ icon, color, bgColor, borderColor, text, subText, timestamp }) {
19181
19679
  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
19680
+ return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(import_react_native56.View, { style: [styles45.container, { backgroundColor: bgColor }], children: [
19681
+ /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_react_native56.View, { style: [styles45.iconBubble, { backgroundColor: `${color}1F` }], children: icon }),
19682
+ /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(import_react_native56.View, { style: styles45.textContainer, children: [
19683
+ /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_react_native56.Text, { style: [styles45.text, { color }], children: text }),
19684
+ subText ? /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_react_native56.Text, { style: [styles45.subText, { color: colors.textSecondary }], numberOfLines: 2, children: subText }) : null
19187
19685
  ] }),
19188
- /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_react_native54.Text, { style: [styles43.timestamp, { color: colors.textSecondary }], children: formatMessageTime(timestamp) })
19686
+ /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_react_native56.Text, { style: [styles45.timestamp, { color: colors.textSecondary }], children: formatMessageTime(timestamp) })
19189
19687
  ] });
19190
19688
  }
19191
- var styles43 = import_react_native54.StyleSheet.create({
19689
+ var styles45 = import_react_native56.StyleSheet.create({
19192
19690
  container: {
19193
19691
  flexDirection: "row",
19194
19692
  alignItems: "center",
@@ -19227,10 +19725,10 @@ var styles43 = import_react_native54.StyleSheet.create({
19227
19725
  });
19228
19726
 
19229
19727
  // 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 });
19728
+ var import_jsx_runtime59 = require("react/jsx-runtime");
19729
+ var CheckIcon = ({ color }) => /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Icon, { name: "check", size: 14, color, strokeWidth: 2.6 });
19730
+ var XIcon = ({ color }) => /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Icon, { name: "x", size: 14, color, strokeWidth: 2.6 });
19731
+ var RefreshIcon = ({ color }) => /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(Icon, { name: "refresh-cw", size: 14, color, strokeWidth: 2.2 });
19234
19732
  function MessageItemImpl({
19235
19733
  message,
19236
19734
  onUploadForRequest,
@@ -19240,14 +19738,14 @@ function MessageItemImpl({
19240
19738
  isLastInGroup = true
19241
19739
  }) {
19242
19740
  var _a3, _b;
19243
- const { t } = (0, import_react_i18next23.useTranslation)();
19741
+ const { t } = (0, import_react_i18next25.useTranslation)();
19244
19742
  const isPrincipal = message.sender_role === "data_principal";
19245
19743
  const senderLabel = isPrincipal ? t("senderYou") || "You" : t("senderPrivacyTeam") || "Privacy Team";
19246
19744
  switch (message.message_type) {
19247
19745
  case "message_sent":
19248
19746
  case "document_submitted":
19249
19747
  case "document_replaced":
19250
- return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
19748
+ return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
19251
19749
  ChatBubble,
19252
19750
  {
19253
19751
  message,
@@ -19259,8 +19757,8 @@ function MessageItemImpl({
19259
19757
  }
19260
19758
  );
19261
19759
  case "document_requested":
19262
- return /* @__PURE__ */ (0, import_jsx_runtime55.jsxs)(import_jsx_runtime55.Fragment, { children: [
19263
- /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
19760
+ return /* @__PURE__ */ (0, import_jsx_runtime59.jsxs)(import_jsx_runtime59.Fragment, { children: [
19761
+ /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
19264
19762
  ChatBubble,
19265
19763
  {
19266
19764
  message,
@@ -19271,7 +19769,7 @@ function MessageItemImpl({
19271
19769
  isLastInGroup
19272
19770
  }
19273
19771
  ),
19274
- /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
19772
+ /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
19275
19773
  DocumentRequestCard,
19276
19774
  {
19277
19775
  message,
@@ -19282,10 +19780,10 @@ function MessageItemImpl({
19282
19780
  )
19283
19781
  ] });
19284
19782
  case "document_approved":
19285
- return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
19783
+ return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
19286
19784
  StatusEvent,
19287
19785
  {
19288
- icon: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(CheckIcon, { color: "#059669" }),
19786
+ icon: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(CheckIcon, { color: "#059669" }),
19289
19787
  color: "#059669",
19290
19788
  bgColor: "rgba(16, 185, 129, 0.08)",
19291
19789
  borderColor: "rgba(16, 185, 129, 0.2)",
@@ -19294,10 +19792,10 @@ function MessageItemImpl({
19294
19792
  }
19295
19793
  );
19296
19794
  case "document_rejected":
19297
- return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
19795
+ return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
19298
19796
  StatusEvent,
19299
19797
  {
19300
- icon: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(XIcon, { color: "#DC2626" }),
19798
+ icon: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(XIcon, { color: "#DC2626" }),
19301
19799
  color: "#DC2626",
19302
19800
  bgColor: "rgba(220, 38, 38, 0.08)",
19303
19801
  borderColor: "rgba(220, 38, 38, 0.2)",
@@ -19307,10 +19805,10 @@ function MessageItemImpl({
19307
19805
  }
19308
19806
  );
19309
19807
  case "document_replacement_requested":
19310
- return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
19808
+ return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
19311
19809
  StatusEvent,
19312
19810
  {
19313
- icon: /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(RefreshIcon, { color: "#D97706" }),
19811
+ icon: /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(RefreshIcon, { color: "#D97706" }),
19314
19812
  color: "#D97706",
19315
19813
  bgColor: "rgba(245, 158, 11, 0.08)",
19316
19814
  borderColor: "rgba(245, 158, 11, 0.2)",
@@ -19320,7 +19818,7 @@ function MessageItemImpl({
19320
19818
  }
19321
19819
  );
19322
19820
  default:
19323
- return /* @__PURE__ */ (0, import_jsx_runtime55.jsx)(
19821
+ return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
19324
19822
  ChatBubble,
19325
19823
  {
19326
19824
  message,
@@ -19333,13 +19831,13 @@ function MessageItemImpl({
19333
19831
  );
19334
19832
  }
19335
19833
  }
19336
- var MessageItem = import_react36.default.memo(MessageItemImpl);
19834
+ var MessageItem = import_react38.default.memo(MessageItemImpl);
19337
19835
 
19338
19836
  // 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");
19837
+ var import_react39 = require("react");
19838
+ var import_react_native57 = require("react-native");
19839
+ var import_react_i18next26 = require("react-i18next");
19840
+ var import_jsx_runtime60 = require("react/jsx-runtime");
19343
19841
  function MessageComposer({
19344
19842
  messageText,
19345
19843
  onMessageTextChange,
@@ -19351,15 +19849,15 @@ function MessageComposer({
19351
19849
  isUploading,
19352
19850
  isCaseFinalized = false
19353
19851
  }) {
19354
- const { t } = (0, import_react_i18next24.useTranslation)();
19852
+ const { t } = (0, import_react_i18next26.useTranslation)();
19355
19853
  const { colors } = useTheme();
19356
19854
  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, {
19855
+ const activate = (0, import_react39.useRef)(new import_react_native57.Animated.Value(canSend ? 1 : 0)).current;
19856
+ (0, import_react39.useEffect)(() => {
19857
+ import_react_native57.Animated.timing(activate, {
19360
19858
  toValue: canSend ? 1 : 0,
19361
19859
  duration: 180,
19362
- easing: import_react_native55.Easing.out(import_react_native55.Easing.quad),
19860
+ easing: import_react_native57.Easing.out(import_react_native57.Easing.quad),
19363
19861
  useNativeDriver: false
19364
19862
  }).start();
19365
19863
  }, [canSend, activate]);
@@ -19367,30 +19865,30 @@ function MessageComposer({
19367
19865
  inputRange: [0, 1],
19368
19866
  outputRange: [colors.border, colors.primary]
19369
19867
  });
19370
- const pressScale = (0, import_react37.useRef)(new import_react_native55.Animated.Value(1)).current;
19868
+ const pressScale = (0, import_react39.useRef)(new import_react_native57.Animated.Value(1)).current;
19371
19869
  const handlePressIn = () => {
19372
- import_react_native55.Animated.spring(pressScale, { toValue: 0.88, useNativeDriver: true, speed: 30, bounciness: 0 }).start();
19870
+ import_react_native57.Animated.spring(pressScale, { toValue: 0.88, useNativeDriver: true, speed: 30, bounciness: 0 }).start();
19373
19871
  };
19374
19872
  const handlePressOut = () => {
19375
- import_react_native55.Animated.spring(pressScale, { toValue: 1, useNativeDriver: true, speed: 20, bounciness: 6 }).start();
19873
+ import_react_native57.Animated.spring(pressScale, { toValue: 1, useNativeDriver: true, speed: 20, bounciness: 6 }).start();
19376
19874
  };
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, {
19875
+ const pillIn = (0, import_react39.useRef)(new import_react_native57.Animated.Value(0)).current;
19876
+ (0, import_react39.useEffect)(() => {
19877
+ import_react_native57.Animated.timing(pillIn, {
19380
19878
  toValue: pendingUpload ? 1 : 0,
19381
19879
  duration: 220,
19382
- easing: import_react_native55.Easing.out(import_react_native55.Easing.cubic),
19880
+ easing: import_react_native57.Easing.out(import_react_native57.Easing.cubic),
19383
19881
  useNativeDriver: true
19384
19882
  }).start();
19385
19883
  }, [pendingUpload, pillIn]);
19386
19884
  const pillOpacity = pillIn;
19387
19885
  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,
19886
+ return /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(import_react_native57.View, { style: [styles46.container, { borderTopColor: colors.hairline, backgroundColor: colors.canvasSubtle, paddingBottom: spacing.sm }], children: [
19887
+ pendingUpload && /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(
19888
+ import_react_native57.Animated.View,
19391
19889
  {
19392
19890
  style: [
19393
- styles44.uploadPill,
19891
+ styles46.uploadPill,
19394
19892
  {
19395
19893
  backgroundColor: colors.primarySoft,
19396
19894
  opacity: pillOpacity,
@@ -19398,34 +19896,34 @@ function MessageComposer({
19398
19896
  }
19399
19897
  ],
19400
19898
  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: [
19899
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Icon, { name: "file", size: 14, color: colors.primary }),
19900
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(import_react_native57.Text, { style: [styles46.uploadFileName, { color: colors.primary }], numberOfLines: 1, children: [
19403
19901
  pendingUpload.file_name,
19404
19902
  " (",
19405
19903
  formatFileSize(pendingUpload.file_size),
19406
19904
  ")"
19407
19905
  ] }),
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 }) })
19906
+ /* @__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
19907
  ]
19410
19908
  }
19411
19909
  ),
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,
19910
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsxs)(import_react_native57.View, { style: [styles46.pill, { backgroundColor: colors.surface, borderColor: colors.border }, isCaseFinalized && styles46.pillDisabled], children: [
19911
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
19912
+ import_react_native57.TouchableOpacity,
19415
19913
  {
19416
- style: styles44.attachButton,
19914
+ style: styles46.attachButton,
19417
19915
  onPress: onAttachClick,
19418
19916
  disabled: isUploading || isCaseFinalized,
19419
19917
  activeOpacity: 0.6,
19420
19918
  hitSlop: DEFAULT_HIT_SLOP,
19421
19919
  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 })
19920
+ 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
19921
  }
19424
19922
  ),
19425
- /* @__PURE__ */ (0, import_jsx_runtime56.jsx)(
19426
- import_react_native55.TextInput,
19923
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
19924
+ import_react_native57.TextInput,
19427
19925
  {
19428
- style: [styles44.input, { color: colors.text }],
19926
+ style: [styles46.input, { color: colors.text }],
19429
19927
  value: messageText,
19430
19928
  onChangeText: onMessageTextChange,
19431
19929
  placeholder: t("messageInputPlaceholder", { defaultValue: "Message\u2026" }),
@@ -19435,8 +19933,8 @@ function MessageComposer({
19435
19933
  editable: !isSending && !isCaseFinalized
19436
19934
  }
19437
19935
  ),
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,
19936
+ /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(import_react_native57.Animated.View, { style: { transform: [{ scale: pressScale }] }, children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
19937
+ import_react_native57.TouchableOpacity,
19440
19938
  {
19441
19939
  onPress: onSend,
19442
19940
  onPressIn: handlePressIn,
@@ -19444,15 +19942,15 @@ function MessageComposer({
19444
19942
  disabled: !canSend,
19445
19943
  activeOpacity: 0.85,
19446
19944
  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 }) }) })
19945
+ 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
19946
  }
19449
19947
  ) })
19450
19948
  ] })
19451
19949
  ] });
19452
19950
  }
19453
- var styles44 = import_react_native55.StyleSheet.create({
19951
+ var styles46 = import_react_native57.StyleSheet.create({
19454
19952
  container: {
19455
- borderTopWidth: import_react_native55.StyleSheet.hairlineWidth,
19953
+ borderTopWidth: import_react_native57.StyleSheet.hairlineWidth,
19456
19954
  paddingHorizontal: spacing.md,
19457
19955
  paddingVertical: spacing.sm
19458
19956
  },
@@ -19475,7 +19973,7 @@ var styles44 = import_react_native55.StyleSheet.create({
19475
19973
  pill: {
19476
19974
  flexDirection: "row",
19477
19975
  alignItems: "center",
19478
- borderWidth: import_react_native55.StyleSheet.hairlineWidth,
19976
+ borderWidth: import_react_native57.StyleSheet.hairlineWidth,
19479
19977
  borderRadius: radii.xxl + 4,
19480
19978
  paddingHorizontal: spacing.xs + 2,
19481
19979
  paddingVertical: spacing.xs,
@@ -19514,7 +20012,7 @@ var styles44 = import_react_native55.StyleSheet.create({
19514
20012
  });
19515
20013
 
19516
20014
  // src/RedactoPrivacyCenter/components/CaseDetails/MessagesTab.tsx
19517
- var import_jsx_runtime57 = require("react/jsx-runtime");
20015
+ var import_jsx_runtime61 = require("react/jsx-runtime");
19518
20016
  var STREAK_GAP_MS = 5 * 60 * 1e3;
19519
20017
  function isStreakBoundary(a, b) {
19520
20018
  if (!a || !b) return true;
@@ -19544,11 +20042,11 @@ function sameDay(a, b) {
19544
20042
  }
19545
20043
  var MESSAGE_POLL_INTERVAL = 3e4;
19546
20044
  function MessagesTab({ caseUuid, isCaseFinalized = false }) {
19547
- const { t } = (0, import_react_i18next25.useTranslation)();
20045
+ const { t } = (0, import_react_i18next27.useTranslation)();
19548
20046
  const { accessToken, refreshToken, email, organizationId, workspaceId, onError, updateTokens } = useAuth();
19549
20047
  const { consentClient } = useBaseUrl();
19550
20048
  const { colors } = useTheme();
19551
- const authContext = (0, import_react38.useMemo)(() => ({
20049
+ const authContext = (0, import_react40.useMemo)(() => ({
19552
20050
  accessToken,
19553
20051
  refreshToken,
19554
20052
  onError,
@@ -19560,13 +20058,13 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
19560
20058
  caseUuid,
19561
20059
  authContext
19562
20060
  );
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)(() => {
20061
+ const [messageText, setMessageText] = (0, import_react40.useState)("");
20062
+ const [pendingUpload, setPendingUpload] = (0, import_react40.useState)(null);
20063
+ const [isSending, setIsSending] = (0, import_react40.useState)(false);
20064
+ const [isUploading, setIsUploading] = (0, import_react40.useState)(false);
20065
+ const [isSubmittingForRequest, setIsSubmittingForRequest] = (0, import_react40.useState)(false);
20066
+ const flatListRef = (0, import_react40.useRef)(null);
20067
+ (0, import_react40.useEffect)(() => {
19570
20068
  if (messages && messages.length > 0) {
19571
20069
  setTimeout(() => {
19572
20070
  var _a3;
@@ -19574,16 +20072,19 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
19574
20072
  }, 100);
19575
20073
  }
19576
20074
  }, [messages == null ? void 0 : messages.length]);
19577
- const refetchRef = (0, import_react38.useRef)(refetch);
20075
+ const refetchRef = (0, import_react40.useRef)(refetch);
19578
20076
  refetchRef.current = refetch;
19579
- (0, import_react38.useEffect)(() => {
20077
+ const authContextRef = (0, import_react40.useRef)(authContext);
20078
+ authContextRef.current = authContext;
20079
+ (0, import_react40.useEffect)(() => {
19580
20080
  if (isCaseFinalized) return;
19581
20081
  const id = setInterval(() => {
20082
+ if (isRefreshBlocked(authContextRef.current)) return;
19582
20083
  refetchRef.current();
19583
20084
  }, MESSAGE_POLL_INTERVAL);
19584
20085
  return () => clearInterval(id);
19585
20086
  }, [isCaseFinalized]);
19586
- const handleSend = (0, import_react38.useCallback)(async () => {
20087
+ const handleSend = (0, import_react40.useCallback)(async () => {
19587
20088
  if (isCaseFinalized) return;
19588
20089
  if (!messageText.trim() && !pendingUpload) return;
19589
20090
  if (!organizationId || !workspaceId) return;
@@ -19608,7 +20109,7 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
19608
20109
  setIsSending(false);
19609
20110
  }
19610
20111
  }, [isCaseFinalized, messageText, pendingUpload, organizationId, workspaceId, caseUuid, authContext, consentClient, refetch]);
19611
- const handleAttach = (0, import_react38.useCallback)(async () => {
20112
+ const handleAttach = (0, import_react40.useCallback)(async () => {
19612
20113
  if (isCaseFinalized) return;
19613
20114
  if (!organizationId || !workspaceId) return;
19614
20115
  try {
@@ -19643,10 +20144,10 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
19643
20144
  setIsUploading(false);
19644
20145
  }
19645
20146
  }, [isCaseFinalized, organizationId, workspaceId, caseUuid, authContext, consentClient]);
19646
- const handleUploadForRequest = (0, import_react38.useCallback)((_requestEventUuid) => {
20147
+ const handleUploadForRequest = (0, import_react40.useCallback)((_requestEventUuid) => {
19647
20148
  handleAttach();
19648
20149
  }, [handleAttach]);
19649
- const messagesList = (0, import_react38.useMemo)(() => {
20150
+ const messagesList = (0, import_react40.useMemo)(() => {
19650
20151
  const list = messages ? [...messages] : [];
19651
20152
  list.sort((a, b) => {
19652
20153
  const ta = new Date(a.created_at).getTime();
@@ -19655,17 +20156,17 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
19655
20156
  });
19656
20157
  return list;
19657
20158
  }, [messages]);
19658
- const keyExtractor = (0, import_react38.useCallback)((item) => item.uuid, []);
19659
- const renderMessage = (0, import_react38.useCallback)(
20159
+ const keyExtractor = (0, import_react40.useCallback)((item) => item.uuid, []);
20160
+ const renderMessage = (0, import_react40.useCallback)(
19660
20161
  ({ item, index }) => {
19661
20162
  const prev = index > 0 ? messagesList[index - 1] : void 0;
19662
20163
  const next = index < messagesList.length - 1 ? messagesList[index + 1] : void 0;
19663
20164
  const isFirstInGroup = isStreakBoundary(prev, item);
19664
20165
  const isLastInGroup = isStreakBoundary(item, next);
19665
20166
  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)(
20167
+ return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_jsx_runtime61.Fragment, { children: [
20168
+ 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,
20169
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
19669
20170
  MessageItem,
19670
20171
  {
19671
20172
  message: item,
@@ -19681,32 +20182,32 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
19681
20182
  [messagesList, handleUploadForRequest, isSubmittingForRequest, isCaseFinalized, colors, t]
19682
20183
  );
19683
20184
  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 }) });
20185
+ 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
20186
  }
19686
20187
  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" }) });
20188
+ 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
20189
  }
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"}` })
20190
+ return /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_react_native58.View, { style: [styles47.container, { backgroundColor: colors.canvasSubtle }], children: [
20191
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_react_native58.View, { style: styles47.secureRow, children: [
20192
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(Icon, { name: "lock", size: 12, color: colors.textSecondary, strokeWidth: 2.2 }),
20193
+ /* @__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
20194
  ] }),
19694
- /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
19695
- import_react_native56.FlatList,
20195
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
20196
+ import_react_native58.FlatList,
19696
20197
  {
19697
20198
  ref: flatListRef,
19698
- style: styles45.list,
20199
+ style: styles47.list,
19699
20200
  data: messagesList,
19700
20201
  keyExtractor,
19701
20202
  renderItem: renderMessage,
19702
20203
  contentContainerStyle: [
19703
- styles45.messagesList,
19704
- messagesList.length ? styles45.messagesListFill : styles45.messagesListCenter
20204
+ styles47.messagesList,
20205
+ messagesList.length ? styles47.messagesListFill : styles47.messagesListCenter
19705
20206
  ],
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") })
20207
+ ListEmptyComponent: /* @__PURE__ */ (0, import_jsx_runtime61.jsxs)(import_react_native58.View, { style: styles47.emptyContainer, children: [
20208
+ /* @__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 }) }),
20209
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_react_native58.Text, { style: [styles47.emptyTitle, { color: colors.text }], children: t("noMessagesYet") || "No messages yet" }),
20210
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_react_native58.Text, { style: [styles47.emptySubtitle, { color: colors.textSecondary }], children: t("noMessagesYetSubtitle", "Start the conversation below") })
19710
20211
  ] }),
19711
20212
  onContentSizeChange: () => {
19712
20213
  var _a3;
@@ -19718,7 +20219,7 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
19718
20219
  removeClippedSubviews: true
19719
20220
  }
19720
20221
  ),
19721
- /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
20222
+ /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(
19722
20223
  MessageComposer,
19723
20224
  {
19724
20225
  messageText,
@@ -19734,7 +20235,7 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
19734
20235
  )
19735
20236
  ] });
19736
20237
  }
19737
- var styles45 = import_react_native56.StyleSheet.create({
20238
+ var styles47 = import_react_native58.StyleSheet.create({
19738
20239
  container: {
19739
20240
  flex: 1
19740
20241
  },
@@ -19817,17 +20318,17 @@ var styles45 = import_react_native56.StyleSheet.create({
19817
20318
  });
19818
20319
 
19819
20320
  // src/RedactoPrivacyCenter/components/CaseDetails/CaseDetailsPage.tsx
19820
- var import_jsx_runtime58 = require("react/jsx-runtime");
20321
+ var import_jsx_runtime62 = require("react/jsx-runtime");
19821
20322
  function CaseDetailsPage() {
19822
20323
  var _a3, _b;
19823
- const { t } = (0, import_react_i18next26.useTranslation)();
20324
+ const { t } = (0, import_react_i18next28.useTranslation)();
19824
20325
  const { navigateTo, selectedCase, setSelectedCase, pendingCaseUuid } = useInternalNavigation();
19825
20326
  const { accessToken, refreshToken, email, organizationId, workspaceId, onError, updateTokens } = useAuth();
19826
20327
  const { colors } = useTheme();
19827
20328
  const { keyboardOffset } = usePrivacyCenterInsets();
19828
20329
  const requestTypeLabels = useRequestTypeLabels();
19829
- const [activeTab, setActiveTab] = (0, import_react39.useState)("request-details");
19830
- const authContext = (0, import_react39.useMemo)(() => ({
20330
+ const [activeTab, setActiveTab] = (0, import_react41.useState)("request-details");
20331
+ const authContext = (0, import_react41.useMemo)(() => ({
19831
20332
  accessToken,
19832
20333
  refreshToken,
19833
20334
  onError,
@@ -19840,7 +20341,7 @@ function CaseDetailsPage() {
19840
20341
  email != null ? email : void 0,
19841
20342
  authContext
19842
20343
  );
19843
- (0, import_react39.useEffect)(() => {
20344
+ (0, import_react41.useEffect)(() => {
19844
20345
  if (!cases) return;
19845
20346
  if (cases.length === 0) {
19846
20347
  navigateTo("form");
@@ -19854,33 +20355,33 @@ function CaseDetailsPage() {
19854
20355
  navigateTo("form");
19855
20356
  }
19856
20357
  }, [cases, targetUuid, setSelectedCase, navigateTo]);
19857
- (0, import_react39.useEffect)(() => {
20358
+ (0, import_react41.useEffect)(() => {
19858
20359
  if (!selectedCase && !targetUuid && !isLoading) {
19859
20360
  navigateTo("form");
19860
20361
  }
19861
20362
  }, [selectedCase, targetUuid, isLoading, navigateTo]);
19862
20363
  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" }) });
20364
+ 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
20365
  }
19865
20366
  const requestTypeLabel = requestTypeLabels[(_b = selectedCase.request_type) == null ? void 0 : _b.toUpperCase()] || selectedCase.request_type_display || formatCaseStatus(selectedCase.request_type || "");
19866
20367
  const tabs = [
19867
20368
  { id: "request-details", label: t("requestDetails") || "Request Details" },
19868
20369
  { id: "messages", label: t("messages") || "Messages" }
19869
20370
  ];
19870
- return /* @__PURE__ */ (0, import_jsx_runtime58.jsxs)(
20371
+ return /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(
19871
20372
  KeyboardAvoidingViewCompat,
19872
20373
  {
19873
- style: [styles46.container, { backgroundColor: colors.canvasSubtle }],
20374
+ style: [styles48.container, { backgroundColor: colors.canvasSubtle }],
19874
20375
  behavior: "padding",
19875
- keyboardVerticalOffset: import_react_native57.Platform.OS === "ios" ? keyboardOffset : 0,
20376
+ keyboardVerticalOffset: import_react_native59.Platform.OS === "ios" ? keyboardOffset : 0,
19876
20377
  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)(
20378
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_react_native59.View, { style: styles48.headerWrap, children: [
20379
+ /* @__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: [
20380
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_native59.View, { style: [styles48.accent, { backgroundColor: getCaseStatusColor(selectedCase.status, colors) }] }),
20381
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_react_native59.View, { style: styles48.heroBody, children: [
20382
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsxs)(import_react_native59.View, { style: styles48.heroTopRow, children: [
20383
+ /* @__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 }) }),
20384
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
19884
20385
  PCBadge,
19885
20386
  {
19886
20387
  status: getCaseStatusVariant(selectedCase.status),
@@ -19889,10 +20390,10 @@ function CaseDetailsPage() {
19889
20390
  }
19890
20391
  )
19891
20392
  ] }),
19892
- /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_react_native57.Text, { style: [styles46.caseId, { color: colors.text }], numberOfLines: 1, children: selectedCase.case_id })
20393
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_native59.Text, { style: [styles48.caseId, { color: colors.text }], numberOfLines: 1, children: selectedCase.case_id })
19893
20394
  ] })
19894
20395
  ] }) }),
19895
- /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
20396
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
19896
20397
  Segmented,
19897
20398
  {
19898
20399
  options: tabs.map((tab) => ({ value: tab.id, label: tab.label })),
@@ -19901,18 +20402,18 @@ function CaseDetailsPage() {
19901
20402
  }
19902
20403
  )
19903
20404
  ] }),
19904
- /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(import_react_native57.View, { style: styles46.tabContent, children: activeTab === "request-details" ? /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(
20405
+ /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_native59.View, { style: styles48.tabContent, children: activeTab === "request-details" ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(
19905
20406
  RequestDetailsTab,
19906
20407
  {
19907
20408
  selectedCase,
19908
20409
  requestTypeLabel
19909
20410
  }
19910
- ) : /* @__PURE__ */ (0, import_jsx_runtime58.jsx)(MessagesTab, { caseUuid: selectedCase.uuid, isCaseFinalized: isTerminalCaseStatus(selectedCase.status) }) })
20411
+ ) : /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(MessagesTab, { caseUuid: selectedCase.uuid, isCaseFinalized: isTerminalCaseStatus(selectedCase.status) }) })
19911
20412
  ]
19912
20413
  }
19913
20414
  );
19914
20415
  }
19915
- var styles46 = import_react_native57.StyleSheet.create({
20416
+ var styles48 = import_react_native59.StyleSheet.create({
19916
20417
  container: {
19917
20418
  flex: 1
19918
20419
  },
@@ -19977,36 +20478,36 @@ var styles46 = import_react_native57.StyleSheet.create({
19977
20478
  });
19978
20479
 
19979
20480
  // 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");
20481
+ var import_react44 = require("react");
20482
+ var import_react_native65 = require("react-native");
20483
+ var import_react_i18next30 = require("react-i18next");
19983
20484
 
19984
20485
  // src/RedactoPrivacyCenter/components/NotificationHub/NotificationRow.tsx
19985
- var import_react_native61 = require("react-native");
19986
- var import_react_i18next27 = require("react-i18next");
20486
+ var import_react_native63 = require("react-native");
20487
+ var import_react_i18next29 = require("react-i18next");
19987
20488
 
19988
20489
  // src/RedactoPrivacyCenter/components/NotificationHub/NotificationCTAButton.tsx
19989
- var import_react_native58 = require("react-native");
19990
- var import_jsx_runtime59 = require("react/jsx-runtime");
20490
+ var import_react_native60 = require("react-native");
20491
+ var import_jsx_runtime63 = require("react/jsx-runtime");
19991
20492
  var NotificationCTAButton = ({ cta, onPress }) => {
19992
20493
  const { colors } = useTheme();
19993
20494
  const tone = cta.style === "danger" ? colors.error : colors.primary;
19994
20495
  const isPrimary = cta.style === "primary" || cta.style === "danger";
19995
- return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)(
19996
- import_react_native58.TouchableOpacity,
20496
+ return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
20497
+ import_react_native60.TouchableOpacity,
19997
20498
  {
19998
20499
  onPress,
19999
20500
  activeOpacity: 0.7,
20000
20501
  style: [
20001
- styles47.button,
20502
+ styles49.button,
20002
20503
  isPrimary ? { backgroundColor: tone } : { backgroundColor: colors.primarySoft }
20003
20504
  ],
20004
20505
  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 })
20506
+ 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
20507
  }
20007
20508
  );
20008
20509
  };
20009
- var styles47 = import_react_native58.StyleSheet.create({
20510
+ var styles49 = import_react_native60.StyleSheet.create({
20010
20511
  button: {
20011
20512
  paddingHorizontal: spacing.lg,
20012
20513
  paddingVertical: spacing.sm,
@@ -20021,8 +20522,8 @@ var styles47 = import_react_native58.StyleSheet.create({
20021
20522
  });
20022
20523
 
20023
20524
  // src/RedactoPrivacyCenter/components/NotificationHub/NotificationIcon.tsx
20024
- var import_react_native59 = require("react-native");
20025
- var import_jsx_runtime60 = require("react/jsx-runtime");
20525
+ var import_react_native61 = require("react-native");
20526
+ var import_jsx_runtime64 = require("react/jsx-runtime");
20026
20527
  var CATEGORY_ICON = {
20027
20528
  guardian: "user-round",
20028
20529
  consent: "clock",
@@ -20035,18 +20536,18 @@ var NotificationIcon = ({ notificationType, size = 40 }) => {
20035
20536
  var _a3;
20036
20537
  const category = (_a3 = TYPE_TO_ICON_CATEGORY[notificationType]) != null ? _a3 : "system";
20037
20538
  const color = ICON_COLORS[category];
20038
- return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(
20039
- import_react_native59.View,
20539
+ return /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(
20540
+ import_react_native61.View,
20040
20541
  {
20041
20542
  style: [
20042
- styles48.wrap,
20543
+ styles50.wrap,
20043
20544
  { width: size, height: size, borderRadius: radii.md, backgroundColor: withAlpha(color, 0.13) }
20044
20545
  ],
20045
- children: /* @__PURE__ */ (0, import_jsx_runtime60.jsx)(Icon, { name: CATEGORY_ICON[category], size: Math.round(size * 0.5), color, strokeWidth: 2 })
20546
+ children: /* @__PURE__ */ (0, import_jsx_runtime64.jsx)(Icon, { name: CATEGORY_ICON[category], size: Math.round(size * 0.5), color, strokeWidth: 2 })
20046
20547
  }
20047
20548
  );
20048
20549
  };
20049
- var styles48 = import_react_native59.StyleSheet.create({
20550
+ var styles50 = import_react_native61.StyleSheet.create({
20050
20551
  wrap: {
20051
20552
  alignItems: "center",
20052
20553
  justifyContent: "center"
@@ -20054,15 +20555,15 @@ var styles48 = import_react_native59.StyleSheet.create({
20054
20555
  });
20055
20556
 
20056
20557
  // 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");
20558
+ var import_react42 = require("react");
20559
+ var import_react_native62 = require("react-native");
20560
+ var import_jsx_runtime65 = require("react/jsx-runtime");
20060
20561
  var ACTION_WIDTH = 80;
20061
20562
  var CLAIM_THRESHOLD = 8;
20062
20563
  var SwipeableRow = ({ actions, background, children }) => {
20063
20564
  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);
20565
+ const translateX = (0, import_react42.useRef)(new import_react_native62.Animated.Value(0)).current;
20566
+ const baseX = (0, import_react42.useRef)(0);
20066
20567
  const maxOpen = actions.length * ACTION_WIDTH;
20067
20568
  const toneColor2 = {
20068
20569
  primary: colors.primary,
@@ -20071,10 +20572,10 @@ var SwipeableRow = ({ actions, background, children }) => {
20071
20572
  };
20072
20573
  const settle = (to) => {
20073
20574
  baseX.current = to;
20074
- import_react_native60.Animated.spring(translateX, { toValue: to, useNativeDriver: true, bounciness: 0, speed: 18 }).start();
20575
+ import_react_native62.Animated.spring(translateX, { toValue: to, useNativeDriver: true, bounciness: 0, speed: 18 }).start();
20075
20576
  };
20076
- const panResponder = (0, import_react40.useMemo)(
20077
- () => import_react_native60.PanResponder.create({
20577
+ const panResponder = (0, import_react42.useMemo)(
20578
+ () => import_react_native62.PanResponder.create({
20078
20579
  onMoveShouldSetPanResponder: (_, g) => {
20079
20580
  const horizontal = Math.abs(g.dx) > Math.abs(g.dy) * 1.5;
20080
20581
  if (!horizontal) return false;
@@ -20095,37 +20596,37 @@ var SwipeableRow = ({ actions, background, children }) => {
20095
20596
  [maxOpen]
20096
20597
  );
20097
20598
  if (actions.length === 0) {
20098
- return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_jsx_runtime61.Fragment, { children });
20599
+ return /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_jsx_runtime65.Fragment, { children });
20099
20600
  }
20100
20601
  const runAction = (action) => {
20101
20602
  settle(0);
20102
20603
  action.onPress();
20103
20604
  };
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,
20605
+ return /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(import_react_native62.View, { style: styles51.root, children: [
20606
+ /* @__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)(
20607
+ import_react_native62.TouchableOpacity,
20107
20608
  {
20108
- style: [styles49.action, { width: ACTION_WIDTH, backgroundColor: toneColor2[action.tone] }],
20609
+ style: [styles51.action, { width: ACTION_WIDTH, backgroundColor: toneColor2[action.tone] }],
20109
20610
  onPress: () => runAction(action),
20110
20611
  activeOpacity: 0.85,
20111
20612
  accessibilityRole: "button",
20112
20613
  accessibilityLabel: action.label,
20113
20614
  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 })
20615
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(Icon, { name: action.icon, size: 20, color: colors.primaryText, strokeWidth: 2.2 }),
20616
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_react_native62.Text, { style: [styles51.actionLabel, { color: colors.primaryText }], numberOfLines: 1, children: action.label })
20116
20617
  ]
20117
20618
  },
20118
20619
  action.key
20119
20620
  )) }),
20120
- /* @__PURE__ */ (0, import_jsx_runtime61.jsx)(import_react_native60.Animated.View, { style: [{ backgroundColor: background, transform: [{ translateX }] }], ...panResponder.panHandlers, children })
20621
+ /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_react_native62.Animated.View, { style: [{ backgroundColor: background, transform: [{ translateX }] }], ...panResponder.panHandlers, children })
20121
20622
  ] });
20122
20623
  };
20123
- var styles49 = import_react_native60.StyleSheet.create({
20624
+ var styles51 = import_react_native62.StyleSheet.create({
20124
20625
  root: {
20125
20626
  position: "relative"
20126
20627
  },
20127
20628
  actionsLayer: {
20128
- ...import_react_native60.StyleSheet.absoluteFillObject,
20629
+ ...import_react_native62.StyleSheet.absoluteFillObject,
20129
20630
  flexDirection: "row",
20130
20631
  justifyContent: "flex-end"
20131
20632
  },
@@ -20158,10 +20659,10 @@ var formatTimeAgo = (dateString, t) => {
20158
20659
  };
20159
20660
 
20160
20661
  // src/RedactoPrivacyCenter/components/NotificationHub/NotificationRow.tsx
20161
- var import_jsx_runtime62 = require("react/jsx-runtime");
20662
+ var import_jsx_runtime66 = require("react/jsx-runtime");
20162
20663
  var NotificationRow = ({ notification, onPress, onMarkRead, onAcknowledge }) => {
20163
20664
  var _a3, _b;
20164
- const { t } = (0, import_react_i18next27.useTranslation)();
20665
+ const { t } = (0, import_react_i18next29.useTranslation)();
20165
20666
  const { colors } = useTheme();
20166
20667
  const isUnread = !notification.is_read;
20167
20668
  const statusLabel = notification.status_label_display || notification.status_label;
@@ -20188,35 +20689,35 @@ var NotificationRow = ({ notification, onPress, onMarkRead, onAcknowledge }) =>
20188
20689
  onPress: onAcknowledge
20189
20690
  });
20190
20691
  }
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,
20692
+ 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: [
20693
+ isUnread ? /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_native63.View, { style: [styles52.accent, { backgroundColor: accent }] }) : null,
20694
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(NotificationIcon, { notificationType: notification.notification_type, size: 36 }),
20695
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(import_react_native63.View, { style: styles52.content, children: [
20696
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(import_react_native63.View, { style: styles52.titleRow, children: [
20697
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
20698
+ import_react_native63.Text,
20198
20699
  {
20199
- style: [styles50.title, { color: colors.text, fontWeight: isUnread ? "700" : "600" }],
20700
+ style: [styles52.title, { color: colors.text, fontWeight: isUnread ? "700" : "600" }],
20200
20701
  numberOfLines: 2,
20201
20702
  children: notification.title
20202
20703
  }
20203
20704
  ),
20204
- isUnread ? /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_native61.View, { style: [styles50.unreadDot, { backgroundColor: colors.primary }] }) : null
20705
+ isUnread ? /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_native63.View, { style: [styles52.unreadDot, { backgroundColor: colors.primary }] }) : null
20205
20706
  ] }),
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" })
20707
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(import_react_native63.View, { style: styles52.metaRow, children: [
20708
+ statusLabel ? /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(import_jsx_runtime66.Fragment, { children: [
20709
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_native63.View, { style: [styles52.statusDot, { backgroundColor: accent }] }),
20710
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_native63.Text, { style: [styles52.metaText, { color: colors.textSecondary }], numberOfLines: 1, children: statusLabel }),
20711
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_native63.Text, { style: [styles52.metaDivider, { color: colors.textSecondary }], children: "\xB7" })
20211
20712
  ] }) : null,
20212
- /* @__PURE__ */ (0, import_jsx_runtime62.jsx)(import_react_native61.Text, { style: [styles50.metaText, { color: colors.textSecondary }], children: formatTimeAgo(notification.created_at, t) })
20713
+ /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(import_react_native63.Text, { style: [styles52.metaText, { color: colors.textSecondary }], children: formatTimeAgo(notification.created_at, t) })
20213
20714
  ] }),
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
20715
+ 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
20716
  ] }),
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 }) })
20717
+ /* @__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
20718
  ] }) });
20218
20719
  };
20219
- var styles50 = import_react_native61.StyleSheet.create({
20720
+ var styles52 = import_react_native63.StyleSheet.create({
20220
20721
  row: {
20221
20722
  flexDirection: "row",
20222
20723
  alignItems: "center",
@@ -20279,25 +20780,25 @@ var styles50 = import_react_native61.StyleSheet.create({
20279
20780
  });
20280
20781
 
20281
20782
  // src/RedactoPrivacyCenter/components/NotificationHub/useNotificationActions.ts
20282
- var import_react41 = require("react");
20283
- var import_react_native62 = require("react-native");
20783
+ var import_react43 = require("react");
20784
+ var import_react_native64 = require("react-native");
20284
20785
  var useNotificationActions = () => {
20285
20786
  const { navigateTo, setSelectedCase } = useInternalNavigation();
20286
20787
  const { accessToken, refreshToken, onError, updateTokens, organizationId, workspaceId, email } = useAuth();
20287
20788
  const { consentClient } = useBaseUrl();
20288
20789
  const { langParam } = useCurrentLanguage();
20289
- const authContext = (0, import_react41.useMemo)(
20790
+ const authContext = (0, import_react43.useMemo)(
20290
20791
  () => ({ accessToken, refreshToken, onError, updateTokens }),
20291
20792
  [accessToken, refreshToken, onError, updateTokens]
20292
20793
  );
20293
- const hasAcknowledgeCTA = (0, import_react41.useCallback)(
20794
+ const hasAcknowledgeCTA = (0, import_react43.useCallback)(
20294
20795
  (notification) => {
20295
20796
  var _a3, _b;
20296
20797
  return (_b = (_a3 = notification.ctas) == null ? void 0 : _a3.some((cta) => cta.action_type === "acknowledge")) != null ? _b : false;
20297
20798
  },
20298
20799
  []
20299
20800
  );
20300
- const handleMarkRead = (0, import_react41.useCallback)(
20801
+ const handleMarkRead = (0, import_react43.useCallback)(
20301
20802
  async (notificationUuid) => {
20302
20803
  if (!organizationId || !workspaceId) return false;
20303
20804
  const result = await markNotificationRead(organizationId, workspaceId, notificationUuid, authContext, consentClient);
@@ -20305,12 +20806,12 @@ var useNotificationActions = () => {
20305
20806
  },
20306
20807
  [organizationId, workspaceId, authContext, consentClient]
20307
20808
  );
20308
- const handleMarkAllRead = (0, import_react41.useCallback)(async () => {
20809
+ const handleMarkAllRead = (0, import_react43.useCallback)(async () => {
20309
20810
  if (!organizationId || !workspaceId) return false;
20310
20811
  const result = await markAllRead(organizationId, workspaceId, authContext, consentClient);
20311
20812
  return result !== null;
20312
20813
  }, [organizationId, workspaceId, authContext, consentClient]);
20313
- const handleAcknowledge = (0, import_react41.useCallback)(
20814
+ const handleAcknowledge = (0, import_react43.useCallback)(
20314
20815
  async (notificationUuid) => {
20315
20816
  if (!organizationId || !workspaceId) return false;
20316
20817
  const result = await acknowledgeNotification(organizationId, workspaceId, notificationUuid, authContext, consentClient);
@@ -20318,7 +20819,7 @@ var useNotificationActions = () => {
20318
20819
  },
20319
20820
  [organizationId, workspaceId, authContext, consentClient]
20320
20821
  );
20321
- const handleCTAClick = (0, import_react41.useCallback)(
20822
+ const handleCTAClick = (0, import_react43.useCallback)(
20322
20823
  async (notification, cta) => {
20323
20824
  var _a3;
20324
20825
  if (cta.action_type === "acknowledge") {
@@ -20352,7 +20853,7 @@ var useNotificationActions = () => {
20352
20853
  const url = cta.url;
20353
20854
  if (!/^https?:\/\//i.test(url)) return null;
20354
20855
  try {
20355
- await import_react_native62.Linking.openURL(url);
20856
+ await import_react_native64.Linking.openURL(url);
20356
20857
  return "opened";
20357
20858
  } catch {
20358
20859
  return null;
@@ -20375,7 +20876,7 @@ var useNotificationActions = () => {
20375
20876
  };
20376
20877
 
20377
20878
  // src/RedactoPrivacyCenter/components/NotificationHub/NotificationsScreen.tsx
20378
- var import_jsx_runtime63 = require("react/jsx-runtime");
20879
+ var import_jsx_runtime67 = require("react/jsx-runtime");
20379
20880
  var EMPTY_SUMMARY = { total: 0, unread: 0, action_needed: 0, acknowledged: 0 };
20380
20881
  var READ_FILTER_TO_PARAM = {
20381
20882
  all: void 0,
@@ -20383,7 +20884,7 @@ var READ_FILTER_TO_PARAM = {
20383
20884
  read: true
20384
20885
  };
20385
20886
  var NotificationsScreen = () => {
20386
- const { t } = (0, import_react_i18next28.useTranslation)();
20887
+ const { t } = (0, import_react_i18next30.useTranslation)();
20387
20888
  const { colors } = useTheme();
20388
20889
  const { langParam } = useCurrentLanguage();
20389
20890
  const { listBottom } = usePrivacyCenterInsets();
@@ -20400,15 +20901,15 @@ var NotificationsScreen = () => {
20400
20901
  handleAcknowledge,
20401
20902
  handleCTAClick
20402
20903
  } = 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);
20904
+ const [notifications, setNotifications] = (0, import_react44.useState)([]);
20905
+ const [summary, setSummary] = (0, import_react44.useState)(EMPTY_SUMMARY);
20906
+ const [activeTab, setActiveTab] = (0, import_react44.useState)("all");
20907
+ const [readFilter, setReadFilter] = (0, import_react44.useState)("all");
20908
+ const [isLoading, setIsLoading] = (0, import_react44.useState)(true);
20909
+ const [isRefreshing2, setIsRefreshing] = (0, import_react44.useState)(false);
20910
+ const [filterOpen, setFilterOpen] = (0, import_react44.useState)(false);
20410
20911
  const isFiltered = activeTab !== "all" || readFilter !== "all";
20411
- const loadNotifications = (0, import_react42.useCallback)(
20912
+ const loadNotifications = (0, import_react44.useCallback)(
20412
20913
  async (includeSummary = false, silent = false) => {
20413
20914
  if (!organizationId || !workspaceId) return;
20414
20915
  if (!silent) setIsLoading(true);
@@ -20438,18 +20939,21 @@ var NotificationsScreen = () => {
20438
20939
  },
20439
20940
  [organizationId, workspaceId, activeTab, readFilter, authContext, consentClient, langParam]
20440
20941
  );
20441
- (0, import_react42.useEffect)(() => {
20942
+ (0, import_react44.useEffect)(() => {
20442
20943
  loadNotifications(true);
20443
20944
  }, [loadNotifications]);
20444
- const loadRef = (0, import_react42.useRef)(loadNotifications);
20945
+ const loadRef = (0, import_react44.useRef)(loadNotifications);
20445
20946
  loadRef.current = loadNotifications;
20446
- (0, import_react42.useEffect)(() => {
20947
+ const authContextRef = (0, import_react44.useRef)(authContext);
20948
+ authContextRef.current = authContext;
20949
+ (0, import_react44.useEffect)(() => {
20447
20950
  const id = setInterval(() => {
20951
+ if (isRefreshBlocked(authContextRef.current)) return;
20448
20952
  loadRef.current(false, true);
20449
20953
  }, POLL_INTERVAL);
20450
20954
  return () => clearInterval(id);
20451
20955
  }, []);
20452
- const onNotificationClick = (0, import_react42.useCallback)(
20956
+ const onNotificationClick = (0, import_react44.useCallback)(
20453
20957
  async (notification) => {
20454
20958
  const shouldMarkRead = !notification.is_read;
20455
20959
  const shouldAutoAcknowledge = !notification.is_acknowledged && !hasAcknowledgeCTA(notification);
@@ -20470,7 +20974,7 @@ var NotificationsScreen = () => {
20470
20974
  },
20471
20975
  [hasAcknowledgeCTA, handleAcknowledge, handleMarkRead]
20472
20976
  );
20473
- const onRowPress = (0, import_react42.useCallback)(
20977
+ const onRowPress = (0, import_react44.useCallback)(
20474
20978
  async (notification) => {
20475
20979
  var _a3;
20476
20980
  const linkCta = (_a3 = notification.ctas) == null ? void 0 : _a3.find((cta) => cta.action_type === "link" && cta.url);
@@ -20488,7 +20992,7 @@ var NotificationsScreen = () => {
20488
20992
  },
20489
20993
  [handleCTAClick, onNotificationClick]
20490
20994
  );
20491
- const onMarkReadRow = (0, import_react42.useCallback)(
20995
+ const onMarkReadRow = (0, import_react44.useCallback)(
20492
20996
  async (notification) => {
20493
20997
  if (notification.is_read) return;
20494
20998
  const ok = await handleMarkRead(notification.uuid);
@@ -20498,7 +21002,7 @@ var NotificationsScreen = () => {
20498
21002
  },
20499
21003
  [handleMarkRead]
20500
21004
  );
20501
- const onAcknowledgeRow = (0, import_react42.useCallback)(
21005
+ const onAcknowledgeRow = (0, import_react44.useCallback)(
20502
21006
  async (notification) => {
20503
21007
  if (notification.is_acknowledged) return;
20504
21008
  const ok = await handleAcknowledge(notification.uuid);
@@ -20515,22 +21019,29 @@ var NotificationsScreen = () => {
20515
21019
  },
20516
21020
  [handleAcknowledge]
20517
21021
  );
20518
- const onRefresh = (0, import_react42.useCallback)(() => {
21022
+ const onMarkAllRead = (0, import_react44.useCallback)(async () => {
21023
+ const ok = await handleMarkAllRead();
21024
+ if (!ok) return;
21025
+ setNotifications((prev) => prev.map((item) => ({ ...item, is_read: true })));
21026
+ setSummary((prev) => ({ ...prev, unread: 0 }));
21027
+ if (readFilter !== "all") loadNotifications(true, true);
21028
+ }, [handleMarkAllRead, readFilter, loadNotifications]);
21029
+ const onRefresh = (0, import_react44.useCallback)(() => {
20519
21030
  setIsRefreshing(true);
20520
21031
  loadNotifications(true, true);
20521
21032
  }, [loadNotifications]);
20522
- const sections = (0, import_react42.useMemo)(
21033
+ const sections = (0, import_react44.useMemo)(
20523
21034
  () => groupByTime(notifications, (item) => item.created_at, classifyTime),
20524
21035
  [notifications, classifyTime]
20525
21036
  );
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,
21037
+ const header = /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_react_native65.View, { style: styles53.header, children: [
21038
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_react_native65.View, { style: styles53.titleRow, children: [
21039
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.Text, { style: [styles53.screenTitle, { color: colors.text }], children: t("notifications", { defaultValue: "Notifications" }) }),
21040
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
21041
+ import_react_native65.TouchableOpacity,
20531
21042
  {
20532
21043
  style: [
20533
- styles51.filterBtn,
21044
+ styles53.filterBtn,
20534
21045
  {
20535
21046
  backgroundColor: isFiltered ? colors.primarySoft : colors.surface,
20536
21047
  borderColor: isFiltered ? colors.primary : colors.border
@@ -20539,30 +21050,30 @@ var NotificationsScreen = () => {
20539
21050
  onPress: () => setFilterOpen(true),
20540
21051
  accessibilityRole: "button",
20541
21052
  accessibilityLabel: t("filter") || "Filter",
20542
- children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Icon, { name: "sliders-horizontal", size: 18, color: isFiltered ? colors.primary : colors.text })
21053
+ children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Icon, { name: "sliders-horizontal", size: 18, color: isFiltered ? colors.primary : colors.text })
20543
21054
  }
20544
21055
  )
20545
21056
  ] }),
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" })
21057
+ summary.unread > 0 ? /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_react_native65.TouchableOpacity, { style: styles53.markAllBtn, onPress: onMarkAllRead, activeOpacity: 0.7, accessibilityRole: "button", children: [
21058
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Icon, { name: "check-check", size: 15, color: colors.primary, strokeWidth: 2.2 }),
21059
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.Text, { style: [styles53.markAllLabel, { color: colors.primary }], children: t("markAllAsRead") || "Mark all as read" })
20549
21060
  ] }) : null
20550
21061
  ] });
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,
21062
+ return /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_jsx_runtime67.Fragment, { children: [
21063
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
21064
+ import_react_native65.FlatList,
20554
21065
  {
20555
21066
  data: sections,
20556
21067
  keyExtractor: (section2) => section2.key,
20557
- style: [styles51.list, { backgroundColor: colors.canvasSubtle }],
20558
- contentContainerStyle: [styles51.listContent, { flexGrow: 1, paddingBottom: listBottom }],
21068
+ style: [styles53.list, { backgroundColor: colors.canvasSubtle }],
21069
+ contentContainerStyle: [styles53.listContent, { flexGrow: 1, paddingBottom: listBottom }],
20559
21070
  ListHeaderComponent: header,
20560
21071
  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)(
21072
+ refreshControl: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.RefreshControl, { refreshing: isRefreshing2, onRefresh, tintColor: colors.primary, colors: [colors.primary] }),
21073
+ renderItem: ({ item: section2 }) => /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_react_native65.View, { style: styles53.section, children: [
21074
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.Text, { style: [styles53.sectionTitle, { color: colors.textSecondary }], children: section2.title }),
21075
+ /* @__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: [
21076
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
20566
21077
  NotificationRow,
20567
21078
  {
20568
21079
  notification: item,
@@ -20571,19 +21082,19 @@ var NotificationsScreen = () => {
20571
21082
  onAcknowledge: () => onAcknowledgeRow(item)
20572
21083
  }
20573
21084
  ),
20574
- index < section2.data.length - 1 ? /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_react_native63.View, { style: [styles51.separator, { backgroundColor: colors.hairline }] }) : null
21085
+ index < section2.data.length - 1 ? /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.View, { style: [styles53.separator, { backgroundColor: colors.hairline }] }) : null
20575
21086
  ] }, item.uuid)) }) })
20576
21087
  ] }),
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 })
21088
+ 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: [
21089
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_react_native65.View, { style: styles53.skeletonRow, children: [
21090
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Skeleton, { width: 36, height: 36, radius: radii.md }),
21091
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsxs)(import_react_native65.View, { style: styles53.skeletonLines, children: [
21092
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Skeleton, { width: "70%", height: 13 }),
21093
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Skeleton, { width: "40%", height: 10 })
20583
21094
  ] })
20584
21095
  ] }),
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)(
21096
+ i < 3 ? /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.View, { style: [styles53.separator, { backgroundColor: colors.hairline }] }) : null
21097
+ ] }, i)) }) }) : /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.View, { style: styles53.emptyWrap, children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
20587
21098
  PCEmpty,
20588
21099
  {
20589
21100
  iconName: "circle-check",
@@ -20592,14 +21103,14 @@ var NotificationsScreen = () => {
20592
21103
  }
20593
21104
  ) }),
20594
21105
  ListFooterComponentStyle: { marginTop: "auto" },
20595
- ListFooterComponent: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(Footer, {})
21106
+ ListFooterComponent: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(Footer, {})
20596
21107
  }
20597
21108
  ),
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) => {
21109
+ /* @__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: [
21110
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.Text, { style: [styles53.filterGroupLabel, { color: colors.textSecondary }], children: t("category", { defaultValue: "Category" }) }),
21111
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.View, { style: styles53.chipWrap, children: filterTabs.map((tab) => {
20601
21112
  const selected = tab.key === activeTab;
20602
- return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
21113
+ return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
20603
21114
  FilterChip,
20604
21115
  {
20605
21116
  label: tab.label,
@@ -20609,12 +21120,12 @@ var NotificationsScreen = () => {
20609
21120
  tab.key
20610
21121
  );
20611
21122
  }) }),
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: [
21123
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.Text, { style: [styles53.filterGroupLabel, { color: colors.textSecondary, marginTop: spacing.lg }], children: t("readStatus", { defaultValue: "Status" }) }),
21124
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.View, { style: styles53.chipWrap, children: [
20614
21125
  { key: "all", label: t("all") || "All" },
20615
21126
  { key: "unread", label: t("unread") || "Unread" },
20616
21127
  { key: "read", label: t("read", { defaultValue: "Read" }) }
20617
- ].map((opt) => /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
21128
+ ].map((opt) => /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
20618
21129
  FilterChip,
20619
21130
  {
20620
21131
  label: opt.label,
@@ -20623,13 +21134,13 @@ var NotificationsScreen = () => {
20623
21134
  },
20624
21135
  opt.key
20625
21136
  )) }),
20626
- /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
20627
- import_react_native63.TouchableOpacity,
21137
+ /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
21138
+ import_react_native65.TouchableOpacity,
20628
21139
  {
20629
- style: [styles51.applyBtn, { backgroundColor: colors.primary }],
21140
+ style: [styles53.applyBtn, { backgroundColor: colors.primary }],
20630
21141
  onPress: () => setFilterOpen(false),
20631
21142
  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" }) })
21143
+ children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.Text, { style: [styles53.applyLabel, { color: colors.primaryText }], children: t("done", { defaultValue: "Done" }) })
20633
21144
  }
20634
21145
  )
20635
21146
  ] }) })
@@ -20637,25 +21148,25 @@ var NotificationsScreen = () => {
20637
21148
  };
20638
21149
  var FilterChip = ({ label, selected, onPress }) => {
20639
21150
  const { colors } = useTheme();
20640
- return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(
20641
- import_react_native63.TouchableOpacity,
21151
+ return /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(
21152
+ import_react_native65.TouchableOpacity,
20642
21153
  {
20643
21154
  onPress,
20644
21155
  activeOpacity: 0.7,
20645
21156
  accessibilityRole: "button",
20646
21157
  accessibilityState: { selected },
20647
21158
  style: [
20648
- styles51.chip,
21159
+ styles53.chip,
20649
21160
  {
20650
21161
  backgroundColor: selected ? colors.primary : colors.surfaceAlt,
20651
21162
  borderColor: selected ? colors.primary : colors.border
20652
21163
  }
20653
21164
  ],
20654
- children: /* @__PURE__ */ (0, import_jsx_runtime63.jsx)(import_react_native63.Text, { style: [styles51.chipLabel, { color: selected ? colors.primaryText : colors.text }], children: label })
21165
+ children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(import_react_native65.Text, { style: [styles53.chipLabel, { color: selected ? colors.primaryText : colors.text }], children: label })
20655
21166
  }
20656
21167
  );
20657
21168
  };
20658
- var styles51 = import_react_native63.StyleSheet.create({
21169
+ var styles53 = import_react_native65.StyleSheet.create({
20659
21170
  list: {
20660
21171
  flex: 1
20661
21172
  },
@@ -20689,7 +21200,7 @@ var styles51 = import_react_native63.StyleSheet.create({
20689
21200
  filterBtn: {
20690
21201
  width: 40,
20691
21202
  height: 40,
20692
- borderWidth: import_react_native63.StyleSheet.hairlineWidth,
21203
+ borderWidth: import_react_native65.StyleSheet.hairlineWidth,
20693
21204
  borderRadius: radii.md,
20694
21205
  justifyContent: "center",
20695
21206
  alignItems: "center"
@@ -20710,7 +21221,7 @@ var styles51 = import_react_native63.StyleSheet.create({
20710
21221
  overflow: "hidden"
20711
21222
  },
20712
21223
  separator: {
20713
- height: import_react_native63.StyleSheet.hairlineWidth,
21224
+ height: import_react_native65.StyleSheet.hairlineWidth,
20714
21225
  marginLeft: spacing.lg + 36 + spacing.md
20715
21226
  },
20716
21227
  emptyWrap: {
@@ -20748,7 +21259,7 @@ var styles51 = import_react_native63.StyleSheet.create({
20748
21259
  justifyContent: "center",
20749
21260
  paddingHorizontal: spacing.lg,
20750
21261
  borderRadius: radii.pill,
20751
- borderWidth: import_react_native63.StyleSheet.hairlineWidth
21262
+ borderWidth: import_react_native65.StyleSheet.hairlineWidth
20752
21263
  },
20753
21264
  chipLabel: {
20754
21265
  ...typography.label
@@ -20767,7 +21278,7 @@ var styles51 = import_react_native63.StyleSheet.create({
20767
21278
  });
20768
21279
 
20769
21280
  // src/RedactoPrivacyCenter/RedactoPrivacyCenter.tsx
20770
- var import_jsx_runtime64 = require("react/jsx-runtime");
21281
+ var import_jsx_runtime68 = require("react/jsx-runtime");
20771
21282
  var privacyCenterQueryClient = new import_react_query2.QueryClient();
20772
21283
  function PrivacyCenterContent({ onBack }) {
20773
21284
  const { currentPage } = useInternalNavigation();
@@ -20777,24 +21288,24 @@ function PrivacyCenterContent({ onBack }) {
20777
21288
  const chromeMode = getPageChromeMode(currentPage);
20778
21289
  const canvasIsLight = isLightColor(colors.canvasSubtle);
20779
21290
  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") {
21291
+ (0, import_react45.useEffect)(() => {
21292
+ import_react_native66.StatusBar.setBarStyle(barStyle, true);
21293
+ if (import_react_native66.Platform.OS === "android") {
20783
21294
  setNavBarIconStyle(canvasIsLight ? "dark" : "light");
20784
21295
  }
20785
21296
  }, [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, {})
21297
+ return /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(import_react_native66.View, { style: [styles54.container, { backgroundColor: colors.canvasSubtle }], children: [
21298
+ /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_react_native66.StatusBar, { barStyle, translucent: true }),
21299
+ /* @__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: [
21300
+ /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(SlimTopBar, { mode: chromeMode, onBack }),
21301
+ /* @__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: [
21302
+ currentPage === "home" && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(HomeHub, {}),
21303
+ currentPage === "consent-manager" && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(ConsentManager, {}),
21304
+ currentPage === "form" && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(FormPage, {}),
21305
+ currentPage === "activity" && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(ActivitiesList, {}),
21306
+ currentPage === "receipts" && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(ReceiptsList, {}),
21307
+ currentPage === "case-details" && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(CaseDetailsPage, {}),
21308
+ currentPage === "notifications" && /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(NotificationsScreen, {})
20798
21309
  ] }) })
20799
21310
  ] }) })
20800
21311
  ] });
@@ -20819,7 +21330,7 @@ function RedactoPrivacyCenter({
20819
21330
  initialCaseUuid,
20820
21331
  onBack
20821
21332
  }) {
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)(
21333
+ 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
21334
  AuthProvider,
20824
21335
  {
20825
21336
  accessToken: accessToken != null ? accessToken : "",
@@ -20831,11 +21342,11 @@ function RedactoPrivacyCenter({
20831
21342
  workspaceUuid,
20832
21343
  slug,
20833
21344
  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 }) }) }) })
21345
+ 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
21346
  }
20836
21347
  ) }) }) }) }) }) });
20837
21348
  }
20838
- var styles52 = import_react_native64.StyleSheet.create({
21349
+ var styles54 = import_react_native66.StyleSheet.create({
20839
21350
  container: {
20840
21351
  flex: 1
20841
21352
  },
@@ -20849,74 +21360,74 @@ var styles52 = import_react_native64.StyleSheet.create({
20849
21360
  });
20850
21361
 
20851
21362
  // src/RedactoPrivacyCenter/components/SideMenu.tsx
20852
- var import_react_native65 = require("react-native");
20853
- var import_react_i18next30 = require("react-i18next");
21363
+ var import_react_native67 = require("react-native");
21364
+ var import_react_i18next32 = require("react-i18next");
20854
21365
  var import_react_native_svg4 = __toESM(require("react-native-svg"));
20855
- var import_jsx_runtime65 = require("react/jsx-runtime");
21366
+ var import_jsx_runtime69 = require("react/jsx-runtime");
20856
21367
  var MENU_ITEMS = [
20857
21368
  { page: "consent-manager", labelKey: "consentManager", fallback: "Consent Manager", icon: "shield-check" },
20858
21369
  { page: "form", labelKey: "grievanceRequests", fallback: "Privacy Requests", icon: "message-circle-warning" },
20859
21370
  { page: "activity", labelKey: "activity", fallback: "Activity", icon: "activity" }
20860
21371
  ];
20861
21372
  function SideMenu({ onBack } = {}) {
20862
- const { t } = (0, import_react_i18next30.useTranslation)();
21373
+ const { t } = (0, import_react_i18next32.useTranslation)();
20863
21374
  const { currentPage, navigateTo } = useInternalNavigation();
20864
21375
  const { organizationName, email } = useAuth();
20865
21376
  const { colors } = useTheme();
20866
21377
  const orgInitial = organizationName ? organizationName.charAt(0).toUpperCase() : "R";
20867
21378
  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
21379
+ return /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(import_react_native67.View, { style: [styles55.container, { backgroundColor: colors.surface }], children: [
21380
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(import_react_native67.View, { style: styles55.orgSection, children: [
21381
+ /* @__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 }) }),
21382
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(import_react_native67.View, { style: styles55.orgInfo, children: [
21383
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.Text, { style: [styles55.orgName, { color: colors.text }], numberOfLines: 1, children: displayName }),
21384
+ email ? /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.Text, { style: [styles55.orgEmail, { color: colors.textSecondary }], numberOfLines: 1, children: email }) : null
20874
21385
  ] })
20875
21386
  ] }),
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) => {
21387
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.View, { style: [styles55.divider, { backgroundColor: colors.border }] }),
21388
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.View, { style: styles55.menuSection, children: MENU_ITEMS.map((item) => {
20878
21389
  const isActive = currentPage === item.page || item.page === "form" && currentPage === "case-details";
20879
- return /* @__PURE__ */ (0, import_jsx_runtime65.jsxs)(
20880
- import_react_native65.TouchableOpacity,
21390
+ return /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(
21391
+ import_react_native67.TouchableOpacity,
20881
21392
  {
20882
21393
  style: [
20883
- styles53.menuItem,
20884
- isActive && [styles53.menuItemActive, { backgroundColor: `${colors.primary}14` }]
21394
+ styles55.menuItem,
21395
+ isActive && [styles55.menuItemActive, { backgroundColor: `${colors.primary}14` }]
20885
21396
  ],
20886
21397
  onPress: () => navigateTo(item.page),
20887
21398
  activeOpacity: 0.7,
20888
21399
  accessibilityRole: "button",
20889
21400
  accessibilityState: { selected: isActive },
20890
21401
  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,
21402
+ /* @__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 }) }),
21403
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
21404
+ import_react_native67.Text,
20894
21405
  {
20895
21406
  style: [
20896
- styles53.menuLabel,
21407
+ styles55.menuLabel,
20897
21408
  { color: isActive ? colors.primary : colors.text },
20898
- isActive && styles53.menuLabelActive
21409
+ isActive && styles55.menuLabelActive
20899
21410
  ],
20900
21411
  children: t(item.labelKey) || item.fallback
20901
21412
  }
20902
21413
  ),
20903
- isActive ? /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(import_react_native65.View, { style: [styles53.activeIndicator, { backgroundColor: colors.primary }] }) : null
21414
+ isActive ? /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.View, { style: [styles55.activeIndicator, { backgroundColor: colors.primary }] }) : null
20904
21415
  ]
20905
21416
  },
20906
21417
  item.page
20907
21418
  );
20908
21419
  }) }),
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,
21420
+ onBack ? /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(import_jsx_runtime69.Fragment, { children: [
21421
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.View, { style: { flex: 1 } }),
21422
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(import_react_native67.View, { style: [styles55.divider, { backgroundColor: colors.border }] }),
21423
+ /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(
21424
+ import_react_native67.TouchableOpacity,
20914
21425
  {
20915
- style: styles53.backBtn,
21426
+ style: styles55.backBtn,
20916
21427
  onPress: () => navigateBack(onBack),
20917
21428
  activeOpacity: 0.7,
20918
21429
  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)(
21430
+ /* @__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
21431
  import_react_native_svg4.Path,
20921
21432
  {
20922
21433
  d: "M19 12H5m0 0l7 7m-7-7l7-7",
@@ -20925,7 +21436,7 @@ function SideMenu({ onBack } = {}) {
20925
21436
  strokeLinecap: "round",
20926
21437
  strokeLinejoin: "round"
20927
21438
  }
20928
- ) : /* @__PURE__ */ (0, import_jsx_runtime65.jsx)(
21439
+ ) : /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
20929
21440
  import_react_native_svg4.Path,
20930
21441
  {
20931
21442
  d: "M9 21H5a2 2 0 01-2-2V5a2 2 0 012-2h4 M16 17l5-5-5-5 M21 12H9",
@@ -20935,14 +21446,14 @@ function SideMenu({ onBack } = {}) {
20935
21446
  strokeLinejoin: "round"
20936
21447
  }
20937
21448
  ) }),
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" })
21449
+ /* @__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
21450
  ]
20940
21451
  }
20941
21452
  )
20942
21453
  ] }) : null
20943
21454
  ] });
20944
21455
  }
20945
- var styles53 = import_react_native65.StyleSheet.create({
21456
+ var styles55 = import_react_native67.StyleSheet.create({
20946
21457
  container: {
20947
21458
  flex: 1,
20948
21459
  paddingTop: 12
@@ -21028,42 +21539,68 @@ var styles53 = import_react_native65.StyleSheet.create({
21028
21539
  });
21029
21540
 
21030
21541
  // 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");
21542
+ var import_react46 = require("react");
21543
+ var import_react_native69 = require("react-native");
21544
+ var import_react_i18next34 = require("react-i18next");
21034
21545
  var import_react_native_svg6 = __toESM(require("react-native-svg"));
21035
21546
 
21036
21547
  // src/RedactoPrivacyCenter/components/UserOrgMenu.tsx
21037
- var import_react_native66 = require("react-native");
21038
- var import_react_i18next31 = require("react-i18next");
21548
+ var import_react_native68 = require("react-native");
21549
+ var import_react_i18next33 = require("react-i18next");
21039
21550
  var import_react_native_svg5 = __toESM(require("react-native-svg"));
21040
- var import_jsx_runtime66 = require("react/jsx-runtime");
21551
+ var import_jsx_runtime70 = require("react/jsx-runtime");
21041
21552
  var UserOrgMenu = ({ visible, onClose, onBack }) => {
21042
- const { t } = (0, import_react_i18next31.useTranslation)();
21553
+ const { t } = (0, import_react_i18next33.useTranslation)();
21043
21554
  const { organizationName, email } = useAuth();
21044
21555
  const { colors, branding } = useTheme();
21556
+ const { switchProfile } = useProfileSwitch();
21045
21557
  const brandName = (branding == null ? void 0 : branding.brand_name) || organizationName || t("privacyCenter") || "Privacy Center";
21046
21558
  const handleAction = () => {
21047
21559
  onClose();
21048
21560
  navigateBack(onBack);
21049
21561
  };
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
21562
+ return /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(BottomSheet, { visible, onClose, title: t("account") || "Account", children: [
21563
+ /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(import_react_native68.View, { style: styles56.identity, children: [
21564
+ (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 }),
21565
+ /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(import_react_native68.View, { style: styles56.identityText, children: [
21566
+ /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_react_native68.Text, { style: [styles56.orgName, { color: colors.text }], numberOfLines: 2, children: brandName }),
21567
+ email ? /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_react_native68.Text, { style: [styles56.email, { color: colors.textSecondary }], numberOfLines: 1, children: email }) : null
21056
21568
  ] })
21057
21569
  ] }),
21058
- onBack ? /* @__PURE__ */ (0, import_jsx_runtime66.jsxs)(
21059
- import_react_native66.TouchableOpacity,
21570
+ switchProfile ? /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(
21571
+ import_react_native68.TouchableOpacity,
21572
+ {
21573
+ style: [styles56.actionRow, { backgroundColor: withAlpha(colors.primary, 0.1) }],
21574
+ onPress: () => {
21575
+ onClose();
21576
+ switchProfile();
21577
+ },
21578
+ activeOpacity: 0.7,
21579
+ accessibilityRole: "button",
21580
+ children: [
21581
+ /* @__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)(
21582
+ import_react_native_svg5.Path,
21583
+ {
21584
+ d: "M16 3h5v5 M21 3l-7 7 M8 21H3v-5 M3 21l7-7",
21585
+ stroke: colors.primary,
21586
+ strokeWidth: 2,
21587
+ strokeLinecap: "round",
21588
+ strokeLinejoin: "round"
21589
+ }
21590
+ ) }),
21591
+ /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(import_react_native68.Text, { style: [styles56.actionLabel, { color: colors.primary }], children: t("switchProfile") })
21592
+ ]
21593
+ }
21594
+ ) : null,
21595
+ onBack ? /* @__PURE__ */ (0, import_jsx_runtime70.jsxs)(
21596
+ import_react_native68.TouchableOpacity,
21060
21597
  {
21061
- style: [styles54.actionRow, { backgroundColor: withAlpha(onBack === "signout" ? colors.error : colors.primary, 0.1) }],
21598
+ style: [styles56.actionRow, { backgroundColor: withAlpha(onBack === "signout" ? colors.error : colors.primary, 0.1) }],
21062
21599
  onPress: handleAction,
21063
21600
  activeOpacity: 0.7,
21064
21601
  accessibilityRole: "button",
21065
21602
  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)(
21603
+ /* @__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
21604
  import_react_native_svg5.Path,
21068
21605
  {
21069
21606
  d: "M9 21H5a2 2 0 01-2-2V5a2 2 0 012-2h4 M16 17l5-5-5-5 M21 12H9",
@@ -21072,7 +21609,7 @@ var UserOrgMenu = ({ visible, onClose, onBack }) => {
21072
21609
  strokeLinecap: "round",
21073
21610
  strokeLinejoin: "round"
21074
21611
  }
21075
- ) : /* @__PURE__ */ (0, import_jsx_runtime66.jsx)(
21612
+ ) : /* @__PURE__ */ (0, import_jsx_runtime70.jsx)(
21076
21613
  import_react_native_svg5.Path,
21077
21614
  {
21078
21615
  d: "M19 12H5m0 0l7 7m-7-7l7-7",
@@ -21082,13 +21619,13 @@ var UserOrgMenu = ({ visible, onClose, onBack }) => {
21082
21619
  strokeLinejoin: "round"
21083
21620
  }
21084
21621
  ) }),
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" })
21622
+ /* @__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
21623
  ]
21087
21624
  }
21088
21625
  ) : null
21089
21626
  ] });
21090
21627
  };
21091
- var styles54 = import_react_native66.StyleSheet.create({
21628
+ var styles56 = import_react_native68.StyleSheet.create({
21092
21629
  identity: {
21093
21630
  flexDirection: "row",
21094
21631
  alignItems: "center",
@@ -21129,33 +21666,33 @@ var styles54 = import_react_native66.StyleSheet.create({
21129
21666
  });
21130
21667
 
21131
21668
  // src/RedactoPrivacyCenter/components/Navbar.tsx
21132
- var import_jsx_runtime67 = require("react/jsx-runtime");
21669
+ var import_jsx_runtime71 = require("react/jsx-runtime");
21133
21670
  function Navbar({ mode = "primary", onBack }) {
21134
- const { t } = (0, import_react_i18next32.useTranslation)();
21671
+ const { t } = (0, import_react_i18next34.useTranslation)();
21135
21672
  const { currentPage, navigateTo } = useInternalNavigation();
21136
21673
  const { organizationName, email } = useAuth();
21137
21674
  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);
21675
+ const [locale, setLocale] = (0, import_react46.useState)(i18n_default.language || "en");
21676
+ const [menuOpen, setMenuOpen] = (0, import_react46.useState)(false);
21140
21677
  const unreadCount = useUnreadCount();
21141
21678
  const { status: pageStatus } = usePageStatus();
21142
21679
  const pageChrome = PAGE_CHROME_BY_PAGE[currentPage] || PAGE_CHROME_BY_PAGE["consent-manager"];
21143
21680
  const isDetail = mode === "detail";
21144
- (0, import_react44.useEffect)(() => {
21681
+ (0, import_react46.useEffect)(() => {
21145
21682
  const handleLanguageChanged = () => setLocale(i18n_default.language);
21146
21683
  i18n_default.on("languageChanged", handleLanguageChanged);
21147
21684
  return () => {
21148
21685
  i18n_default.off("languageChanged", handleLanguageChanged);
21149
21686
  };
21150
21687
  }, []);
21151
- const handleLanguageChange = (0, import_react44.useCallback)((value) => {
21688
+ const handleLanguageChange = (0, import_react46.useCallback)((value) => {
21152
21689
  i18n_default.changeLanguage(value);
21153
21690
  }, []);
21154
21691
  const brandLabel = (branding == null ? void 0 : branding.brand_name) || organizationName || t("privacyCenter") || "Privacy Center";
21155
21692
  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 })
21693
+ const brandLockup = /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_react_native69.View, { style: styles57.brandRow, children: [
21694
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(PCAvatar, { name: organizationName || brandLabel, imageUrl: branding == null ? void 0 : branding.icon_url, size: 28 }),
21695
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_react_native69.Text, { style: [styles57.brandText, { color: colors.text }], numberOfLines: 1, children: brandLabel })
21159
21696
  ] });
21160
21697
  const handleDetailBack = () => {
21161
21698
  if (currentPage === "case-details") {
@@ -21167,26 +21704,26 @@ function Navbar({ mode = "primary", onBack }) {
21167
21704
  }
21168
21705
  };
21169
21706
  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,
21707
+ return /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_jsx_runtime71.Fragment, { children: [
21708
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
21709
+ import_react_native69.View,
21173
21710
  {
21174
21711
  style: [
21175
- styles55.container,
21176
- styles55.detailContainer,
21712
+ styles57.container,
21713
+ styles57.detailContainer,
21177
21714
  { backgroundColor: colors.background, borderBottomColor: colors.border, paddingTop: TOP_INSET + spacing.xs }
21178
21715
  ],
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,
21716
+ children: /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_react_native69.View, { style: styles57.detailRow, children: [
21717
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
21718
+ import_react_native69.TouchableOpacity,
21182
21719
  {
21183
- style: styles55.backButton,
21720
+ style: styles57.backButton,
21184
21721
  onPress: handleDetailBack,
21185
21722
  activeOpacity: 0.7,
21186
21723
  hitSlop: DEFAULT_HIT_SLOP,
21187
21724
  accessibilityRole: "button",
21188
21725
  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)(
21726
+ 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
21727
  import_react_native_svg6.Path,
21191
21728
  {
21192
21729
  d: "M19 12H5m0 0l7 7m-7-7l7-7",
@@ -21198,36 +21735,36 @@ function Navbar({ mode = "primary", onBack }) {
21198
21735
  ) })
21199
21736
  }
21200
21737
  ),
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
21738
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_react_native69.View, { style: styles57.detailTitleWrap, children: [
21739
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_react_native69.Text, { style: [styles57.detailTitle, { color: colors.text }], numberOfLines: 1, children: t(pageChrome.titleKey) }),
21740
+ pageStatus ? /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(PCBadge, { status: pageStatus.tone, label: pageStatus.label }) : null
21204
21741
  ] })
21205
21742
  ] })
21206
21743
  }
21207
21744
  ),
21208
- /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(UserOrgMenu, { visible: menuOpen, onClose: () => setMenuOpen(false), onBack })
21745
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(UserOrgMenu, { visible: menuOpen, onClose: () => setMenuOpen(false), onBack })
21209
21746
  ] });
21210
21747
  }
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,
21748
+ return /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_jsx_runtime71.Fragment, { children: [
21749
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(
21750
+ import_react_native69.View,
21214
21751
  {
21215
21752
  style: [
21216
- styles55.container,
21753
+ styles57.container,
21217
21754
  { backgroundColor: colors.background, borderBottomColor: colors.border, paddingTop: TOP_INSET + spacing.xs }
21218
21755
  ],
21219
21756
  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,
21757
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_react_native69.View, { style: styles57.appBar, children: [
21758
+ onBack ? /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
21759
+ import_react_native69.TouchableOpacity,
21223
21760
  {
21224
- style: styles55.backButton,
21761
+ style: styles57.backButton,
21225
21762
  onPress: () => navigateBack(onBack),
21226
21763
  activeOpacity: 0.7,
21227
21764
  hitSlop: DEFAULT_HIT_SLOP,
21228
21765
  accessibilityRole: "button",
21229
21766
  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)(
21767
+ 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
21768
  import_react_native_svg6.Path,
21232
21769
  {
21233
21770
  d: "M19 12H5m0 0l7 7m-7-7l7-7",
@@ -21239,39 +21776,39 @@ function Navbar({ mode = "primary", onBack }) {
21239
21776
  ) })
21240
21777
  }
21241
21778
  ) : 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,
21779
+ /* @__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 }),
21780
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsxs)(import_react_native69.View, { style: styles57.actions, children: [
21781
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(NotificationBell, { count: unreadCount, onPress: () => navigateTo("notifications") }),
21782
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(PCSelect, { value: locale, options: languageOptions, onChange: handleLanguageChange, placeholder: t("language"), compact: true }),
21783
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
21784
+ import_react_native69.TouchableOpacity,
21248
21785
  {
21249
- style: styles55.avatarButton,
21786
+ style: styles57.avatarButton,
21250
21787
  onPress: () => setMenuOpen(true),
21251
21788
  activeOpacity: 0.7,
21252
21789
  hitSlop: DEFAULT_HIT_SLOP,
21253
21790
  accessibilityRole: "button",
21254
21791
  accessibilityLabel: accountLabel,
21255
- children: /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(PCAvatar, { name: organizationName || accountLabel, imageUrl: branding == null ? void 0 : branding.icon_url, size: 28 })
21792
+ children: /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(PCAvatar, { name: organizationName || accountLabel, imageUrl: branding == null ? void 0 : branding.icon_url, size: 28 })
21256
21793
  }
21257
21794
  )
21258
21795
  ] })
21259
21796
  ] }),
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
21797
+ /* @__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: [
21798
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(import_react_native69.Text, { style: [styles57.pageTitle, { color: colors.text }], numberOfLines: 1, children: t(pageChrome.titleKey) }),
21799
+ pageStatus ? /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(PCBadge, { status: pageStatus.tone, label: pageStatus.label }) : null
21263
21800
  ] }) })
21264
21801
  ]
21265
21802
  }
21266
21803
  ),
21267
- /* @__PURE__ */ (0, import_jsx_runtime67.jsx)(UserOrgMenu, { visible: menuOpen, onClose: () => setMenuOpen(false), onBack })
21804
+ /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(UserOrgMenu, { visible: menuOpen, onClose: () => setMenuOpen(false), onBack })
21268
21805
  ] });
21269
21806
  }
21270
- var styles55 = import_react_native67.StyleSheet.create({
21807
+ var styles57 = import_react_native69.StyleSheet.create({
21271
21808
  container: {
21272
21809
  paddingHorizontal: spacing.lg,
21273
21810
  paddingBottom: spacing.md,
21274
- borderBottomWidth: import_react_native67.StyleSheet.hairlineWidth
21811
+ borderBottomWidth: import_react_native69.StyleSheet.hairlineWidth
21275
21812
  },
21276
21813
  detailContainer: {
21277
21814
  paddingBottom: spacing.sm
@@ -21351,10 +21888,10 @@ var styles55 = import_react_native67.StyleSheet.create({
21351
21888
  });
21352
21889
 
21353
21890
  // 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");
21891
+ var import_react47 = require("react");
21892
+ var import_react_native70 = require("react-native");
21893
+ var import_react_i18next35 = require("react-i18next");
21894
+ var import_jsx_runtime72 = require("react/jsx-runtime");
21358
21895
  var TAB_ITEMS = [
21359
21896
  { page: "consent-manager", labelKey: "consentManager", fallback: "Consents", icon: "shield-check" },
21360
21897
  { page: "form", labelKey: "grievanceRequests", fallback: "Requests", icon: "message-circle-warning" },
@@ -21365,10 +21902,10 @@ var PAD_H = spacing.lg;
21365
21902
  var PILL_WIDTH = 56;
21366
21903
  var PILL_HEIGHT = 34;
21367
21904
  function BottomTabBar({ showFooter = true }) {
21368
- const { t } = (0, import_react_i18next33.useTranslation)();
21905
+ const { t } = (0, import_react_i18next35.useTranslation)();
21369
21906
  const { currentPage, navigateTo } = useInternalNavigation();
21370
21907
  const { colors } = useTheme();
21371
- const [rowWidth, setRowWidth] = (0, import_react45.useState)(0);
21908
+ const [rowWidth, setRowWidth] = (0, import_react47.useState)(0);
21372
21909
  const innerWidth = Math.max(0, rowWidth - PAD_H * 2);
21373
21910
  const tabWidth = innerWidth > 0 ? innerWidth / TAB_ITEMS.length : 0;
21374
21911
  const activeIndex = TAB_ITEMS.findIndex(
@@ -21376,13 +21913,13 @@ function BottomTabBar({ showFooter = true }) {
21376
21913
  );
21377
21914
  const { translateX } = useAnimatedTabIndicator(Math.max(0, activeIndex), tabWidth);
21378
21915
  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,
21916
+ return /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)(import_react_native70.View, { style: [styles58.wrapper, { backgroundColor: colors.canvasSubtle, borderTopColor: colors.hairline }], children: [
21917
+ /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)(import_react_native70.View, { style: styles58.container, onLayout, children: [
21918
+ tabWidth > 0 && activeIndex >= 0 ? /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
21919
+ import_react_native70.Animated.View,
21383
21920
  {
21384
21921
  style: [
21385
- styles56.pill,
21922
+ styles58.pill,
21386
21923
  {
21387
21924
  width: PILL_WIDTH,
21388
21925
  left: PAD_H + (tabWidth - PILL_WIDTH) / 2,
@@ -21395,17 +21932,17 @@ function BottomTabBar({ showFooter = true }) {
21395
21932
  TAB_ITEMS.map((item) => {
21396
21933
  const isActive = currentPage === item.page || item.page === "form" && currentPage === "case-details";
21397
21934
  const label = t(item.labelKey) || item.fallback;
21398
- return /* @__PURE__ */ (0, import_jsx_runtime68.jsxs)(
21399
- import_react_native68.TouchableOpacity,
21935
+ return /* @__PURE__ */ (0, import_jsx_runtime72.jsxs)(
21936
+ import_react_native70.TouchableOpacity,
21400
21937
  {
21401
- style: styles56.tab,
21938
+ style: styles58.tab,
21402
21939
  onPress: () => navigateTo(item.page),
21403
21940
  activeOpacity: 0.7,
21404
21941
  accessibilityRole: "tab",
21405
21942
  accessibilityState: { selected: isActive },
21406
21943
  accessibilityLabel: label,
21407
21944
  children: [
21408
- /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(import_react_native68.View, { style: styles56.iconWrap, children: /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
21945
+ /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(import_react_native70.View, { style: styles58.iconWrap, children: /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
21409
21946
  Icon,
21410
21947
  {
21411
21948
  name: item.icon,
@@ -21414,10 +21951,10 @@ function BottomTabBar({ showFooter = true }) {
21414
21951
  strokeWidth: isActive ? 2.1 : 1.85
21415
21952
  }
21416
21953
  ) }),
21417
- /* @__PURE__ */ (0, import_jsx_runtime68.jsx)(
21418
- import_react_native68.Text,
21954
+ /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(
21955
+ import_react_native70.Text,
21419
21956
  {
21420
- style: [styles56.tabLabel, { color: isActive ? colors.primary : colors.textSecondary }],
21957
+ style: [styles58.tabLabel, { color: isActive ? colors.primary : colors.textSecondary }],
21421
21958
  numberOfLines: 1,
21422
21959
  children: label
21423
21960
  }
@@ -21428,13 +21965,13 @@ function BottomTabBar({ showFooter = true }) {
21428
21965
  );
21429
21966
  })
21430
21967
  ] }),
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 } })
21968
+ showFooter ? /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(Footer, { inline: true }) : null,
21969
+ /* @__PURE__ */ (0, import_jsx_runtime72.jsx)(import_react_native70.View, { style: { height: BOTTOM_INSET } })
21433
21970
  ] });
21434
21971
  }
21435
- var styles56 = import_react_native68.StyleSheet.create({
21972
+ var styles58 = import_react_native70.StyleSheet.create({
21436
21973
  wrapper: {
21437
- borderTopWidth: import_react_native68.StyleSheet.hairlineWidth
21974
+ borderTopWidth: import_react_native70.StyleSheet.hairlineWidth
21438
21975
  },
21439
21976
  container: {
21440
21977
  flexDirection: "row",