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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,10 +5,10 @@ import {
5
5
  } from "./chunk-B2TXWC2C.mjs";
6
6
 
7
7
  // src/RedactoPrivacyCenter/RedactoPrivacyCenter.tsx
8
- import { useEffect as useEffect20 } from "react";
8
+ import { useEffect as useEffect21 } from "react";
9
9
  import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
10
10
  import { I18nextProvider } from "react-i18next";
11
- import { View as View50, StyleSheet as StyleSheet53, StatusBar as StatusBar2, Platform as Platform8 } from "react-native";
11
+ import { View as View52, StyleSheet as StyleSheet55, StatusBar as StatusBar2, Platform as Platform8 } from "react-native";
12
12
 
13
13
  // src/RedactoPrivacyCenter/lib/i18n.ts
14
14
  import i18n from "i18next";
@@ -425,7 +425,14 @@ var translation_default = {
425
425
  submittingAs: "Submitting as {{email}}",
426
426
  tapToChooseFile: "Tap to choose a file",
427
427
  view: "View",
428
- whatDoYouNeed: "What do you need?"
428
+ whatDoYouNeed: "What do you need?",
429
+ sessionExpiredTitle: "Your session has expired",
430
+ sessionExpiredDescription: "Please sign in again to continue.",
431
+ chooseYourProfile: "Choose your profile",
432
+ loginIdentifierLinkedToMultipleProfiles: "The login identifier is linked to more than one profile. Choose the one you want to view.",
433
+ userIdLabel: "User ID: {{id}}",
434
+ signingInEllipsis: "Signing in\u2026",
435
+ switchProfile: "Switch profile"
429
436
  };
430
437
 
431
438
  // src/RedactoPrivacyCenter/locales/as/translation.json
@@ -839,7 +846,14 @@ var translation_default2 = {
839
846
  submittingAs: "{{email}} \u09B9\u09BF\u099A\u09BE\u09AA\u09C7 \u09A6\u09BE\u0996\u09BF\u09B2 \u0995\u09F0\u09BF \u0986\u099B\u09C7",
840
847
  tapToChooseFile: "\u09AB\u09BE\u0987\u09B2 \u09AC\u09BE\u099B\u09BF\u09AC\u09B2\u09C8 \u099F\u09BF\u09AA\u0995",
841
848
  view: "\u099A\u09BE\u0993\u0995",
842
- whatDoYouNeed: "\u0986\u09AA\u09CB\u09A8\u09BE\u0995 \u0995\u09BF \u09B2\u09BE\u0997\u09C7?"
849
+ whatDoYouNeed: "\u0986\u09AA\u09CB\u09A8\u09BE\u0995 \u0995\u09BF \u09B2\u09BE\u0997\u09C7?",
850
+ sessionExpiredTitle: "\u0986\u09AA\u09CB\u09A8\u09BE\u09F0 \u099B\u09C7\u099A\u09A8 \u09B6\u09C7\u09B7 \u09B9\u09C8\u099B\u09C7",
851
+ 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",
852
+ chooseYourProfile: "\u0986\u09AA\u09CB\u09A8\u09BE\u09F0 \u09AA\u09CD\u09F0'\u09AB\u09BE\u0987\u09B2 \u09AC\u09BE\u099B\u09A8\u09BF \u0995\u09F0\u0995",
853
+ 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",
854
+ userIdLabel: "\u09AC\u09CD\u09AF\u09F1\u09B9\u09BE\u09F0\u0995\u09BE\u09F0\u09C0 \u0986\u0987\u09A1\u09BF: {{id}}",
855
+ signingInEllipsis: "\u099B\u09BE\u0987\u09A8 \u0987\u09A8 \u09B9\u09C8 \u0986\u099B\u09C7\u2026",
856
+ switchProfile: "\u09AA\u09CD\u09F0'\u09AB\u09BE\u0987\u09B2 \u09B8\u09B2\u09A8\u09BF \u0995\u09F0\u0995"
843
857
  };
844
858
 
845
859
  // src/RedactoPrivacyCenter/locales/bn/translation.json
@@ -1253,7 +1267,14 @@ var translation_default3 = {
1253
1267
  submittingAs: "{{email}} \u09B9\u09BF\u09B8\u09BE\u09AC\u09C7 \u099C\u09AE\u09BE \u09A6\u09C7\u0993\u09AF\u09BC\u09BE \u09B9\u099A\u09CD\u099B\u09C7",
1254
1268
  tapToChooseFile: "\u09AB\u09BE\u0987\u09B2 \u09AC\u09C7\u099B\u09C7 \u09A8\u09BF\u09A4\u09C7 \u099F\u09CD\u09AF\u09BE\u09AA \u0995\u09B0\u09C1\u09A8",
1255
1269
  view: "\u09A6\u09C7\u0996\u09C1\u09A8",
1256
- whatDoYouNeed: "\u0986\u09AA\u09A8\u09BE\u09B0 \u0995\u09C0 \u09AA\u09CD\u09B0\u09AF\u09BC\u09CB\u099C\u09A8?"
1270
+ whatDoYouNeed: "\u0986\u09AA\u09A8\u09BE\u09B0 \u0995\u09C0 \u09AA\u09CD\u09B0\u09AF\u09BC\u09CB\u099C\u09A8?",
1271
+ 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",
1272
+ 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",
1273
+ chooseYourProfile: "\u0986\u09AA\u09A8\u09BE\u09B0 \u09AA\u09CD\u09B0\u09CB\u09AB\u09BE\u0987\u09B2 \u09AC\u09C7\u099B\u09C7 \u09A8\u09BF\u09A8",
1274
+ 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",
1275
+ userIdLabel: "\u09AC\u09CD\u09AF\u09AC\u09B9\u09BE\u09B0\u0995\u09BE\u09B0\u09C0\u09B0 \u0986\u0987\u09A1\u09BF: {{id}}",
1276
+ signingInEllipsis: "\u09B8\u09BE\u0987\u09A8 \u0987\u09A8 \u09B9\u099A\u09CD\u099B\u09C7\u2026",
1277
+ switchProfile: "\u09AA\u09CD\u09B0\u09CB\u09AB\u09BE\u0987\u09B2 \u09AA\u09B0\u09BF\u09AC\u09B0\u09CD\u09A4\u09A8 \u0995\u09B0\u09C1\u09A8"
1257
1278
  };
1258
1279
 
1259
1280
  // src/RedactoPrivacyCenter/locales/brx/translation.json
@@ -1667,7 +1688,14 @@ var translation_default4 = {
1667
1688
  submittingAs: "{{email}} \u092E\u0939\u0930\u0948 \u0917\u0925\u093E\u092F\u0917\u093E\u0938\u093F\u0928\u094B",
1668
1689
  tapToChooseFile: "\u092B\u093E\u0907\u0932 \u0938\u093E\u092F\u0916\u0928\u094B \u091F\u0947\u092C \u0916\u093E\u0932\u093E\u092E",
1669
1690
  view: "\u0928\u093E\u092F",
1670
- whatDoYouNeed: "\u0928\u094B\u0902\u0925\u093E\u0902\u0928\u094B \u092E\u093E \u0917\u094B\u0928\u093E\u0902?"
1691
+ whatDoYouNeed: "\u0928\u094B\u0902\u0925\u093E\u0902\u0928\u094B \u092E\u093E \u0917\u094B\u0928\u093E\u0902?",
1692
+ sessionExpiredTitle: "\u0928\u094B\u0902\u0925\u093E\u0902\u0928\u093F \u0938\u0947\u0938\u0928 \u091C\u094B\u092C\u092C\u093E\u092F",
1693
+ 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",
1694
+ chooseYourProfile: "\u0928\u094B\u0902\u0925\u093E\u0902\u0928\u093F \u092A\u094D\u0930\u092B\u093E\u0907\u0932 \u0938\u093E\u092F\u0916",
1695
+ 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",
1696
+ userIdLabel: "\u092F\u0942\u091C\u0930 \u0906\u0908\u0921\u0940: {{id}}",
1697
+ signingInEllipsis: "\u0938\u093E\u0907\u0928 \u0907\u0928 \u091C\u093E\u092F\u0917\u093E\u0938\u093F\u0928\u094B \u0926\u0902\u2026",
1698
+ switchProfile: "\u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932 \u0938\u094B\u0932\u093E\u092F"
1671
1699
  };
1672
1700
 
1673
1701
  // src/RedactoPrivacyCenter/locales/doi/translation.json
@@ -2081,7 +2109,14 @@ var translation_default5 = {
2081
2109
  submittingAs: "{{email}} \u0926\u0947 \u0930\u0942\u092A \u091A \u091C\u092E\u093E\u0902 \u0915\u0930\u0926\u0947",
2082
2110
  tapToChooseFile: "\u092B\u093E\u0907\u0932 \u091A\u0941\u0928\u0928\u0947 \u0906\u0938\u094D\u0924\u0948 \u091F\u0948\u092A \u0915\u0930\u094B",
2083
2111
  view: "\u0926\u093F\u0915\u094D\u0916\u094B",
2084
- whatDoYouNeed: "\u0924\u0941\u0938\u0947\u0902 \u0915\u0947\u0939\u094D \u091A\u093E\u0939\u093F\u0926\u093E?"
2112
+ whatDoYouNeed: "\u0924\u0941\u0938\u0947\u0902 \u0915\u0947\u0939\u094D \u091A\u093E\u0939\u093F\u0926\u093E?",
2113
+ sessionExpiredTitle: "\u0924\u0941\u0902\u0926\u093E \u0938\u0924\u094D\u0930 \u0916\u0924\u092E \u0939\u094B\u0908 \u0917\u0947\u0906 \u0910",
2114
+ 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",
2115
+ chooseYourProfile: "\u0905\u092A\u0928\u0940 \u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932 \u091A\u0941\u0928\u094B",
2116
+ 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",
2117
+ userIdLabel: "\u092A\u094D\u0930\u092F\u094B\u0917\u0915\u0930\u094D\u0924\u093E \u0906\u0908\u0921\u0940: {{id}}",
2118
+ signingInEllipsis: "\u0938\u093E\u0907\u0928 \u0907\u0928 \u0939\u094B\u0906 \u0915\u0930\u0926\u093E \u0910\u2026",
2119
+ switchProfile: "\u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932 \u092C\u0926\u0932\u094B"
2085
2120
  };
2086
2121
 
2087
2122
  // src/RedactoPrivacyCenter/locales/gom/translation.json
@@ -2495,7 +2530,14 @@ var translation_default6 = {
2495
2530
  submittingAs: "{{email}} \u092E\u094D\u0939\u0942\u0923 \u0938\u093E\u0926\u0930 \u0915\u0930\u0924\u093E",
2496
2531
  tapToChooseFile: "\u092B\u093E\u092F\u0932 \u0928\u093F\u0935\u0921\u092A\u093E\u0915 \u091F\u0945\u092A \u0915\u0930\u093E\u0924",
2497
2532
  view: "\u092A\u0933\u092F\u093E\u0924",
2498
- whatDoYouNeed: "\u0924\u0941\u092E\u0915\u093E\u0902 \u0915\u093F\u0924\u0947\u0902 \u091C\u093E\u092F?"
2533
+ whatDoYouNeed: "\u0924\u0941\u092E\u0915\u093E\u0902 \u0915\u093F\u0924\u0947\u0902 \u091C\u093E\u092F?",
2534
+ sessionExpiredTitle: "\u0924\u0941\u092E\u091A\u0947\u0902 \u0938\u0924\u094D\u0930 \u0938\u094B\u0902\u092A\u0932\u093E\u0902",
2535
+ 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.",
2536
+ chooseYourProfile: "\u0924\u0941\u092E\u091A\u0947\u0902 \u092A\u094D\u0930\u094B\u092B\u093E\u092F\u0932 \u0928\u093F\u0935\u0921\u093E\u0924",
2537
+ 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.",
2538
+ userIdLabel: "\u0935\u093E\u092A\u0930\u092A\u0940 \u0906\u092F\u0921\u0940: {{id}}",
2539
+ signingInEllipsis: "\u0938\u093E\u0907\u0928 \u0907\u0928 \u091C\u093E\u0935\u0928 \u0906\u0938\u093E\u2026",
2540
+ switchProfile: "\u092A\u094D\u0930\u094B\u092B\u093E\u092F\u0932 \u092C\u0926\u0932\u093E"
2499
2541
  };
2500
2542
 
2501
2543
  // src/RedactoPrivacyCenter/locales/gu/translation.json
@@ -2909,7 +2951,14 @@ var translation_default7 = {
2909
2951
  submittingAs: "{{email}} \u0AA4\u0AB0\u0AC0\u0A95\u0AC7 \u0AB8\u0AAC\u0AAE\u0ABF\u0A9F \u0A95\u0AB0\u0AC0 \u0AB0\u0AB9\u0ACD\u0AAF\u0ABE \u0A9B\u0ACB",
2910
2952
  tapToChooseFile: "\u0AAB\u0ABE\u0A87\u0AB2 \u0AAA\u0AB8\u0A82\u0AA6 \u0A95\u0AB0\u0AB5\u0ABE \u0A9F\u0AC5\u0AAA \u0A95\u0AB0\u0ACB",
2911
2953
  view: "\u0A9C\u0AC1\u0A93",
2912
- whatDoYouNeed: "\u0AA4\u0AAE\u0AA8\u0AC7 \u0AB6\u0AC1\u0A82 \u0A9C\u0ACB\u0A88\u0A8F \u0A9B\u0AC7?"
2954
+ whatDoYouNeed: "\u0AA4\u0AAE\u0AA8\u0AC7 \u0AB6\u0AC1\u0A82 \u0A9C\u0ACB\u0A88\u0A8F \u0A9B\u0AC7?",
2955
+ 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",
2956
+ 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.",
2957
+ chooseYourProfile: "\u0AA4\u0AAE\u0ABE\u0AB0\u0AC0 \u0AAA\u0ACD\u0AB0\u0ACB\u0AAB\u0ABE\u0A87\u0AB2 \u0AAA\u0AB8\u0A82\u0AA6 \u0A95\u0AB0\u0ACB",
2958
+ 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.",
2959
+ userIdLabel: "\u0AB5\u0AAA\u0AB0\u0ABE\u0AB6\u0A95\u0AB0\u0ACD\u0AA4\u0ABE \u0A86\u0A88\u0AA1\u0AC0: {{id}}",
2960
+ signingInEllipsis: "\u0AB8\u0ABE\u0A87\u0AA8 \u0A87\u0AA8 \u0AA5\u0A88 \u0AB0\u0AB9\u0ACD\u0AAF\u0AC1\u0A82 \u0A9B\u0AC7\u2026",
2961
+ switchProfile: "\u0AAA\u0ACD\u0AB0\u0ACB\u0AAB\u0ABE\u0A87\u0AB2 \u0AAC\u0AA6\u0AB2\u0ACB"
2913
2962
  };
2914
2963
 
2915
2964
  // src/RedactoPrivacyCenter/locales/hi/translation.json
@@ -3323,7 +3372,14 @@ var translation_default8 = {
3323
3372
  submittingAs: "{{email}} \u0915\u0947 \u0930\u0942\u092A \u092E\u0947\u0902 \u0938\u092C\u092E\u093F\u091F \u0915\u0930 \u0930\u0939\u0947 \u0939\u0948\u0902",
3324
3373
  tapToChooseFile: "\u092B\u093C\u093E\u0907\u0932 \u091A\u0941\u0928\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u091F\u0948\u092A \u0915\u0930\u0947\u0902",
3325
3374
  view: "\u0926\u0947\u0916\u0947\u0902",
3326
- whatDoYouNeed: "\u0906\u092A\u0915\u094B \u0915\u094D\u092F\u093E \u091A\u093E\u0939\u093F\u090F?"
3375
+ whatDoYouNeed: "\u0906\u092A\u0915\u094B \u0915\u094D\u092F\u093E \u091A\u093E\u0939\u093F\u090F?",
3376
+ sessionExpiredTitle: "\u0906\u092A\u0915\u093E \u0938\u0924\u094D\u0930 \u0938\u092E\u093E\u092A\u094D\u0924 \u0939\u094B \u0917\u092F\u093E \u0939\u0948",
3377
+ 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",
3378
+ chooseYourProfile: "\u0905\u092A\u0928\u0940 \u092A\u094D\u0930\u094B\u092B\u093C\u093E\u0907\u0932 \u091A\u0941\u0928\u0947\u0902",
3379
+ 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",
3380
+ userIdLabel: "\u0909\u092A\u092F\u094B\u0917\u0915\u0930\u094D\u0924\u093E \u0906\u0908\u0921\u0940: {{id}}",
3381
+ signingInEllipsis: "\u0938\u093E\u0907\u0928 \u0907\u0928 \u0939\u094B \u0930\u0939\u093E \u0939\u0948\u2026",
3382
+ switchProfile: "\u092A\u094D\u0930\u094B\u092B\u093C\u093E\u0907\u0932 \u092C\u0926\u0932\u0947\u0902"
3327
3383
  };
3328
3384
 
3329
3385
  // src/RedactoPrivacyCenter/locales/kn/translation.json
@@ -3737,7 +3793,14 @@ var translation_default9 = {
3737
3793
  submittingAs: "{{email}} \u0C86\u0C97\u0CBF \u0CB8\u0CB2\u0CCD\u0CB2\u0CBF\u0CB8\u0CB2\u0CBE\u0C97\u0CC1\u0CA4\u0CCD\u0CA4\u0CBF\u0CA6\u0CC6",
3738
3794
  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",
3739
3795
  view: "\u0CB5\u0CC0\u0C95\u0CCD\u0CB7\u0CBF\u0CB8\u0CBF",
3740
- whatDoYouNeed: "\u0CA8\u0CBF\u0CAE\u0C97\u0CC6 \u0C8F\u0CA8\u0CC1 \u0CAC\u0CC7\u0C95\u0CC1?"
3796
+ whatDoYouNeed: "\u0CA8\u0CBF\u0CAE\u0C97\u0CC6 \u0C8F\u0CA8\u0CC1 \u0CAC\u0CC7\u0C95\u0CC1?",
3797
+ sessionExpiredTitle: "\u0CA8\u0CBF\u0CAE\u0CCD\u0CAE \u0CB8\u0CC6\u0CB7\u0CA8\u0CCD \u0C85\u0CB5\u0CA7\u0CBF \u0CAE\u0CC1\u0C97\u0CBF\u0CA6\u0CBF\u0CA6\u0CC6",
3798
+ 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.",
3799
+ chooseYourProfile: "\u0CA8\u0CBF\u0CAE\u0CCD\u0CAE \u0CAA\u0CCD\u0CB0\u0CCA\u0CAB\u0CC8\u0CB2\u0CCD \u0C86\u0CAF\u0CCD\u0C95\u0CC6\u0CAE\u0CBE\u0CA1\u0CBF",
3800
+ 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.",
3801
+ userIdLabel: "\u0CAC\u0CB3\u0C95\u0CC6\u0CA6\u0CBE\u0CB0 \u0C90\u0CA1\u0CBF: {{id}}",
3802
+ signingInEllipsis: "\u0CB8\u0CC8\u0CA8\u0CCD \u0C87\u0CA8\u0CCD \u0C86\u0C97\u0CC1\u0CA4\u0CCD\u0CA4\u0CBF\u0CA6\u0CC6\u2026",
3803
+ switchProfile: "\u0CAA\u0CCD\u0CB0\u0CCA\u0CAB\u0CC8\u0CB2\u0CCD \u0CAC\u0CA6\u0CB2\u0CBE\u0CAF\u0CBF\u0CB8\u0CBF"
3741
3804
  };
3742
3805
 
3743
3806
  // src/RedactoPrivacyCenter/locales/ks/translation.json
@@ -4151,7 +4214,14 @@ var translation_default10 = {
4151
4214
  submittingAs: "{{email}} \u067E\u0620\u0658\u0679\u06BE \u062C\u0645\u0639 \u06A9\u0631\u0627\u0646",
4152
4215
  tapToChooseFile: "\u0641\u0627\u06CC\u0644 \u0698\u0627\u0631\u0646\u06C1 \u062E\u0672\u0637\u0631\u0655 \u0679\u06CC\u067E \u06A9\u0631\u06CC\u0648",
4153
4216
  view: "\u0648\u064F\u0686\u06BE\u0650\u0648",
4154
- whatDoYouNeed: "\u062A\u0648\u06C1\u0650 \u06A9\u06CC\u0627 \u0636\u0631\u0648\u0631\u062A \u0686\u06BE\u064F\u061F"
4217
+ whatDoYouNeed: "\u062A\u0648\u06C1\u0650 \u06A9\u06CC\u0627 \u0636\u0631\u0648\u0631\u062A \u0686\u06BE\u064F\u061F",
4218
+ sessionExpiredTitle: "\u062A\u064F\u06C1\u0646\u065B\u062F \u0633\u06CC\u0634\u064E\u0646 \u062E\u062A\u0645 \u06AF\u06C4\u0645\u064F\u062A",
4219
+ 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",
4220
+ chooseYourProfile: "\u067E\u0646\u0646\u06C1\u0655 \u067E\u0631\u0648\u0641\u0627\u0626\u0644 \u0698\u0627\u0631\u0655\u0648",
4221
+ 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",
4222
+ userIdLabel: "\u0635\u0627\u0631\u0641 \u0622\u0626\u06CC \u0688\u06CC: {{id}}",
4223
+ signingInEllipsis: "\u0633\u0627\u0626\u0646 \u0627\u0650\u0646 \u06AF\u0698\u06BE\u0627\u0646 \u0686\u06BE\u064F\u2026",
4224
+ switchProfile: "\u067E\u0631\u0648\u0641\u0627\u0626\u0644 \u0628\u062F\u0644\u0627\u0648"
4155
4225
  };
4156
4226
 
4157
4227
  // src/RedactoPrivacyCenter/locales/mai/translation.json
@@ -4565,7 +4635,14 @@ var translation_default11 = {
4565
4635
  submittingAs: "{{email}} \u0930\u0942\u092A\u092E\u0947 \u091C\u092E\u093E \u0915\u093D \u0930\u0939\u0932 \u091B\u0940",
4566
4636
  tapToChooseFile: "\u092B\u093E\u0907\u0932 \u091A\u0941\u0928\u092C\u093E\u0915 \u0932\u0947\u0932 \u091F\u0948\u092A \u0915\u0930\u0942",
4567
4637
  view: "\u0926\u0947\u0916\u0942",
4568
- whatDoYouNeed: "\u0905\u0939\u093E\u0901\u0915\u0947\u0901 \u0915\u0940 \u091A\u093E\u0939\u0940?"
4638
+ whatDoYouNeed: "\u0905\u0939\u093E\u0901\u0915\u0947\u0901 \u0915\u0940 \u091A\u093E\u0939\u0940?",
4639
+ sessionExpiredTitle: "\u0905\u0939\u093E\u0901\u0915 \u0938\u0924\u094D\u0930 \u0938\u092E\u093E\u092A\u094D\u0924 \u092D\u093D \u0917\u0947\u0932 \u0905\u091B\u093F",
4640
+ 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",
4641
+ chooseYourProfile: "\u0905\u092A\u0928 \u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932 \u091A\u0941\u0928\u0942",
4642
+ 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",
4643
+ userIdLabel: "\u0909\u092A\u092F\u094B\u0917\u0915\u0930\u094D\u0924\u093E \u0906\u0907\u0921\u0940: {{id}}",
4644
+ signingInEllipsis: "\u0938\u093E\u0907\u0928 \u0907\u0928 \u092D' \u0930\u0939\u0932 \u0905\u091B\u093F\u2026",
4645
+ switchProfile: "\u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932 \u092C\u0926\u0932\u0942"
4569
4646
  };
4570
4647
 
4571
4648
  // src/RedactoPrivacyCenter/locales/ml/translation.json
@@ -4979,7 +5056,14 @@ var translation_default12 = {
4979
5056
  submittingAs: "{{email}} \u0D06\u0D2F\u0D3F \u0D38\u0D2E\u0D7C\u0D2A\u0D4D\u0D2A\u0D3F\u0D15\u0D4D\u0D15\u0D41\u0D28\u0D4D\u0D28\u0D41",
4980
5057
  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",
4981
5058
  view: "\u0D15\u0D3E\u0D23\u0D41\u0D15",
4982
- 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?"
5059
+ 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?",
5060
+ 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",
5061
+ 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.",
5062
+ 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",
5063
+ 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.",
5064
+ userIdLabel: "\u0D09\u0D2A\u0D2F\u0D4B\u0D15\u0D4D\u0D24\u0D43 \u0D10\u0D21\u0D3F: {{id}}",
5065
+ signingInEllipsis: "\u0D38\u0D48\u0D7B \u0D07\u0D7B \u0D1A\u0D46\u0D2F\u0D4D\u0D2F\u0D41\u0D28\u0D4D\u0D28\u0D41\u2026",
5066
+ switchProfile: "\u0D2A\u0D4D\u0D30\u0D4A\u0D2B\u0D48\u0D7D \u0D2E\u0D3E\u0D31\u0D4D\u0D31\u0D41\u0D15"
4983
5067
  };
4984
5068
 
4985
5069
  // src/RedactoPrivacyCenter/locales/mni-Mtei/translation.json
@@ -5393,7 +5477,14 @@ var translation_default13 = {
5393
5477
  submittingAs: "{{email}} \uABD1\uABE3\uABCF\uABC5 \uABCA\uABE5\uABD2\uABE0\uABC2\uABE4",
5394
5478
  tapToChooseFile: "\uABD0\uABE5\uABCF\uABDC \uABC8\uABDF\uABC5\uABD5 \uABC7\uABE6\uABDE \uABC7\uABE7",
5395
5479
  view: "\uABCC\uABE6\uABE1\uABCE",
5396
- whatDoYouNeed: "\uABD1\uABD7\uABE3\uABDD\uABD7 \uABC0\uABD4\uABE4 \uABC7\uABC9\uABE5\uABCF\uABD0\uABD7\uABD5\uABD2\uABE6?"
5480
+ whatDoYouNeed: "\uABD1\uABD7\uABE3\uABDD\uABD7 \uABC0\uABD4\uABE4 \uABC7\uABC9\uABE5\uABCF\uABD0\uABD7\uABD5\uABD2\uABE6?",
5481
+ sessionExpiredTitle: "\uABD1\uABD7\uABE3\uABDD\uABD2\uABE4 \uABC1\uABE6\uABC1\uABDF \uABC2\uABE3\uABCF\uABD4\uABE6",
5482
+ 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",
5483
+ chooseYourProfile: "\u09A8\u09B9\u09BE\u0995\u09CD\u0995\u09C0 \u09AA\u09CD\u09B0\u09CB\u09AB\u09BE\u0987\u09B2 \u0996\u09A8\u09AC\u09BF\u09AF\u09BC\u09C1",
5484
+ 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",
5485
+ userIdLabel: "\uABC3\uABE4\uABD1\uABE3\uABCF\uABD5 \uABD1\uABE5\uABCF\uABD7\uABE4: {{id}}",
5486
+ signingInEllipsis: "\u09B8\u09BE\u0987\u09A8 \u0987\u09A8 \u09A4\u09CC\u09B0\u09BF\u2026",
5487
+ switchProfile: "\u09AA\u09CD\u09B0\u09CB\u09AB\u09BE\u0987\u09B2 \u09B9\u09CB\u0982\u09A6\u09CB\u0995-\u0989"
5397
5488
  };
5398
5489
 
5399
5490
  // src/RedactoPrivacyCenter/locales/mr/translation.json
@@ -5807,7 +5898,14 @@ var translation_default14 = {
5807
5898
  submittingAs: "{{email}} \u092E\u094D\u0939\u0923\u0942\u0928 \u0938\u092C\u092E\u093F\u091F \u0915\u0930\u0924 \u0906\u0939\u0947",
5808
5899
  tapToChooseFile: "\u092B\u093E\u0907\u0932 \u0928\u093F\u0935\u0921\u0923\u094D\u092F\u093E\u0938\u093E\u0920\u0940 \u091F\u0945\u092A \u0915\u0930\u093E",
5809
5900
  view: "\u092A\u0939\u093E",
5810
- whatDoYouNeed: "\u0924\u0941\u092E\u094D\u0939\u093E\u0932\u093E \u0915\u093E\u092F \u0939\u0935\u0947 \u0906\u0939\u0947?"
5901
+ whatDoYouNeed: "\u0924\u0941\u092E\u094D\u0939\u093E\u0932\u093E \u0915\u093E\u092F \u0939\u0935\u0947 \u0906\u0939\u0947?",
5902
+ sessionExpiredTitle: "\u0924\u0941\u092E\u091A\u0947 \u0938\u0924\u094D\u0930 \u0938\u0902\u092A\u0932\u0947 \u0906\u0939\u0947",
5903
+ 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.",
5904
+ chooseYourProfile: "\u0924\u0941\u092E\u091A\u0940 \u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932 \u0928\u093F\u0935\u0921\u093E",
5905
+ 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.",
5906
+ userIdLabel: "\u0935\u093E\u092A\u0930\u0915\u0930\u094D\u0924\u093E \u0906\u092F\u0921\u0940: {{id}}",
5907
+ signingInEllipsis: "\u0938\u093E\u0907\u0928 \u0907\u0928 \u0915\u0930\u0924 \u0906\u0939\u0947\u2026",
5908
+ switchProfile: "\u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932 \u092C\u0926\u0932\u093E"
5811
5909
  };
5812
5910
 
5813
5911
  // src/RedactoPrivacyCenter/locales/ne/translation.json
@@ -6221,7 +6319,14 @@ var translation_default15 = {
6221
6319
  submittingAs: "{{email}} \u0915\u094B \u0930\u0942\u092A\u092E\u093E \u092A\u0947\u0936 \u0917\u0930\u094D\u0926\u0948",
6222
6320
  tapToChooseFile: "\u092B\u093E\u0907\u0932 \u091B\u093E\u0928\u094D\u0928 \u091F\u094D\u092F\u093E\u092A \u0917\u0930\u094D\u0928\u0941\u0939\u094B\u0938\u094D",
6223
6321
  view: "\u0939\u0947\u0930\u094D\u0928\u0941\u0939\u094B\u0938\u094D",
6224
- whatDoYouNeed: "\u0924\u092A\u093E\u0908\u0902\u0932\u093E\u0908 \u0915\u0947 \u091A\u093E\u0939\u093F\u0928\u094D\u091B?"
6322
+ whatDoYouNeed: "\u0924\u092A\u093E\u0908\u0902\u0932\u093E\u0908 \u0915\u0947 \u091A\u093E\u0939\u093F\u0928\u094D\u091B?",
6323
+ sessionExpiredTitle: "\u0924\u092A\u093E\u0908\u0902\u0915\u094B \u0938\u0924\u094D\u0930 \u0938\u092E\u093E\u092A\u094D\u0924 \u092D\u090F\u0915\u094B \u091B",
6324
+ 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",
6325
+ chooseYourProfile: "\u0906\u092B\u094D\u0928\u094B \u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932 \u091B\u093E\u0928\u094D\u0928\u0941\u0939\u094B\u0938\u094D",
6326
+ 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",
6327
+ userIdLabel: "\u092A\u094D\u0930\u092F\u094B\u0917\u0915\u0930\u094D\u0924\u093E \u0906\u0908\u0921\u0940: {{id}}",
6328
+ signingInEllipsis: "\u0938\u093E\u0907\u0928 \u0907\u0928 \u0939\u0941\u0901\u0926\u0948\u091B\u2026",
6329
+ switchProfile: "\u092A\u094D\u0930\u094B\u092B\u093E\u0907\u0932 \u092C\u0926\u0932\u094D\u0928\u0941\u0939\u094B\u0938\u094D"
6225
6330
  };
6226
6331
 
6227
6332
  // src/RedactoPrivacyCenter/locales/or/translation.json
@@ -6635,7 +6740,14 @@ var translation_default16 = {
6635
6740
  submittingAs: "{{email}} \u0B2D\u0B3E\u0B2C\u0B47 \u0B26\u0B3E\u0B16\u0B32 \u0B15\u0B30\u0B41\u0B1B\u0B28\u0B4D\u0B24\u0B3F",
6636
6741
  tapToChooseFile: "\u0B2B\u0B3E\u0B07\u0B32 \u0B2C\u0B3E\u0B1B\u0B3F\u0B2C\u0B3E\u0B15\u0B41 \u0B1F\u0B4D\u0B5F\u0B3E\u0B2A \u0B15\u0B30\u0B28\u0B4D\u0B24\u0B41",
6637
6742
  view: "\u0B26\u0B47\u0B16\u0B28\u0B4D\u0B24\u0B41",
6638
- whatDoYouNeed: "\u0B06\u0B2A\u0B23 \u0B15\u0B23 \u0B1A\u0B3E\u0B39\u0B3E\u0B28\u0B4D\u0B24\u0B3F?"
6743
+ whatDoYouNeed: "\u0B06\u0B2A\u0B23 \u0B15\u0B23 \u0B1A\u0B3E\u0B39\u0B3E\u0B28\u0B4D\u0B24\u0B3F?",
6744
+ 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",
6745
+ 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",
6746
+ chooseYourProfile: "\u0B06\u0B2A\u0B23\u0B19\u0B4D\u0B15 \u0B2A\u0B4D\u0B30\u0B4B\u0B2B\u0B3E\u0B07\u0B32\u0B4D \u0B2C\u0B3E\u0B1B\u0B28\u0B4D\u0B24\u0B41",
6747
+ 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",
6748
+ userIdLabel: "\u0B2C\u0B4D\u0B5F\u0B2C\u0B39\u0B3E\u0B30\u0B15\u0B3E\u0B30\u0B40 \u0B06\u0B07\u0B21\u0B3F: {{id}}",
6749
+ signingInEllipsis: "\u0B38\u0B3E\u0B07\u0B28\u0B4D \u0B07\u0B28\u0B4D \u0B39\u0B47\u0B09\u0B1B\u0B3F\u2026",
6750
+ switchProfile: "\u0B2A\u0B4D\u0B30\u0B4B\u0B2B\u0B3E\u0B07\u0B32\u0B4D \u0B2C\u0B26\u0B33\u0B3E\u0B28\u0B4D\u0B24\u0B41"
6639
6751
  };
6640
6752
 
6641
6753
  // src/RedactoPrivacyCenter/locales/pa/translation.json
@@ -7049,7 +7161,14 @@ var translation_default17 = {
7049
7161
  submittingAs: "{{email}} \u0A35\u0A1C\u0A4B\u0A02 \u0A38\u0A2C\u0A2E\u0A3F\u0A1F \u0A15\u0A30 \u0A30\u0A39\u0A47 \u0A39\u0A4B",
7050
7162
  tapToChooseFile: "\u0A2B\u0A3E\u0A08\u0A32 \u0A1A\u0A41\u0A23\u0A28 \u0A32\u0A08 \u0A1F\u0A48\u0A2A \u0A15\u0A30\u0A4B",
7051
7163
  view: "\u0A26\u0A47\u0A16\u0A4B",
7052
- whatDoYouNeed: "\u0A24\u0A41\u0A39\u0A3E\u0A28\u0A42\u0A70 \u0A15\u0A40 \u0A1A\u0A3E\u0A39\u0A40\u0A26\u0A3E \u0A39\u0A48?"
7164
+ whatDoYouNeed: "\u0A24\u0A41\u0A39\u0A3E\u0A28\u0A42\u0A70 \u0A15\u0A40 \u0A1A\u0A3E\u0A39\u0A40\u0A26\u0A3E \u0A39\u0A48?",
7165
+ sessionExpiredTitle: "\u0A24\u0A41\u0A39\u0A3E\u0A21\u0A3E \u0A38\u0A48\u0A38\u0A3C\u0A28 \u0A38\u0A2E\u0A3E\u0A2A\u0A24 \u0A39\u0A4B \u0A17\u0A3F\u0A06 \u0A39\u0A48",
7166
+ 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",
7167
+ chooseYourProfile: "\u0A06\u0A2A\u0A23\u0A40 \u0A2A\u0A4D\u0A30\u0A4B\u0A2B\u0A3E\u0A08\u0A32 \u0A1A\u0A41\u0A23\u0A4B",
7168
+ 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",
7169
+ userIdLabel: "\u0A09\u0A2A\u0A2F\u0A4B\u0A17\u0A15\u0A30\u0A24\u0A3E \u0A06\u0A08\u0A21\u0A40: {{id}}",
7170
+ signingInEllipsis: "\u0A38\u0A3E\u0A08\u0A28 \u0A07\u0A28 \u0A39\u0A4B \u0A30\u0A3F\u0A39\u0A3E \u0A39\u0A48\u2026",
7171
+ switchProfile: "\u0A2A\u0A4D\u0A30\u0A4B\u0A2B\u0A3E\u0A08\u0A32 \u0A2C\u0A26\u0A32\u0A4B"
7053
7172
  };
7054
7173
 
7055
7174
  // src/RedactoPrivacyCenter/locales/sa/translation.json
@@ -7463,7 +7582,14 @@ var translation_default18 = {
7463
7582
  submittingAs: "{{email}} \u0907\u0924\u093F \u0938\u092E\u0930\u094D\u092A\u092F\u0928\u094D",
7464
7583
  tapToChooseFile: "\u0938\u091E\u094D\u091A\u093F\u0915\u093E\u0902 \u091A\u0947\u0924\u0941\u0902 \u0938\u094D\u092A\u0943\u0936\u0924\u0941",
7465
7584
  view: "\u092A\u0936\u094D\u092F",
7466
- whatDoYouNeed: "\u092D\u0935\u0924\u0903 \u0915\u093F\u092E\u094D \u0906\u0935\u0936\u094D\u092F\u0915\u092E\u094D?"
7585
+ whatDoYouNeed: "\u092D\u0935\u0924\u0903 \u0915\u093F\u092E\u094D \u0906\u0935\u0936\u094D\u092F\u0915\u092E\u094D?",
7586
+ sessionExpiredTitle: "\u092D\u0935\u0924\u0903 \u0938\u0924\u094D\u0930\u0902 \u0938\u092E\u093E\u092A\u094D\u0924\u092E\u094D",
7587
+ 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",
7588
+ chooseYourProfile: "\u0938\u094D\u0935\u092A\u094D\u0930\u094B\u092B\u093C\u093E\u0907\u0932\u0902 \u091A\u093F\u0928\u094B\u0924\u0941",
7589
+ 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",
7590
+ userIdLabel: "\u0909\u092A\u092F\u094B\u0915\u094D\u0924\u0943-\u0906\u092F\u0921\u0940: {{id}}",
7591
+ signingInEllipsis: "\u092A\u094D\u0930\u0935\u0947\u0936\u0903 \u0915\u094D\u0930\u093F\u092F\u0924\u0947\u2026",
7592
+ switchProfile: "\u092A\u094D\u0930\u094B\u092B\u093C\u093E\u0907\u0932\u0902 \u092A\u0930\u093F\u0935\u0930\u094D\u0924\u092F\u0924\u0941"
7467
7593
  };
7468
7594
 
7469
7595
  // src/RedactoPrivacyCenter/locales/sat/translation.json
@@ -7877,7 +8003,14 @@ var translation_default19 = {
7877
8003
  submittingAs: "{{email}} \u1C5E\u1C6E\u1C60\u1C5F\u1C5B\u1C6E \u1C61\u1C5A\u1C62\u1C5F \u1C6E\u1C6B\u1C5F",
7878
8004
  tapToChooseFile: "\u1C6F\u1C77\u1C5F\u1C6D\u1C64\u1C5E \u1C75\u1C5F\u1C6A\u1C77\u1C5F\u1C63 \u1C5E\u1C5F\u1C79\u1C5C\u1C64\u1C6B \u1C74\u1C6E\u1C6F \u1C62\u1C6E",
7879
8005
  view: "\u1C67\u1C6E\u1C5E \u1C62\u1C6E",
7880
- whatDoYouNeed: "\u1C5F\u1C62 \u1C6A\u1C6E\u1C6B \u1C5E\u1C5F\u1C79\u1C60\u1C5B\u1C64?"
8006
+ whatDoYouNeed: "\u1C5F\u1C62 \u1C6A\u1C6E\u1C6B \u1C5E\u1C5F\u1C79\u1C60\u1C5B\u1C64?",
8007
+ sessionExpiredTitle: "\u1C5F\u1C62\u1C5F\u1C5C \u1C65\u1C6E\u1C65\u1C5A\u1C71 \u1C62\u1C69\u1C6A\u1C5F\u1C79\u1C6B\u1C6E\u1C71\u1C5F",
8008
+ 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",
8009
+ chooseYourProfile: "\u1C5F\u1C62\u1C5F\u1C5C \u1C6F\u1C68\u1C73\u1C6F\u1C77\u1C5F\u1C6D\u1C64\u1C5E \u1C75\u1C5F\u1C6A\u1C77\u1C5F\u1C63 \u1C62\u1C6E",
8010
+ 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",
8011
+ userIdLabel: "\u1C75\u1C6E\u1C75\u1C77\u1C5F\u1C68\u1C64\u1C6D\u1C5F\u1C79 \u1C5F\u1C6D\u1C70\u1C64: {{id}}",
8012
+ signingInEllipsis: "\u1C65\u1C5F\u1C6D\u1C64\u1C71 \u1C64\u1C71 \u1C6E\u1C6B\u1C5F\u1C6D\u2026",
8013
+ switchProfile: "\u1C6F\u1C68\u1C73\u1C6F\u1C77\u1C5F\u1C6D\u1C64\u1C5E \u1C75\u1C5A\u1C6B\u1C5A\u1C5E \u1C62\u1C6E"
7881
8014
  };
7882
8015
 
7883
8016
  // src/RedactoPrivacyCenter/locales/sd/translation.json
@@ -8291,7 +8424,14 @@ var translation_default20 = {
8291
8424
  submittingAs: "{{email}} \u0637\u0648\u0631 \u062C\u0645\u0639 \u06AA\u0631\u064A \u0631\u0647\u064A\u0627 \u0622\u0647\u064A\u0648",
8292
8425
  tapToChooseFile: "\u0641\u0627\u0626\u0644 \u0686\u0648\u0646\u068A\u06BB \u0644\u0627\u0621\u0650 \u067D\u064A\u067E \u06AA\u0631\u064A\u0648",
8293
8426
  view: "\u068F\u0633\u0648",
8294
- whatDoYouNeed: "\u062A\u0648\u0647\u0627\u0646 \u06A9\u064A \u0687\u0627 \u06AF\u0647\u0631\u062C\u064A\u061F"
8427
+ whatDoYouNeed: "\u062A\u0648\u0647\u0627\u0646 \u06A9\u064A \u0687\u0627 \u06AF\u0647\u0631\u062C\u064A\u061F",
8428
+ sessionExpiredTitle: "\u062A\u0648\u0647\u0627\u0646 \u062C\u0648 \u0633\u064A\u0634\u0646 \u062E\u062A\u0645 \u067F\u064A \u0648\u064A\u0648 \u0622\u0647\u064A",
8429
+ 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.",
8430
+ chooseYourProfile: "\u067E\u0646\u0647\u0646\u062C\u0648 \u067E\u0631\u0648\u0641\u0627\u0626\u0644 \u0686\u0648\u0646\u068A\u064A\u0648",
8431
+ 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.",
8432
+ userIdLabel: "\u064A\u0648\u0632\u0631 \u0622\u0626\u064A\u068A\u064A: {{id}}",
8433
+ signingInEllipsis: "\u0633\u0627\u0626\u0646 \u0627\u0646 \u067F\u064A \u0631\u0647\u064A\u0648 \u0622\u0647\u064A\u2026",
8434
+ switchProfile: "\u067E\u0631\u0648\u0641\u0627\u0626\u0644 \u062A\u0628\u062F\u064A\u0644 \u06AA\u0631\u064A\u0648"
8295
8435
  };
8296
8436
 
8297
8437
  // src/RedactoPrivacyCenter/locales/ta/translation.json
@@ -8705,7 +8845,14 @@ var translation_default21 = {
8705
8845
  submittingAs: "{{email}} \u0B86\u0B95 \u0B9A\u0BAE\u0BB0\u0BCD\u0BAA\u0BCD\u0BAA\u0BBF\u0B95\u0BCD\u0B95\u0BBF\u0BB1\u0BC0\u0BB0\u0BCD\u0B95\u0BB3\u0BCD",
8706
8846
  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",
8707
8847
  view: "\u0BAA\u0BBE\u0BB0\u0BCD",
8708
- whatDoYouNeed: "\u0B89\u0B99\u0BCD\u0B95\u0BB3\u0BC1\u0B95\u0BCD\u0B95\u0BC1 \u0B8E\u0BA9\u0BCD\u0BA9 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD?"
8848
+ whatDoYouNeed: "\u0B89\u0B99\u0BCD\u0B95\u0BB3\u0BC1\u0B95\u0BCD\u0B95\u0BC1 \u0B8E\u0BA9\u0BCD\u0BA9 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD?",
8849
+ 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",
8850
+ 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.",
8851
+ 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",
8852
+ 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.",
8853
+ userIdLabel: "\u0BAA\u0BAF\u0BA9\u0BB0\u0BCD \u0B90\u0B9F\u0BBF: {{id}}",
8854
+ signingInEllipsis: "\u0B89\u0BB3\u0BCD\u0BA8\u0BC1\u0BB4\u0BC8\u0B95\u0BBF\u0BB1\u0BA4\u0BC1\u2026",
8855
+ switchProfile: "\u0B9A\u0BC1\u0BAF\u0BB5\u0BBF\u0BB5\u0BB0\u0BA4\u0BCD\u0BA4\u0BC8 \u0BAE\u0BBE\u0BB1\u0BCD\u0BB1\u0BC1"
8709
8856
  };
8710
8857
 
8711
8858
  // src/RedactoPrivacyCenter/locales/te/translation.json
@@ -9119,7 +9266,14 @@ var translation_default22 = {
9119
9266
  submittingAs: "{{email}} \u0C17\u0C3E \u0C38\u0C2E\u0C30\u0C4D\u0C2A\u0C3F\u0C38\u0C4D\u0C24\u0C41\u0C28\u0C4D\u0C28\u0C3E\u0C30\u0C41",
9120
9267
  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",
9121
9268
  view: "\u0C35\u0C40\u0C15\u0C4D\u0C37\u0C3F\u0C02\u0C1A\u0C02\u0C21\u0C3F",
9122
- whatDoYouNeed: "\u0C2E\u0C40\u0C15\u0C41 \u0C0F\u0C2E\u0C3F \u0C15\u0C3E\u0C35\u0C3E\u0C32\u0C3F?"
9269
+ whatDoYouNeed: "\u0C2E\u0C40\u0C15\u0C41 \u0C0F\u0C2E\u0C3F \u0C15\u0C3E\u0C35\u0C3E\u0C32\u0C3F?",
9270
+ sessionExpiredTitle: "\u0C2E\u0C40 \u0C38\u0C46\u0C37\u0C28\u0C4D \u0C17\u0C21\u0C41\u0C35\u0C41 \u0C2E\u0C41\u0C17\u0C3F\u0C38\u0C3F\u0C02\u0C26\u0C3F",
9271
+ 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.",
9272
+ chooseYourProfile: "\u0C2E\u0C40 \u0C2A\u0C4D\u0C30\u0C4A\u0C2B\u0C48\u0C32\u0C4D\u200C\u0C28\u0C41 \u0C0E\u0C02\u0C1A\u0C41\u0C15\u0C4B\u0C02\u0C21\u0C3F",
9273
+ 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.",
9274
+ userIdLabel: "\u0C35\u0C3F\u0C28\u0C3F\u0C2F\u0C4B\u0C17\u0C26\u0C3E\u0C30\u0C41 \u0C10\u0C21\u0C3F: {{id}}",
9275
+ signingInEllipsis: "\u0C38\u0C48\u0C28\u0C4D \u0C07\u0C28\u0C4D \u0C05\u0C35\u0C41\u0C24\u0C4B\u0C02\u0C26\u0C3F\u2026",
9276
+ switchProfile: "\u0C2A\u0C4D\u0C30\u0C4A\u0C2B\u0C48\u0C32\u0C4D\u200C\u0C28\u0C41 \u0C2E\u0C3E\u0C30\u0C4D\u0C1A\u0C02\u0C21\u0C3F"
9123
9277
  };
9124
9278
 
9125
9279
  // src/RedactoPrivacyCenter/locales/ur/translation.json
@@ -9533,7 +9687,14 @@ var translation_default23 = {
9533
9687
  submittingAs: "{{email}} \u06A9\u06D2 \u0637\u0648\u0631 \u067E\u0631 \u062C\u0645\u0639 \u06A9\u0631 \u0631\u06C1\u06D2 \u06C1\u06CC\u06BA",
9534
9688
  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",
9535
9689
  view: "\u062F\u06CC\u06A9\u06BE\u06CC\u06BA",
9536
- whatDoYouNeed: "\u0622\u067E \u06A9\u0648 \u06A9\u06CC\u0627 \u0686\u0627\u06C1\u06CC\u06D2\u061F"
9690
+ whatDoYouNeed: "\u0622\u067E \u06A9\u0648 \u06A9\u06CC\u0627 \u0686\u0627\u06C1\u06CC\u06D2\u061F",
9691
+ sessionExpiredTitle: "\u0622\u067E \u06A9\u0627 \u0633\u06CC\u0634\u0646 \u062E\u062A\u0645 \u06C1\u0648 \u06AF\u06CC\u0627 \u06C1\u06D2",
9692
+ 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",
9693
+ chooseYourProfile: "\u0627\u067E\u0646\u06CC \u067E\u0631\u0648\u0641\u0627\u0626\u0644 \u0645\u0646\u062A\u062E\u0628 \u06A9\u0631\u06CC\u06BA",
9694
+ 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",
9695
+ userIdLabel: "\u0635\u0627\u0631\u0641 \u0622\u0626\u06CC \u0688\u06CC: {{id}}",
9696
+ signingInEllipsis: "\u0633\u0627\u0626\u0646 \u0627\u0646 \u06C1\u0648 \u0631\u06C1\u0627 \u06C1\u06D2\u2026",
9697
+ switchProfile: "\u067E\u0631\u0648\u0641\u0627\u0626\u0644 \u062A\u0628\u062F\u06CC\u0644 \u06A9\u0631\u06CC\u06BA"
9537
9698
  };
9538
9699
 
9539
9700
  // src/RedactoPrivacyCenter/lib/locales.ts
@@ -9779,6 +9940,26 @@ var sandboxQueryIdentity = () => sandboxBodyIdentity();
9779
9940
  var sandboxContact = () => sandboxConfig ? sandboxConfig.ucic || sandboxConfig.subject : null;
9780
9941
 
9781
9942
  // src/RedactoPrivacyCenter/api/fetcher.ts
9943
+ var ApiError = class _ApiError extends Error {
9944
+ constructor(message, options = {}) {
9945
+ super(message);
9946
+ this.name = "ApiError";
9947
+ this.status = options.status;
9948
+ this.detail = options.detail;
9949
+ Object.setPrototypeOf(this, _ApiError.prototype);
9950
+ }
9951
+ };
9952
+ var TERMINAL_REFRESH_STATUSES = /* @__PURE__ */ new Set([400, 401, 403, 422]);
9953
+ function isTerminalRefreshError(error) {
9954
+ const e = error;
9955
+ if (!e) return false;
9956
+ if (typeof e.status === "number") {
9957
+ return TERMINAL_REFRESH_STATUSES.has(e.status);
9958
+ }
9959
+ const message = (typeof e.message === "string" ? e.message : "").toLowerCase();
9960
+ if (!message) return false;
9961
+ 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]");
9962
+ }
9782
9963
  async function apiFetch(url, options = {}) {
9783
9964
  const { getAuthToken, headers = {}, ...fetchOptions } = options;
9784
9965
  const requestHeaders = new Headers();
@@ -9843,7 +10024,7 @@ async function apiFetch(url, options = {}) {
9843
10024
  } catch {
9844
10025
  }
9845
10026
  }
9846
- throw new Error(errorMessage);
10027
+ throw new ApiError(errorMessage, { status: response.status });
9847
10028
  }
9848
10029
  const contentLength = response.headers.get("Content-Length");
9849
10030
  const contentType = response.headers.get("Content-Type") || "";
@@ -10261,6 +10442,32 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
10261
10442
  authToken: authToken || baseRequest.authToken
10262
10443
  });
10263
10444
  },
10445
+ /**
10446
+ * List all data principals that share this session's contact
10447
+ * (shared-contact profile picker). Identity is derived server-side from the
10448
+ * JWT — the caller sends nothing but its bearer token.
10449
+ */
10450
+ async listIdentities(baseRequest, authToken, options) {
10451
+ const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/identities`;
10452
+ return privacyCenterApiFetch(url, {
10453
+ ...options,
10454
+ authToken: authToken || baseRequest.authToken
10455
+ });
10456
+ },
10457
+ /**
10458
+ * Re-scope the session to a chosen principal uuid (must be one of the
10459
+ * principals sharing this session's contact). Returns fresh access/refresh
10460
+ * tokens scoped to that principal.
10461
+ */
10462
+ async selectPrincipal(baseRequest, principalUuid, authToken, options) {
10463
+ const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center/identities/select`;
10464
+ return privacyCenterApiFetch(url, {
10465
+ ...options,
10466
+ method: "POST",
10467
+ body: JSON.stringify({ uuid: principalUuid }),
10468
+ authToken: authToken || baseRequest.authToken
10469
+ });
10470
+ },
10264
10471
  /**
10265
10472
  * Get receipts (privacy center)
10266
10473
  */
@@ -11557,6 +11764,40 @@ var acknowledgeNotification = async (organizationId, workspaceId, notificationUu
11557
11764
  var isRefreshing = false;
11558
11765
  var refreshPromise = null;
11559
11766
  var TOKEN_EXPIRY_BUFFER_SECONDS = 30;
11767
+ var deadRefreshToken = null;
11768
+ var transientRefreshFailureUntil = 0;
11769
+ var transientRefreshBackoffMs = 0;
11770
+ var MIN_REFRESH_BACKOFF_MS = 3e4;
11771
+ var MAX_REFRESH_BACKOFF_MS = 3e5;
11772
+ var sessionExpiredListener = null;
11773
+ var setSessionExpiredListener = (fn) => {
11774
+ sessionExpiredListener = fn;
11775
+ };
11776
+ var notifySessionExpired = () => {
11777
+ sessionExpiredListener == null ? void 0 : sessionExpiredListener();
11778
+ };
11779
+ var activeRefreshToken = (authContext) => (authContext == null ? void 0 : authContext.refreshToken) || getStoredValue("refresh_token") || null;
11780
+ var isRefreshBlocked = (authContext) => {
11781
+ const active = activeRefreshToken(authContext);
11782
+ if (active !== null && active === deadRefreshToken) return true;
11783
+ return Date.now() < transientRefreshFailureUntil;
11784
+ };
11785
+ var noteTransientRefreshFailure = () => {
11786
+ transientRefreshBackoffMs = Math.min(
11787
+ Math.max(transientRefreshBackoffMs * 2, MIN_REFRESH_BACKOFF_MS),
11788
+ MAX_REFRESH_BACKOFF_MS
11789
+ );
11790
+ transientRefreshFailureUntil = Date.now() + transientRefreshBackoffMs;
11791
+ };
11792
+ var markRefreshTokenDead = (token) => {
11793
+ if (token) deadRefreshToken = token;
11794
+ notifySessionExpired();
11795
+ };
11796
+ var resetRefreshCircuit = () => {
11797
+ deadRefreshToken = null;
11798
+ transientRefreshFailureUntil = 0;
11799
+ transientRefreshBackoffMs = 0;
11800
+ };
11560
11801
  var tokenStore = {};
11561
11802
  var getStoredValue = (key) => {
11562
11803
  var _a3;
@@ -11612,6 +11853,14 @@ var decodeJwtToken = (token) => {
11612
11853
  return null;
11613
11854
  }
11614
11855
  };
11856
+ var resolveContactFromJwt = (decoded) => {
11857
+ if (!decoded) {
11858
+ return null;
11859
+ }
11860
+ const userData = decoded.user_data || {};
11861
+ const candidate = decoded.contact || decoded.primary_email || userData.primary_email || userData.primary_mobile || userData.org_user_id;
11862
+ return typeof candidate === "string" && candidate.trim() !== "" ? candidate : null;
11863
+ };
11615
11864
  var isJwtExpired = (token, bufferSeconds = 30) => {
11616
11865
  if (!token || typeof token !== "string") return true;
11617
11866
  try {
@@ -11647,6 +11896,7 @@ var ensureValidToken = async (organizationId, workspaceId, _slug, authContext, c
11647
11896
  return accessToken;
11648
11897
  }
11649
11898
  if (isRefreshing && refreshPromise) return refreshPromise;
11899
+ if (isRefreshBlocked(authContext)) return null;
11650
11900
  isRefreshing = true;
11651
11901
  refreshPromise = performTokenRefresh(
11652
11902
  organizationId,
@@ -11674,6 +11924,7 @@ var performTokenRefresh = async (organizationId, workspaceId, authContext, conse
11674
11924
  if (!refreshToken || typeof refreshToken !== "string" || refreshToken.trim() === "") {
11675
11925
  if (authContext == null ? void 0 : authContext.onError)
11676
11926
  authContext.onError(new Error("No refresh token available"));
11927
+ notifySessionExpired();
11677
11928
  signOutPrivacyCenter();
11678
11929
  return null;
11679
11930
  }
@@ -11703,11 +11954,13 @@ var performTokenRefresh = async (organizationId, workspaceId, authContext, conse
11703
11954
  if (newRefreshToken)
11704
11955
  setStoredValue("refresh_token", newRefreshToken);
11705
11956
  }
11957
+ resetRefreshCircuit();
11706
11958
  return newAccessToken;
11707
11959
  }
11708
11960
  }
11709
11961
  if (authContext == null ? void 0 : authContext.onError)
11710
11962
  authContext.onError(new Error("Refresh token expired or revoked"));
11963
+ markRefreshTokenDead(refreshToken);
11711
11964
  signOutPrivacyCenter();
11712
11965
  return null;
11713
11966
  } catch (error) {
@@ -11715,7 +11968,12 @@ var performTokenRefresh = async (organizationId, workspaceId, authContext, conse
11715
11968
  authContext.onError(
11716
11969
  error instanceof Error ? error : new Error(String(error))
11717
11970
  );
11718
- signOutPrivacyCenter();
11971
+ if (isTerminalRefreshError(error)) {
11972
+ markRefreshTokenDead(refreshToken);
11973
+ signOutPrivacyCenter();
11974
+ } else {
11975
+ noteTransientRefreshFailure();
11976
+ }
11719
11977
  return null;
11720
11978
  }
11721
11979
  };
@@ -11762,10 +12020,9 @@ function extractJwtAuthData(token) {
11762
12020
  if (!decoded) {
11763
12021
  return { email: null, organizationId: null, workspaceId: null, organizationName: null };
11764
12022
  }
11765
- const userData = decoded.user_data;
11766
- const userEmail = decoded.contact || decoded.primary_email || decoded.email || decoded.user_uuid || decoded.sub || (userData && typeof userData === "object" ? userData.primary_email || userData.email || userData.contact : null) || null;
12023
+ const contact = resolveContactFromJwt(decoded) || getStoredValue("email");
11767
12024
  return {
11768
- email: typeof userEmail === "string" ? userEmail : null,
12025
+ email: typeof contact === "string" && contact.trim() !== "" ? contact : null,
11769
12026
  organizationId: decoded.organisation_uuid || null,
11770
12027
  workspaceId: decoded.workspace_uuid || null,
11771
12028
  organizationName: decoded.organisation_name || null
@@ -12153,8 +12410,17 @@ function DataAvailabilityProvider({ children }) {
12153
12410
  mountedRef.current = false;
12154
12411
  };
12155
12412
  }, []);
12413
+ useEffect3(() => {
12414
+ setSessionExpiredListener(() => {
12415
+ if (!mountedRef.current) return;
12416
+ runIdRef.current += 1;
12417
+ setStatus("session-expired");
12418
+ });
12419
+ return () => setSessionExpiredListener(null);
12420
+ }, []);
12156
12421
  const runCheck = useCallback4(async () => {
12157
12422
  if (!organizationId || !workspaceId) return;
12423
+ if (isRefreshBlocked(authContext)) return;
12158
12424
  const runId = ++runIdRef.current;
12159
12425
  setStatus("checking");
12160
12426
  const contact = email;
@@ -18290,6 +18556,7 @@ function useUnreadCount() {
18290
18556
  const loadRef = useRef8();
18291
18557
  loadRef.current = async () => {
18292
18558
  if (!organizationId || !workspaceId) return;
18559
+ if (isRefreshBlocked(authContext)) return;
18293
18560
  const res = await fetchUnreadCount(organizationId, workspaceId, authContext, consentClient);
18294
18561
  if (res && typeof res.count === "number") setCount(res.count);
18295
18562
  };
@@ -18615,17 +18882,255 @@ function PrivacyCenterEmptyState() {
18615
18882
  return /* @__PURE__ */ jsx49(PCEmpty, { iconName: "shield", title: t("noDataTitle"), description: t("noDataDescription") });
18616
18883
  }
18617
18884
 
18885
+ // src/RedactoPrivacyCenter/components/PrivacyCenterSessionExpired.tsx
18886
+ import { useTranslation as useTranslation20 } from "react-i18next";
18887
+ import { jsx as jsx50 } from "react/jsx-runtime";
18888
+ function PrivacyCenterSessionExpired() {
18889
+ const { t } = useTranslation20();
18890
+ return /* @__PURE__ */ jsx50(
18891
+ PCEmpty,
18892
+ {
18893
+ iconName: "shield",
18894
+ title: t("sessionExpiredTitle"),
18895
+ description: t("sessionExpiredDescription")
18896
+ }
18897
+ );
18898
+ }
18899
+
18900
+ // src/RedactoPrivacyCenter/components/SelectUserGate.tsx
18901
+ import { useCallback as useCallback11, useEffect as useEffect16, useState as useState22 } from "react";
18902
+ import { StyleSheet as StyleSheet41, View as View39 } from "react-native";
18903
+
18904
+ // src/RedactoPrivacyCenter/context/ProfileSwitchContext.tsx
18905
+ import { createContext as createContext7, useContext as useContext7 } from "react";
18906
+ import { jsx as jsx51 } from "react/jsx-runtime";
18907
+ var ProfileSwitchContext = createContext7({
18908
+ switchProfile: null
18909
+ });
18910
+ function ProfileSwitchProvider({
18911
+ switchProfile,
18912
+ children
18913
+ }) {
18914
+ return /* @__PURE__ */ jsx51(ProfileSwitchContext.Provider, { value: { switchProfile }, children });
18915
+ }
18916
+ function useProfileSwitch() {
18917
+ return useContext7(ProfileSwitchContext);
18918
+ }
18919
+
18920
+ // src/RedactoPrivacyCenter/components/SelectUser.tsx
18921
+ import { ScrollView as ScrollView8, StyleSheet as StyleSheet40, Text as Text30, TouchableOpacity as TouchableOpacity15, View as View38 } from "react-native";
18922
+ import { useTranslation as useTranslation21 } from "react-i18next";
18923
+
18924
+ // src/RedactoPrivacyCenter/lib/identityLabels.ts
18925
+ var identityPrimaryValue = (candidate) => {
18926
+ const orgUserId = candidate.org_user_id || "";
18927
+ const email = candidate.primary_email || "";
18928
+ const mobile = candidate.primary_mobile || "";
18929
+ return { orgUserId, fallback: email || mobile || candidate.uuid };
18930
+ };
18931
+ var identitySecondaryLabels = (candidate, primaryLabel) => {
18932
+ const email = candidate.primary_email || "";
18933
+ const mobile = candidate.primary_mobile || "";
18934
+ return [email, mobile].filter(
18935
+ (value, index, all) => value !== "" && value !== primaryLabel && all.indexOf(value) === index
18936
+ );
18937
+ };
18938
+ var selectableIdentities = (candidates) => candidates.filter((candidate) => Boolean(candidate.uuid));
18939
+
18940
+ // src/RedactoPrivacyCenter/components/SelectUser.tsx
18941
+ import { jsx as jsx52, jsxs as jsxs32 } from "react/jsx-runtime";
18942
+ var SelectUser = ({
18943
+ candidates,
18944
+ onSelect,
18945
+ busyUuid,
18946
+ error
18947
+ }) => {
18948
+ const { t } = useTranslation21();
18949
+ const { colors } = useTheme();
18950
+ const selectable = selectableIdentities(candidates);
18951
+ const busy = busyUuid !== null;
18952
+ return /* @__PURE__ */ jsxs32(ScrollView8, { contentContainerStyle: styles39.container, children: [
18953
+ /* @__PURE__ */ jsx52(Text30, { style: [typography.title, styles39.heading, { color: colors.text }], children: t("chooseYourProfile") }),
18954
+ /* @__PURE__ */ jsx52(Text30, { style: [typography.body, styles39.subtitle, { color: colors.textSecondary }], children: t("loginIdentifierLinkedToMultipleProfiles") }),
18955
+ error ? /* @__PURE__ */ jsx52(Text30, { style: [typography.caption, styles39.error, { color: colors.error }], children: error }) : null,
18956
+ selectable.map((candidate) => {
18957
+ const { orgUserId, fallback } = identityPrimaryValue(candidate);
18958
+ const primaryLabel = orgUserId ? t("userIdLabel", { id: orgUserId }) : fallback;
18959
+ const secondaryLabels = identitySecondaryLabels(candidate, primaryLabel);
18960
+ const isBusy = busyUuid === candidate.uuid;
18961
+ return /* @__PURE__ */ jsxs32(
18962
+ TouchableOpacity15,
18963
+ {
18964
+ accessibilityRole: "button",
18965
+ disabled: busy,
18966
+ onPress: () => onSelect(candidate.uuid),
18967
+ style: [
18968
+ styles39.row,
18969
+ {
18970
+ backgroundColor: colors.surface,
18971
+ borderColor: isBusy ? colors.primary : colors.border
18972
+ }
18973
+ ],
18974
+ children: [
18975
+ /* @__PURE__ */ jsxs32(View38, { style: styles39.rowText, children: [
18976
+ /* @__PURE__ */ jsx52(Text30, { style: [typography.label, { color: colors.text }], children: primaryLabel }),
18977
+ secondaryLabels.map((label) => /* @__PURE__ */ jsx52(
18978
+ Text30,
18979
+ {
18980
+ style: [typography.caption, styles39.secondary, { color: colors.textSecondary }],
18981
+ children: label
18982
+ },
18983
+ label
18984
+ ))
18985
+ ] }),
18986
+ isBusy ? /* @__PURE__ */ jsx52(Text30, { style: [typography.caption, { color: colors.textSecondary }], children: t("signingInEllipsis") }) : /* @__PURE__ */ jsx52(Icon, { name: "chevron-right", size: 18, color: colors.textSecondary })
18987
+ ]
18988
+ },
18989
+ candidate.uuid
18990
+ );
18991
+ })
18992
+ ] });
18993
+ };
18994
+ var styles39 = StyleSheet40.create({
18995
+ container: { padding: spacing.lg },
18996
+ heading: { textAlign: "center" },
18997
+ subtitle: { textAlign: "center", marginTop: spacing.xs, marginBottom: spacing.lg },
18998
+ error: { textAlign: "center", marginBottom: spacing.md },
18999
+ row: {
19000
+ flexDirection: "row",
19001
+ alignItems: "center",
19002
+ borderWidth: 1,
19003
+ borderRadius: radii.md,
19004
+ padding: spacing.md,
19005
+ marginBottom: spacing.sm
19006
+ },
19007
+ rowText: { flex: 1 },
19008
+ secondary: { marginTop: 2 }
19009
+ });
19010
+
19011
+ // src/RedactoPrivacyCenter/components/SelectUserGate.tsx
19012
+ import { jsx as jsx53 } from "react/jsx-runtime";
19013
+ function SelectUserGate({ children }) {
19014
+ var _a3, _b;
19015
+ const { accessToken, organizationId, workspaceId, updateTokens } = useAuth();
19016
+ const { consentClient } = useBaseUrl();
19017
+ const { colors } = useTheme();
19018
+ const insets = useSafeInsets();
19019
+ const [phase, setPhase] = useState22("checking");
19020
+ const [candidates, setCandidates] = useState22([]);
19021
+ const [busyUuid, setBusyUuid] = useState22(null);
19022
+ const [selectError, setSelectError] = useState22(null);
19023
+ const [pinnedOrgUserId, setPinnedOrgUserId] = useState22(null);
19024
+ const tokenOrgUserId = ((_b = (_a3 = decodeJwtToken(accessToken)) == null ? void 0 : _a3.user_data) == null ? void 0 : _b.org_user_id) || "";
19025
+ useEffect16(() => {
19026
+ let cancelled = false;
19027
+ if (isSandboxMode() || !organizationId || !workspaceId || !accessToken) {
19028
+ setPhase("resolved");
19029
+ return;
19030
+ }
19031
+ const isPinned = Boolean(pinnedOrgUserId) && pinnedOrgUserId === tokenOrgUserId;
19032
+ setPhase(isPinned ? "resolved" : "checking");
19033
+ (async () => {
19034
+ var _a4;
19035
+ try {
19036
+ const res = await consentClient.listIdentities({
19037
+ organisationUuid: organizationId,
19038
+ workspaceUuid: workspaceId,
19039
+ authToken: accessToken
19040
+ });
19041
+ if (cancelled) return;
19042
+ const list = (_a4 = res == null ? void 0 : res.identities) != null ? _a4 : [];
19043
+ setCandidates(list);
19044
+ setPhase(list.length > 1 && !isPinned ? "picking" : "resolved");
19045
+ } catch {
19046
+ if (cancelled) return;
19047
+ setCandidates([]);
19048
+ setPhase("resolved");
19049
+ }
19050
+ })();
19051
+ return () => {
19052
+ cancelled = true;
19053
+ };
19054
+ }, [organizationId, workspaceId, tokenOrgUserId]);
19055
+ const handleSelect = useCallback11(
19056
+ async (principalUuid) => {
19057
+ var _a4, _b2;
19058
+ if (!principalUuid || busyUuid || !organizationId || !workspaceId) return;
19059
+ setBusyUuid(principalUuid);
19060
+ setSelectError(null);
19061
+ try {
19062
+ const res = await consentClient.selectPrincipal(
19063
+ {
19064
+ organisationUuid: organizationId,
19065
+ workspaceUuid: workspaceId,
19066
+ authToken: accessToken
19067
+ },
19068
+ principalUuid
19069
+ );
19070
+ if (!(res == null ? void 0 : res.token) || !(res == null ? void 0 : res.refresh_token)) {
19071
+ throw new Error("select-principal returned no tokens");
19072
+ }
19073
+ const pinned = ((_b2 = (_a4 = decodeJwtToken(res.token)) == null ? void 0 : _a4.user_data) == null ? void 0 : _b2.org_user_id) || null;
19074
+ setPinnedOrgUserId(pinned);
19075
+ setPhase("resolved");
19076
+ updateTokens(res.token, res.refresh_token);
19077
+ } catch (error) {
19078
+ setSelectError(
19079
+ error instanceof Error ? error.message : "Failed to switch profile"
19080
+ );
19081
+ } finally {
19082
+ setBusyUuid(null);
19083
+ }
19084
+ },
19085
+ [accessToken, busyUuid, consentClient, organizationId, workspaceId, updateTokens]
19086
+ );
19087
+ const canSwitch = candidates.length > 1;
19088
+ const switchProfile = useCallback11(() => {
19089
+ if (!canSwitch) return;
19090
+ setSelectError(null);
19091
+ setPhase("picking");
19092
+ }, [canSwitch]);
19093
+ if (phase === "checking" || phase === "picking") {
19094
+ return /* @__PURE__ */ jsx53(
19095
+ View39,
19096
+ {
19097
+ style: [
19098
+ styles40.screen,
19099
+ {
19100
+ backgroundColor: colors.canvasSubtle,
19101
+ paddingTop: insets.top,
19102
+ paddingBottom: insets.bottom
19103
+ }
19104
+ ],
19105
+ children: phase === "checking" ? /* @__PURE__ */ jsx53(PCLoader, {}) : /* @__PURE__ */ jsx53(
19106
+ SelectUser,
19107
+ {
19108
+ candidates,
19109
+ onSelect: handleSelect,
19110
+ busyUuid,
19111
+ error: selectError
19112
+ }
19113
+ )
19114
+ }
19115
+ );
19116
+ }
19117
+ return /* @__PURE__ */ jsx53(ProfileSwitchProvider, { switchProfile: canSwitch ? switchProfile : null, children });
19118
+ }
19119
+ var styles40 = StyleSheet41.create({
19120
+ screen: { flex: 1 }
19121
+ });
19122
+
18618
19123
  // src/RedactoPrivacyCenter/components/CaseDetails/CaseDetailsPage.tsx
18619
- import { useState as useState23, useMemo as useMemo20, useEffect as useEffect18 } from "react";
18620
- import { View as View45, Text as Text37, StyleSheet as StyleSheet47, ActivityIndicator as ActivityIndicator8, Platform as Platform7 } from "react-native";
18621
- import { useTranslation as useTranslation25 } from "react-i18next";
19124
+ import { useState as useState24, useMemo as useMemo20, useEffect as useEffect19 } from "react";
19125
+ import { View as View47, Text as Text38, StyleSheet as StyleSheet49, ActivityIndicator as ActivityIndicator8, Platform as Platform7 } from "react-native";
19126
+ import { useTranslation as useTranslation27 } from "react-i18next";
18622
19127
 
18623
19128
  // src/RedactoPrivacyCenter/components/CaseDetails/RequestDetailsTab.tsx
18624
- import { View as View38, Text as Text30, ScrollView as ScrollView8, StyleSheet as StyleSheet40 } from "react-native";
18625
- import { useTranslation as useTranslation20 } from "react-i18next";
18626
- import { jsx as jsx50, jsxs as jsxs32 } from "react/jsx-runtime";
19129
+ import { View as View40, Text as Text31, ScrollView as ScrollView9, StyleSheet as StyleSheet42 } from "react-native";
19130
+ import { useTranslation as useTranslation22 } from "react-i18next";
19131
+ import { jsx as jsx54, jsxs as jsxs33 } from "react/jsx-runtime";
18627
19132
  function RequestDetailsTab({ selectedCase, requestTypeLabel }) {
18628
- const { t } = useTranslation20();
19133
+ const { t } = useTranslation22();
18629
19134
  const { colors } = useTheme();
18630
19135
  const { listBottom } = usePrivacyCenterInsets({ hasFooter: true });
18631
19136
  const details = selectedCase.request_details;
@@ -18657,36 +19162,36 @@ function RequestDetailsTab({ selectedCase, requestTypeLabel }) {
18657
19162
  }
18658
19163
  const description = selectedCase.description_display || selectedCase.description;
18659
19164
  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);
18660
- return /* @__PURE__ */ jsxs32(ScrollView8, { style: [styles39.container, { backgroundColor: colors.canvasSubtle }], contentContainerStyle: [styles39.content, { flexGrow: 1, paddingBottom: listBottom }], showsVerticalScrollIndicator: false, children: [
18661
- /* @__PURE__ */ jsx50(View38, { style: styles39.timeline, children: steps.map((step, i) => {
19165
+ return /* @__PURE__ */ jsxs33(ScrollView9, { style: [styles41.container, { backgroundColor: colors.canvasSubtle }], contentContainerStyle: [styles41.content, { flexGrow: 1, paddingBottom: listBottom }], showsVerticalScrollIndicator: false, children: [
19166
+ /* @__PURE__ */ jsx54(View40, { style: styles41.timeline, children: steps.map((step, i) => {
18662
19167
  const isLast = i === steps.length - 1;
18663
- return /* @__PURE__ */ jsxs32(View38, { style: styles39.stepRow, children: [
18664
- /* @__PURE__ */ jsxs32(View38, { style: styles39.gutter, children: [
18665
- /* @__PURE__ */ jsx50(
18666
- View38,
19168
+ return /* @__PURE__ */ jsxs33(View40, { style: styles41.stepRow, children: [
19169
+ /* @__PURE__ */ jsxs33(View40, { style: styles41.gutter, children: [
19170
+ /* @__PURE__ */ jsx54(
19171
+ View40,
18667
19172
  {
18668
19173
  style: [
18669
- styles39.dot,
19174
+ styles41.dot,
18670
19175
  step.state === "upcoming" ? { backgroundColor: colors.canvasSubtle, borderWidth: 2, borderColor: step.danger ? colors.error : colors.border } : { backgroundColor: step.color }
18671
19176
  ],
18672
- children: step.state === "done" ? /* @__PURE__ */ jsx50(Icon, { name: "check", size: 11, color: colors.primaryText, strokeWidth: 3 }) : step.state === "current" ? /* @__PURE__ */ jsx50(View38, { style: [styles39.dotInner, { backgroundColor: colors.primaryText }] }) : null
19177
+ children: step.state === "done" ? /* @__PURE__ */ jsx54(Icon, { name: "check", size: 11, color: colors.primaryText, strokeWidth: 3 }) : step.state === "current" ? /* @__PURE__ */ jsx54(View40, { style: [styles41.dotInner, { backgroundColor: colors.primaryText }] }) : null
18673
19178
  }
18674
19179
  ),
18675
- !isLast ? /* @__PURE__ */ jsx50(View38, { style: [styles39.connector, { backgroundColor: colors.border }] }) : null
19180
+ !isLast ? /* @__PURE__ */ jsx54(View40, { style: [styles41.connector, { backgroundColor: colors.border }] }) : null
18676
19181
  ] }),
18677
- /* @__PURE__ */ jsxs32(View38, { style: [styles39.stepContent, isLast && styles39.stepContentLast], children: [
18678
- /* @__PURE__ */ jsx50(Text30, { style: [styles39.stepLabel, { color: step.danger ? colors.error : colors.text }], children: step.label }),
18679
- step.date ? /* @__PURE__ */ jsx50(Text30, { style: [styles39.stepDate, { color: step.danger ? colors.error : colors.textSecondary }], children: step.date }) : null
19182
+ /* @__PURE__ */ jsxs33(View40, { style: [styles41.stepContent, isLast && styles41.stepContentLast], children: [
19183
+ /* @__PURE__ */ jsx54(Text31, { style: [styles41.stepLabel, { color: step.danger ? colors.error : colors.text }], children: step.label }),
19184
+ step.date ? /* @__PURE__ */ jsx54(Text31, { style: [styles41.stepDate, { color: step.danger ? colors.error : colors.textSecondary }], children: step.date }) : null
18680
19185
  ] })
18681
19186
  ] }, `${step.label}-${i}`);
18682
19187
  }) }),
18683
- hasDetails ? /* @__PURE__ */ jsxs32(View38, { style: [styles39.card, elevation.card, { backgroundColor: colors.surface }], children: [
18684
- description ? /* @__PURE__ */ jsxs32(View38, { style: styles39.block, children: [
18685
- /* @__PURE__ */ jsx50(Text30, { style: [styles39.blockLabel, { color: colors.textSecondary }], children: t("descriptionLabel") || "Description" }),
18686
- /* @__PURE__ */ jsx50(Text30, { style: [styles39.descriptionText, { color: colors.text }], children: description })
19188
+ hasDetails ? /* @__PURE__ */ jsxs33(View40, { style: [styles41.card, elevation.card, { backgroundColor: colors.surface }], children: [
19189
+ description ? /* @__PURE__ */ jsxs33(View40, { style: styles41.block, children: [
19190
+ /* @__PURE__ */ jsx54(Text31, { style: [styles41.blockLabel, { color: colors.textSecondary }], children: t("descriptionLabel") || "Description" }),
19191
+ /* @__PURE__ */ jsx54(Text31, { style: [styles41.descriptionText, { color: colors.text }], children: description })
18687
19192
  ] }) : null,
18688
- (details == null ? void 0 : details.purposes) && details.purposes.length > 0 ? /* @__PURE__ */ jsxs32(View38, { style: styles39.block, children: [
18689
- /* @__PURE__ */ jsx50(Text30, { style: [styles39.blockLabel, { color: colors.textSecondary }], children: t("purposesInvolved") || t("purposes") || "Purposes" }),
19193
+ (details == null ? void 0 : details.purposes) && details.purposes.length > 0 ? /* @__PURE__ */ jsxs33(View40, { style: styles41.block, children: [
19194
+ /* @__PURE__ */ jsx54(Text31, { style: [styles41.blockLabel, { color: colors.textSecondary }], children: t("purposesInvolved") || t("purposes") || "Purposes" }),
18690
19195
  details.purposes.map((rawP, idx) => {
18691
19196
  const p = (rawP == null ? void 0 : rawP.purpose) ? rawP.purpose : rawP;
18692
19197
  const purposeId = (p == null ? void 0 : p.uuid) || (p == null ? void 0 : p.purpose_uuid) || (rawP == null ? void 0 : rawP.purpose_uuid) || idx;
@@ -18694,10 +19199,10 @@ function RequestDetailsTab({ selectedCase, requestTypeLabel }) {
18694
19199
  const purposeDescription = (p == null ? void 0 : p.description) || (rawP == null ? void 0 : rawP.description);
18695
19200
  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)) : [];
18696
19201
  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 : [];
18697
- return /* @__PURE__ */ jsxs32(View38, { style: [styles39.itemRow, idx > 0 && { borderTopColor: colors.hairline, borderTopWidth: StyleSheet40.hairlineWidth }], children: [
18698
- /* @__PURE__ */ jsx50(Text30, { style: [styles39.itemTitle, { color: colors.text }], children: purposeName }),
18699
- purposeDescription ? /* @__PURE__ */ jsx50(Text30, { style: [styles39.itemDesc, { color: colors.textSecondary }], numberOfLines: 3, children: purposeDescription }) : null,
18700
- dataElements.length > 0 ? /* @__PURE__ */ jsx50(View38, { style: styles39.chipRow, children: dataElements.map((de) => /* @__PURE__ */ jsx50(PCBadge, { status: "info", label: de.name }, de.uuid)) }) : dataElementUuids.length > 0 ? /* @__PURE__ */ jsxs32(Text30, { style: [styles39.itemDesc, { color: colors.textSecondary }], children: [
19202
+ return /* @__PURE__ */ jsxs33(View40, { style: [styles41.itemRow, idx > 0 && { borderTopColor: colors.hairline, borderTopWidth: StyleSheet42.hairlineWidth }], children: [
19203
+ /* @__PURE__ */ jsx54(Text31, { style: [styles41.itemTitle, { color: colors.text }], children: purposeName }),
19204
+ purposeDescription ? /* @__PURE__ */ jsx54(Text31, { style: [styles41.itemDesc, { color: colors.textSecondary }], numberOfLines: 3, children: purposeDescription }) : null,
19205
+ dataElements.length > 0 ? /* @__PURE__ */ jsx54(View40, { style: styles41.chipRow, children: dataElements.map((de) => /* @__PURE__ */ jsx54(PCBadge, { status: "info", label: de.name }, de.uuid)) }) : dataElementUuids.length > 0 ? /* @__PURE__ */ jsxs33(Text31, { style: [styles41.itemDesc, { color: colors.textSecondary }], children: [
18701
19206
  dataElementUuids.length,
18702
19207
  " ",
18703
19208
  t("dataElements") || "data elements"
@@ -18705,44 +19210,44 @@ function RequestDetailsTab({ selectedCase, requestTypeLabel }) {
18705
19210
  ] }, purposeId);
18706
19211
  })
18707
19212
  ] }) : null,
18708
- (details == null ? void 0 : details.correction_data) && details.correction_data.length > 0 ? /* @__PURE__ */ jsxs32(View38, { style: styles39.block, children: [
18709
- /* @__PURE__ */ jsx50(Text30, { style: [styles39.blockLabel, { color: colors.textSecondary }], children: t("correctionData") || "Correction" }),
18710
- details.correction_data.map((item, idx) => /* @__PURE__ */ jsxs32(View38, { style: [styles39.itemRow, idx > 0 && { borderTopColor: colors.hairline, borderTopWidth: StyleSheet40.hairlineWidth }], children: [
18711
- /* @__PURE__ */ jsx50(Text30, { style: [styles39.itemTitle, { color: colors.text }], children: item.name }),
18712
- /* @__PURE__ */ jsxs32(View38, { style: styles39.correctionValues, children: [
18713
- /* @__PURE__ */ jsxs32(View38, { style: styles39.correctionValue, children: [
18714
- /* @__PURE__ */ jsx50(Text30, { style: [styles39.correctionLabel, { color: colors.textSecondary }], children: t("currentValue") || "Current" }),
18715
- /* @__PURE__ */ jsx50(Text30, { style: [styles39.correctionText, { color: colors.text }], children: item.curr_value || "-" })
19213
+ (details == null ? void 0 : details.correction_data) && details.correction_data.length > 0 ? /* @__PURE__ */ jsxs33(View40, { style: styles41.block, children: [
19214
+ /* @__PURE__ */ jsx54(Text31, { style: [styles41.blockLabel, { color: colors.textSecondary }], children: t("correctionData") || "Correction" }),
19215
+ details.correction_data.map((item, idx) => /* @__PURE__ */ jsxs33(View40, { style: [styles41.itemRow, idx > 0 && { borderTopColor: colors.hairline, borderTopWidth: StyleSheet42.hairlineWidth }], children: [
19216
+ /* @__PURE__ */ jsx54(Text31, { style: [styles41.itemTitle, { color: colors.text }], children: item.name }),
19217
+ /* @__PURE__ */ jsxs33(View40, { style: styles41.correctionValues, children: [
19218
+ /* @__PURE__ */ jsxs33(View40, { style: styles41.correctionValue, children: [
19219
+ /* @__PURE__ */ jsx54(Text31, { style: [styles41.correctionLabel, { color: colors.textSecondary }], children: t("currentValue") || "Current" }),
19220
+ /* @__PURE__ */ jsx54(Text31, { style: [styles41.correctionText, { color: colors.text }], children: item.curr_value || "-" })
18716
19221
  ] }),
18717
- /* @__PURE__ */ jsx50(Icon, { name: "chevron-right", size: 16, color: colors.textSecondary, strokeWidth: 2.2 }),
18718
- /* @__PURE__ */ jsxs32(View38, { style: styles39.correctionValue, children: [
18719
- /* @__PURE__ */ jsx50(Text30, { style: [styles39.correctionLabel, { color: colors.textSecondary }], children: t("newValue") || "New" }),
18720
- /* @__PURE__ */ jsx50(Text30, { style: [styles39.correctionText, { color: colors.primary }], children: item.new_value || "-" })
19222
+ /* @__PURE__ */ jsx54(Icon, { name: "chevron-right", size: 16, color: colors.textSecondary, strokeWidth: 2.2 }),
19223
+ /* @__PURE__ */ jsxs33(View40, { style: styles41.correctionValue, children: [
19224
+ /* @__PURE__ */ jsx54(Text31, { style: [styles41.correctionLabel, { color: colors.textSecondary }], children: t("newValue") || "New" }),
19225
+ /* @__PURE__ */ jsx54(Text31, { style: [styles41.correctionText, { color: colors.primary }], children: item.new_value || "-" })
18721
19226
  ] })
18722
19227
  ] })
18723
19228
  ] }, idx))
18724
19229
  ] }) : null,
18725
- (details == null ? void 0 : details.grievance_types) && details.grievance_types.length > 0 ? /* @__PURE__ */ jsxs32(View38, { style: styles39.block, children: [
18726
- /* @__PURE__ */ jsx50(Text30, { style: [styles39.blockLabel, { color: colors.textSecondary }], children: t("grievanceTypes") || "Grievance" }),
18727
- /* @__PURE__ */ jsx50(View38, { style: styles39.chipRow, children: details.grievance_types.map((g, idx) => /* @__PURE__ */ jsx50(PCBadge, { status: "warning", label: (g.grievance || "").replace(/_/g, " ") }, idx)) })
19230
+ (details == null ? void 0 : details.grievance_types) && details.grievance_types.length > 0 ? /* @__PURE__ */ jsxs33(View40, { style: styles41.block, children: [
19231
+ /* @__PURE__ */ jsx54(Text31, { style: [styles41.blockLabel, { color: colors.textSecondary }], children: t("grievanceTypes") || "Grievance" }),
19232
+ /* @__PURE__ */ jsx54(View40, { style: styles41.chipRow, children: details.grievance_types.map((g, idx) => /* @__PURE__ */ jsx54(PCBadge, { status: "warning", label: (g.grievance || "").replace(/_/g, " ") }, idx)) })
18728
19233
  ] }) : null,
18729
- (details == null ? void 0 : details.nomination_data) ? /* @__PURE__ */ jsxs32(View38, { style: styles39.block, children: [
18730
- /* @__PURE__ */ jsx50(Text30, { style: [styles39.blockLabel, { color: colors.textSecondary }], children: t("nominationData") || "Nomination" }),
18731
- details.nomination_data.nominee_email ? /* @__PURE__ */ jsxs32(View38, { style: styles39.kvRow, children: [
18732
- /* @__PURE__ */ jsx50(Text30, { style: [styles39.kvLabel, { color: colors.textSecondary }], children: t("email") || "Email" }),
18733
- /* @__PURE__ */ jsx50(Text30, { style: [styles39.kvValue, { color: colors.text }], children: details.nomination_data.nominee_email })
19234
+ (details == null ? void 0 : details.nomination_data) ? /* @__PURE__ */ jsxs33(View40, { style: styles41.block, children: [
19235
+ /* @__PURE__ */ jsx54(Text31, { style: [styles41.blockLabel, { color: colors.textSecondary }], children: t("nominationData") || "Nomination" }),
19236
+ details.nomination_data.nominee_email ? /* @__PURE__ */ jsxs33(View40, { style: styles41.kvRow, children: [
19237
+ /* @__PURE__ */ jsx54(Text31, { style: [styles41.kvLabel, { color: colors.textSecondary }], children: t("email") || "Email" }),
19238
+ /* @__PURE__ */ jsx54(Text31, { style: [styles41.kvValue, { color: colors.text }], children: details.nomination_data.nominee_email })
18734
19239
  ] }) : null,
18735
- details.nomination_data.nominee_mobile ? /* @__PURE__ */ jsxs32(View38, { style: styles39.kvRow, children: [
18736
- /* @__PURE__ */ jsx50(Text30, { style: [styles39.kvLabel, { color: colors.textSecondary }], children: t("mobile") || "Mobile" }),
18737
- /* @__PURE__ */ jsx50(Text30, { style: [styles39.kvValue, { color: colors.text }], children: details.nomination_data.nominee_mobile })
19240
+ details.nomination_data.nominee_mobile ? /* @__PURE__ */ jsxs33(View40, { style: styles41.kvRow, children: [
19241
+ /* @__PURE__ */ jsx54(Text31, { style: [styles41.kvLabel, { color: colors.textSecondary }], children: t("mobile") || "Mobile" }),
19242
+ /* @__PURE__ */ jsx54(Text31, { style: [styles41.kvValue, { color: colors.text }], children: details.nomination_data.nominee_mobile })
18738
19243
  ] }) : null
18739
19244
  ] }) : null
18740
19245
  ] }) : null,
18741
- /* @__PURE__ */ jsx50(View38, { style: { marginTop: "auto" }, children: /* @__PURE__ */ jsx50(Footer, {}) })
19246
+ /* @__PURE__ */ jsx54(View40, { style: { marginTop: "auto" }, children: /* @__PURE__ */ jsx54(Footer, {}) })
18742
19247
  ] });
18743
19248
  }
18744
19249
  var DOT = 22;
18745
- var styles39 = StyleSheet40.create({
19250
+ var styles41 = StyleSheet42.create({
18746
19251
  container: {
18747
19252
  flex: 1
18748
19253
  },
@@ -18863,21 +19368,21 @@ var styles39 = StyleSheet40.create({
18863
19368
  });
18864
19369
 
18865
19370
  // src/RedactoPrivacyCenter/components/CaseDetails/MessagesTab.tsx
18866
- import { useState as useState22, useRef as useRef10, useEffect as useEffect17, useCallback as useCallback11, useMemo as useMemo19 } from "react";
18867
- import { View as View44, Text as Text36, FlatList as FlatList2, StyleSheet as StyleSheet46, ActivityIndicator as ActivityIndicator7 } from "react-native";
18868
- import { useTranslation as useTranslation24 } from "react-i18next";
19371
+ import { useState as useState23, useRef as useRef10, useEffect as useEffect18, useCallback as useCallback12, useMemo as useMemo19 } from "react";
19372
+ import { View as View46, Text as Text37, FlatList as FlatList2, StyleSheet as StyleSheet48, ActivityIndicator as ActivityIndicator7 } from "react-native";
19373
+ import { useTranslation as useTranslation26 } from "react-i18next";
18869
19374
 
18870
19375
  // src/RedactoPrivacyCenter/components/CaseDetails/MessageItem.tsx
18871
- import React22 from "react";
18872
- import { useTranslation as useTranslation22 } from "react-i18next";
19376
+ import React23 from "react";
19377
+ import { useTranslation as useTranslation24 } from "react-i18next";
18873
19378
 
18874
19379
  // src/RedactoPrivacyCenter/components/CaseDetails/ChatBubble.tsx
18875
- import React21 from "react";
18876
- import { StyleSheet as StyleSheet42, Text as Text32, View as View40 } from "react-native";
19380
+ import React22 from "react";
19381
+ import { StyleSheet as StyleSheet44, Text as Text33, View as View42 } from "react-native";
18877
19382
 
18878
19383
  // src/RedactoPrivacyCenter/components/CaseDetails/AttachmentCard.tsx
18879
- import { View as View39, Text as Text31, TouchableOpacity as TouchableOpacity15, Linking, StyleSheet as StyleSheet41 } from "react-native";
18880
- import { jsx as jsx51, jsxs as jsxs33 } from "react/jsx-runtime";
19384
+ import { View as View41, Text as Text32, TouchableOpacity as TouchableOpacity16, Linking, StyleSheet as StyleSheet43 } from "react-native";
19385
+ import { jsx as jsx55, jsxs as jsxs34 } from "react/jsx-runtime";
18881
19386
  function AttachmentCard({ doc }) {
18882
19387
  const { colors } = useTheme();
18883
19388
  const downloadUrl = getDownloadUrl(doc.file_url);
@@ -18886,28 +19391,28 @@ function AttachmentCard({ doc }) {
18886
19391
  Linking.openURL(downloadUrl);
18887
19392
  }
18888
19393
  };
18889
- return /* @__PURE__ */ jsxs33(
18890
- TouchableOpacity15,
19394
+ return /* @__PURE__ */ jsxs34(
19395
+ TouchableOpacity16,
18891
19396
  {
18892
- style: [styles40.container, { backgroundColor: colors.surface, borderColor: colors.border }],
19397
+ style: [styles42.container, { backgroundColor: colors.surface, borderColor: colors.border }],
18893
19398
  onPress: handlePress,
18894
19399
  disabled: !downloadUrl,
18895
19400
  activeOpacity: 0.7,
18896
19401
  children: [
18897
- /* @__PURE__ */ jsx51(Icon, { name: "file-text", size: 18, color: colors.textSecondary }),
18898
- /* @__PURE__ */ jsxs33(View39, { style: styles40.info, children: [
18899
- /* @__PURE__ */ jsx51(Text31, { style: [styles40.fileName, { color: colors.text }], numberOfLines: 1, children: doc.file_name || "Document" }),
18900
- doc.file_size ? /* @__PURE__ */ jsx51(Text31, { style: [styles40.fileSize, { color: colors.textSecondary }], children: formatFileSize(doc.file_size) }) : null
19402
+ /* @__PURE__ */ jsx55(Icon, { name: "file-text", size: 18, color: colors.textSecondary }),
19403
+ /* @__PURE__ */ jsxs34(View41, { style: styles42.info, children: [
19404
+ /* @__PURE__ */ jsx55(Text32, { style: [styles42.fileName, { color: colors.text }], numberOfLines: 1, children: doc.file_name || "Document" }),
19405
+ doc.file_size ? /* @__PURE__ */ jsx55(Text32, { style: [styles42.fileSize, { color: colors.textSecondary }], children: formatFileSize(doc.file_size) }) : null
18901
19406
  ] })
18902
19407
  ]
18903
19408
  }
18904
19409
  );
18905
19410
  }
18906
- var styles40 = StyleSheet41.create({
19411
+ var styles42 = StyleSheet43.create({
18907
19412
  container: {
18908
19413
  flexDirection: "row",
18909
19414
  alignItems: "center",
18910
- borderWidth: StyleSheet41.hairlineWidth,
19415
+ borderWidth: StyleSheet43.hairlineWidth,
18911
19416
  borderRadius: radii.md,
18912
19417
  paddingHorizontal: spacing.sm + 2,
18913
19418
  paddingVertical: spacing.sm,
@@ -18927,11 +19432,11 @@ var styles40 = StyleSheet41.create({
18927
19432
  });
18928
19433
 
18929
19434
  // src/RedactoPrivacyCenter/components/CaseDetails/ChatBubble.tsx
18930
- import { jsx as jsx52, jsxs as jsxs34 } from "react/jsx-runtime";
19435
+ import { jsx as jsx56, jsxs as jsxs35 } from "react/jsx-runtime";
18931
19436
  var AVATAR_SIZE = 28;
18932
19437
  var AVATAR_GUTTER = 36;
18933
19438
  function TeamAvatar({ tint }) {
18934
- return /* @__PURE__ */ jsx52(View40, { style: [styles41.avatar, { backgroundColor: withAlpha(tint, 0.13) }], children: /* @__PURE__ */ jsx52(Icon, { name: "shield-check", size: 15, color: tint, strokeWidth: 2 }) });
19439
+ return /* @__PURE__ */ jsx56(View42, { style: [styles43.avatar, { backgroundColor: withAlpha(tint, 0.13) }], children: /* @__PURE__ */ jsx56(Icon, { name: "shield-check", size: 15, color: tint, strokeWidth: 2 }) });
18935
19440
  }
18936
19441
  function ChatBubbleImpl({
18937
19442
  message,
@@ -18958,28 +19463,28 @@ function ChatBubbleImpl({
18958
19463
  borderBottomRightRadius: BUBBLE_RADIUS,
18959
19464
  borderBottomLeftRadius: tailRadius
18960
19465
  };
18961
- const bubble = /* @__PURE__ */ jsxs34(View40, { style: [styles41.bubble, bubbleStyle], children: [
18962
- !isPrincipal && isFirstInGroup ? /* @__PURE__ */ jsx52(Text32, { style: [styles41.bubbleSender, { color: colors.primary }], numberOfLines: 1, children: senderLabel }) : null,
18963
- message.body ? /* @__PURE__ */ jsx52(Text32, { style: [styles41.body, { color: isPrincipal ? colors.primaryText : colors.text }], children: message.body }) : null,
18964
- message.documents && message.documents.length > 0 ? /* @__PURE__ */ jsx52(View40, { style: styles41.attachments, children: message.documents.map((doc) => /* @__PURE__ */ jsx52(AttachmentCard, { doc }, doc.uuid)) }) : null
19466
+ const bubble = /* @__PURE__ */ jsxs35(View42, { style: [styles43.bubble, bubbleStyle], children: [
19467
+ !isPrincipal && isFirstInGroup ? /* @__PURE__ */ jsx56(Text33, { style: [styles43.bubbleSender, { color: colors.primary }], numberOfLines: 1, children: senderLabel }) : null,
19468
+ message.body ? /* @__PURE__ */ jsx56(Text33, { style: [styles43.body, { color: isPrincipal ? colors.primaryText : colors.text }], children: message.body }) : null,
19469
+ message.documents && message.documents.length > 0 ? /* @__PURE__ */ jsx56(View42, { style: styles43.attachments, children: message.documents.map((doc) => /* @__PURE__ */ jsx56(AttachmentCard, { doc }, doc.uuid)) }) : null
18965
19470
  ] });
18966
- return /* @__PURE__ */ jsxs34(
18967
- View40,
19471
+ return /* @__PURE__ */ jsxs35(
19472
+ View42,
18968
19473
  {
18969
19474
  style: [
18970
- styles41.row,
18971
- isPrincipal ? styles41.rowRight : styles41.rowLeft,
19475
+ styles43.row,
19476
+ isPrincipal ? styles43.rowRight : styles43.rowLeft,
18972
19477
  { marginTop: isFirstInGroup ? spacing.md : 2 }
18973
19478
  ],
18974
19479
  children: [
18975
- !isPrincipal ? /* @__PURE__ */ jsx52(View40, { style: styles41.avatarSlot, children: isFirstInGroup ? /* @__PURE__ */ jsx52(TeamAvatar, { tint: colors.primary }) : null }) : null,
18976
- /* @__PURE__ */ jsxs34(View40, { style: [styles41.column, isPrincipal ? styles41.columnRight : styles41.columnLeft], children: [
19480
+ !isPrincipal ? /* @__PURE__ */ jsx56(View42, { style: styles43.avatarSlot, children: isFirstInGroup ? /* @__PURE__ */ jsx56(TeamAvatar, { tint: colors.primary }) : null }) : null,
19481
+ /* @__PURE__ */ jsxs35(View42, { style: [styles43.column, isPrincipal ? styles43.columnRight : styles43.columnLeft], children: [
18977
19482
  bubble,
18978
- isLastInGroup ? /* @__PURE__ */ jsx52(
18979
- Text32,
19483
+ isLastInGroup ? /* @__PURE__ */ jsx56(
19484
+ Text33,
18980
19485
  {
18981
19486
  style: [
18982
- styles41.timestamp,
19487
+ styles43.timestamp,
18983
19488
  { color: colors.textSecondary, textAlign: isPrincipal ? "right" : "left" }
18984
19489
  ],
18985
19490
  children: formatMessageTime(timestamp)
@@ -18990,8 +19495,8 @@ function ChatBubbleImpl({
18990
19495
  }
18991
19496
  );
18992
19497
  }
18993
- var ChatBubble = React21.memo(ChatBubbleImpl);
18994
- var styles41 = StyleSheet42.create({
19498
+ var ChatBubble = React22.memo(ChatBubbleImpl);
19499
+ var styles43 = StyleSheet44.create({
18995
19500
  row: {
18996
19501
  flexDirection: "row",
18997
19502
  paddingHorizontal: spacing.md,
@@ -19051,9 +19556,9 @@ var styles41 = StyleSheet42.create({
19051
19556
  });
19052
19557
 
19053
19558
  // src/RedactoPrivacyCenter/components/CaseDetails/DocumentRequestCard.tsx
19054
- import { View as View41, Text as Text33, TouchableOpacity as TouchableOpacity16, StyleSheet as StyleSheet43 } from "react-native";
19055
- import { useTranslation as useTranslation21 } from "react-i18next";
19056
- import { jsx as jsx53, jsxs as jsxs35 } from "react/jsx-runtime";
19559
+ import { View as View43, Text as Text34, TouchableOpacity as TouchableOpacity17, StyleSheet as StyleSheet45 } from "react-native";
19560
+ import { useTranslation as useTranslation23 } from "react-i18next";
19561
+ import { jsx as jsx57, jsxs as jsxs36 } from "react/jsx-runtime";
19057
19562
  var STATUS_BADGE_MAP = {
19058
19563
  pending: "warning",
19059
19564
  under_review: "info",
@@ -19073,20 +19578,20 @@ function humanize(value) {
19073
19578
  }
19074
19579
  function DocumentRequestCard({ message, onUpload, isSubmitting, isCaseFinalized = false }) {
19075
19580
  var _a3;
19076
- const { t } = useTranslation21();
19581
+ const { t } = useTranslation23();
19077
19582
  const { colors } = useTheme();
19078
19583
  const meta = message.document_request_metadata;
19079
19584
  if (!meta) return null;
19080
19585
  const status = meta.document_request_status;
19081
19586
  const canUpload = (status === "pending" || status === "replacement_requested") && !isCaseFinalized;
19082
19587
  const requestEventUuid = meta.document_request_uuid;
19083
- return /* @__PURE__ */ jsxs35(View41, { style: [styles42.container, { borderColor: colors.border, backgroundColor: colors.surface }], children: [
19084
- /* @__PURE__ */ jsxs35(View41, { style: styles42.header, children: [
19085
- /* @__PURE__ */ jsxs35(View41, { style: styles42.titleRow, children: [
19086
- /* @__PURE__ */ jsx53(Icon, { name: "file-check", size: 16, color: colors.primary, strokeWidth: 2 }),
19087
- /* @__PURE__ */ jsx53(Text33, { style: [styles42.title, { color: colors.text }], children: meta.title || t("documentRequestedLabel") || "Document Requested" })
19588
+ return /* @__PURE__ */ jsxs36(View43, { style: [styles44.container, { borderColor: colors.border, backgroundColor: colors.surface }], children: [
19589
+ /* @__PURE__ */ jsxs36(View43, { style: styles44.header, children: [
19590
+ /* @__PURE__ */ jsxs36(View43, { style: styles44.titleRow, children: [
19591
+ /* @__PURE__ */ jsx57(Icon, { name: "file-check", size: 16, color: colors.primary, strokeWidth: 2 }),
19592
+ /* @__PURE__ */ jsx57(Text34, { style: [styles44.title, { color: colors.text }], children: meta.title || t("documentRequestedLabel") || "Document Requested" })
19088
19593
  ] }),
19089
- /* @__PURE__ */ jsx53(
19594
+ /* @__PURE__ */ jsx57(
19090
19595
  PCBadge,
19091
19596
  {
19092
19597
  status: STATUS_BADGE_MAP[status] || "info",
@@ -19094,30 +19599,30 @@ function DocumentRequestCard({ message, onUpload, isSubmitting, isCaseFinalized
19094
19599
  }
19095
19600
  )
19096
19601
  ] }),
19097
- meta.accepted_document ? /* @__PURE__ */ jsx53(Text33, { style: [styles42.accepted, { color: colors.textSecondary }], children: t("acceptedLabel", {
19602
+ meta.accepted_document ? /* @__PURE__ */ jsx57(Text34, { style: [styles44.accepted, { color: colors.textSecondary }], children: t("acceptedLabel", {
19098
19603
  accepted: meta.accepted_document,
19099
19604
  defaultValue: `Accepted: ${meta.accepted_document}`
19100
19605
  }) }) : null,
19101
- meta.rejection_reason ? /* @__PURE__ */ jsxs35(View41, { style: [styles42.rejectionBox, { backgroundColor: colors.errorSoft }], children: [
19102
- /* @__PURE__ */ jsxs35(Text33, { style: [styles42.rejectionLabel, { color: colors.error }], children: [
19606
+ meta.rejection_reason ? /* @__PURE__ */ jsxs36(View43, { style: [styles44.rejectionBox, { backgroundColor: colors.errorSoft }], children: [
19607
+ /* @__PURE__ */ jsxs36(Text34, { style: [styles44.rejectionLabel, { color: colors.error }], children: [
19103
19608
  t("rejectionReasonLabel") || "Rejection reason",
19104
19609
  ":"
19105
19610
  ] }),
19106
- /* @__PURE__ */ jsx53(Text33, { style: [styles42.rejectionText, { color: colors.error }], children: meta.rejection_reason })
19611
+ /* @__PURE__ */ jsx57(Text34, { style: [styles44.rejectionText, { color: colors.error }], children: meta.rejection_reason })
19107
19612
  ] }) : null,
19108
- canUpload && requestEventUuid ? /* @__PURE__ */ jsx53(
19109
- TouchableOpacity16,
19613
+ canUpload && requestEventUuid ? /* @__PURE__ */ jsx57(
19614
+ TouchableOpacity17,
19110
19615
  {
19111
- style: [styles42.uploadButton, { backgroundColor: colors.primary }],
19616
+ style: [styles44.uploadButton, { backgroundColor: colors.primary }],
19112
19617
  onPress: () => onUpload(requestEventUuid),
19113
19618
  disabled: isSubmitting,
19114
19619
  activeOpacity: 0.7,
19115
- children: /* @__PURE__ */ jsx53(Text33, { style: [styles42.uploadButtonText, { color: colors.primaryText }], children: isSubmitting ? t("loading") || "Loading..." : t("uploadAndSubmit") || "Upload & Submit" })
19620
+ children: /* @__PURE__ */ jsx57(Text34, { style: [styles44.uploadButtonText, { color: colors.primaryText }], children: isSubmitting ? t("loading") || "Loading..." : t("uploadAndSubmit") || "Upload & Submit" })
19116
19621
  }
19117
19622
  ) : null
19118
19623
  ] });
19119
19624
  }
19120
- var styles42 = StyleSheet43.create({
19625
+ var styles44 = StyleSheet45.create({
19121
19626
  container: {
19122
19627
  borderWidth: 1.5,
19123
19628
  borderStyle: "dashed",
@@ -19170,20 +19675,20 @@ var styles42 = StyleSheet43.create({
19170
19675
  });
19171
19676
 
19172
19677
  // src/RedactoPrivacyCenter/components/CaseDetails/StatusEvent.tsx
19173
- import { StyleSheet as StyleSheet44, Text as Text34, View as View42 } from "react-native";
19174
- import { jsx as jsx54, jsxs as jsxs36 } from "react/jsx-runtime";
19678
+ import { StyleSheet as StyleSheet46, Text as Text35, View as View44 } from "react-native";
19679
+ import { jsx as jsx58, jsxs as jsxs37 } from "react/jsx-runtime";
19175
19680
  function StatusEvent({ icon, color, bgColor, borderColor, text, subText, timestamp }) {
19176
19681
  const { colors } = useTheme();
19177
- return /* @__PURE__ */ jsxs36(View42, { style: [styles43.container, { backgroundColor: bgColor }], children: [
19178
- /* @__PURE__ */ jsx54(View42, { style: [styles43.iconBubble, { backgroundColor: `${color}1F` }], children: icon }),
19179
- /* @__PURE__ */ jsxs36(View42, { style: styles43.textContainer, children: [
19180
- /* @__PURE__ */ jsx54(Text34, { style: [styles43.text, { color }], children: text }),
19181
- subText ? /* @__PURE__ */ jsx54(Text34, { style: [styles43.subText, { color: colors.textSecondary }], numberOfLines: 2, children: subText }) : null
19682
+ return /* @__PURE__ */ jsxs37(View44, { style: [styles45.container, { backgroundColor: bgColor }], children: [
19683
+ /* @__PURE__ */ jsx58(View44, { style: [styles45.iconBubble, { backgroundColor: `${color}1F` }], children: icon }),
19684
+ /* @__PURE__ */ jsxs37(View44, { style: styles45.textContainer, children: [
19685
+ /* @__PURE__ */ jsx58(Text35, { style: [styles45.text, { color }], children: text }),
19686
+ subText ? /* @__PURE__ */ jsx58(Text35, { style: [styles45.subText, { color: colors.textSecondary }], numberOfLines: 2, children: subText }) : null
19182
19687
  ] }),
19183
- /* @__PURE__ */ jsx54(Text34, { style: [styles43.timestamp, { color: colors.textSecondary }], children: formatMessageTime(timestamp) })
19688
+ /* @__PURE__ */ jsx58(Text35, { style: [styles45.timestamp, { color: colors.textSecondary }], children: formatMessageTime(timestamp) })
19184
19689
  ] });
19185
19690
  }
19186
- var styles43 = StyleSheet44.create({
19691
+ var styles45 = StyleSheet46.create({
19187
19692
  container: {
19188
19693
  flexDirection: "row",
19189
19694
  alignItems: "center",
@@ -19222,10 +19727,10 @@ var styles43 = StyleSheet44.create({
19222
19727
  });
19223
19728
 
19224
19729
  // src/RedactoPrivacyCenter/components/CaseDetails/MessageItem.tsx
19225
- import { Fragment as Fragment12, jsx as jsx55, jsxs as jsxs37 } from "react/jsx-runtime";
19226
- var CheckIcon = ({ color }) => /* @__PURE__ */ jsx55(Icon, { name: "check", size: 14, color, strokeWidth: 2.6 });
19227
- var XIcon = ({ color }) => /* @__PURE__ */ jsx55(Icon, { name: "x", size: 14, color, strokeWidth: 2.6 });
19228
- var RefreshIcon = ({ color }) => /* @__PURE__ */ jsx55(Icon, { name: "refresh-cw", size: 14, color, strokeWidth: 2.2 });
19730
+ import { Fragment as Fragment12, jsx as jsx59, jsxs as jsxs38 } from "react/jsx-runtime";
19731
+ var CheckIcon = ({ color }) => /* @__PURE__ */ jsx59(Icon, { name: "check", size: 14, color, strokeWidth: 2.6 });
19732
+ var XIcon = ({ color }) => /* @__PURE__ */ jsx59(Icon, { name: "x", size: 14, color, strokeWidth: 2.6 });
19733
+ var RefreshIcon = ({ color }) => /* @__PURE__ */ jsx59(Icon, { name: "refresh-cw", size: 14, color, strokeWidth: 2.2 });
19229
19734
  function MessageItemImpl({
19230
19735
  message,
19231
19736
  onUploadForRequest,
@@ -19235,14 +19740,14 @@ function MessageItemImpl({
19235
19740
  isLastInGroup = true
19236
19741
  }) {
19237
19742
  var _a3, _b;
19238
- const { t } = useTranslation22();
19743
+ const { t } = useTranslation24();
19239
19744
  const isPrincipal = message.sender_role === "data_principal";
19240
19745
  const senderLabel = isPrincipal ? t("senderYou") || "You" : t("senderPrivacyTeam") || "Privacy Team";
19241
19746
  switch (message.message_type) {
19242
19747
  case "message_sent":
19243
19748
  case "document_submitted":
19244
19749
  case "document_replaced":
19245
- return /* @__PURE__ */ jsx55(
19750
+ return /* @__PURE__ */ jsx59(
19246
19751
  ChatBubble,
19247
19752
  {
19248
19753
  message,
@@ -19254,8 +19759,8 @@ function MessageItemImpl({
19254
19759
  }
19255
19760
  );
19256
19761
  case "document_requested":
19257
- return /* @__PURE__ */ jsxs37(Fragment12, { children: [
19258
- /* @__PURE__ */ jsx55(
19762
+ return /* @__PURE__ */ jsxs38(Fragment12, { children: [
19763
+ /* @__PURE__ */ jsx59(
19259
19764
  ChatBubble,
19260
19765
  {
19261
19766
  message,
@@ -19266,7 +19771,7 @@ function MessageItemImpl({
19266
19771
  isLastInGroup
19267
19772
  }
19268
19773
  ),
19269
- /* @__PURE__ */ jsx55(
19774
+ /* @__PURE__ */ jsx59(
19270
19775
  DocumentRequestCard,
19271
19776
  {
19272
19777
  message,
@@ -19277,10 +19782,10 @@ function MessageItemImpl({
19277
19782
  )
19278
19783
  ] });
19279
19784
  case "document_approved":
19280
- return /* @__PURE__ */ jsx55(
19785
+ return /* @__PURE__ */ jsx59(
19281
19786
  StatusEvent,
19282
19787
  {
19283
- icon: /* @__PURE__ */ jsx55(CheckIcon, { color: "#059669" }),
19788
+ icon: /* @__PURE__ */ jsx59(CheckIcon, { color: "#059669" }),
19284
19789
  color: "#059669",
19285
19790
  bgColor: "rgba(16, 185, 129, 0.08)",
19286
19791
  borderColor: "rgba(16, 185, 129, 0.2)",
@@ -19289,10 +19794,10 @@ function MessageItemImpl({
19289
19794
  }
19290
19795
  );
19291
19796
  case "document_rejected":
19292
- return /* @__PURE__ */ jsx55(
19797
+ return /* @__PURE__ */ jsx59(
19293
19798
  StatusEvent,
19294
19799
  {
19295
- icon: /* @__PURE__ */ jsx55(XIcon, { color: "#DC2626" }),
19800
+ icon: /* @__PURE__ */ jsx59(XIcon, { color: "#DC2626" }),
19296
19801
  color: "#DC2626",
19297
19802
  bgColor: "rgba(220, 38, 38, 0.08)",
19298
19803
  borderColor: "rgba(220, 38, 38, 0.2)",
@@ -19302,10 +19807,10 @@ function MessageItemImpl({
19302
19807
  }
19303
19808
  );
19304
19809
  case "document_replacement_requested":
19305
- return /* @__PURE__ */ jsx55(
19810
+ return /* @__PURE__ */ jsx59(
19306
19811
  StatusEvent,
19307
19812
  {
19308
- icon: /* @__PURE__ */ jsx55(RefreshIcon, { color: "#D97706" }),
19813
+ icon: /* @__PURE__ */ jsx59(RefreshIcon, { color: "#D97706" }),
19309
19814
  color: "#D97706",
19310
19815
  bgColor: "rgba(245, 158, 11, 0.08)",
19311
19816
  borderColor: "rgba(245, 158, 11, 0.2)",
@@ -19315,7 +19820,7 @@ function MessageItemImpl({
19315
19820
  }
19316
19821
  );
19317
19822
  default:
19318
- return /* @__PURE__ */ jsx55(
19823
+ return /* @__PURE__ */ jsx59(
19319
19824
  ChatBubble,
19320
19825
  {
19321
19826
  message,
@@ -19328,22 +19833,22 @@ function MessageItemImpl({
19328
19833
  );
19329
19834
  }
19330
19835
  }
19331
- var MessageItem = React22.memo(MessageItemImpl);
19836
+ var MessageItem = React23.memo(MessageItemImpl);
19332
19837
 
19333
19838
  // src/RedactoPrivacyCenter/components/CaseDetails/MessageComposer.tsx
19334
- import { useEffect as useEffect16, useRef as useRef9 } from "react";
19839
+ import { useEffect as useEffect17, useRef as useRef9 } from "react";
19335
19840
  import {
19336
19841
  ActivityIndicator as ActivityIndicator6,
19337
19842
  Animated as Animated12,
19338
19843
  Easing as Easing3,
19339
- StyleSheet as StyleSheet45,
19340
- Text as Text35,
19844
+ StyleSheet as StyleSheet47,
19845
+ Text as Text36,
19341
19846
  TextInput as TextInput3,
19342
- TouchableOpacity as TouchableOpacity17,
19343
- View as View43
19847
+ TouchableOpacity as TouchableOpacity18,
19848
+ View as View45
19344
19849
  } from "react-native";
19345
- import { useTranslation as useTranslation23 } from "react-i18next";
19346
- import { jsx as jsx56, jsxs as jsxs38 } from "react/jsx-runtime";
19850
+ import { useTranslation as useTranslation25 } from "react-i18next";
19851
+ import { jsx as jsx60, jsxs as jsxs39 } from "react/jsx-runtime";
19347
19852
  function MessageComposer({
19348
19853
  messageText,
19349
19854
  onMessageTextChange,
@@ -19355,11 +19860,11 @@ function MessageComposer({
19355
19860
  isUploading,
19356
19861
  isCaseFinalized = false
19357
19862
  }) {
19358
- const { t } = useTranslation23();
19863
+ const { t } = useTranslation25();
19359
19864
  const { colors } = useTheme();
19360
19865
  const canSend = (messageText.trim().length > 0 || pendingUpload) && !isSending && !isUploading && !isCaseFinalized;
19361
19866
  const activate = useRef9(new Animated12.Value(canSend ? 1 : 0)).current;
19362
- useEffect16(() => {
19867
+ useEffect17(() => {
19363
19868
  Animated12.timing(activate, {
19364
19869
  toValue: canSend ? 1 : 0,
19365
19870
  duration: 180,
@@ -19379,7 +19884,7 @@ function MessageComposer({
19379
19884
  Animated12.spring(pressScale, { toValue: 1, useNativeDriver: true, speed: 20, bounciness: 6 }).start();
19380
19885
  };
19381
19886
  const pillIn = useRef9(new Animated12.Value(0)).current;
19382
- useEffect16(() => {
19887
+ useEffect17(() => {
19383
19888
  Animated12.timing(pillIn, {
19384
19889
  toValue: pendingUpload ? 1 : 0,
19385
19890
  duration: 220,
@@ -19389,12 +19894,12 @@ function MessageComposer({
19389
19894
  }, [pendingUpload, pillIn]);
19390
19895
  const pillOpacity = pillIn;
19391
19896
  const pillTranslateY = pillIn.interpolate({ inputRange: [0, 1], outputRange: [8, 0] });
19392
- return /* @__PURE__ */ jsxs38(View43, { style: [styles44.container, { borderTopColor: colors.hairline, backgroundColor: colors.canvasSubtle, paddingBottom: spacing.sm }], children: [
19393
- pendingUpload && /* @__PURE__ */ jsxs38(
19897
+ return /* @__PURE__ */ jsxs39(View45, { style: [styles46.container, { borderTopColor: colors.hairline, backgroundColor: colors.canvasSubtle, paddingBottom: spacing.sm }], children: [
19898
+ pendingUpload && /* @__PURE__ */ jsxs39(
19394
19899
  Animated12.View,
19395
19900
  {
19396
19901
  style: [
19397
- styles44.uploadPill,
19902
+ styles46.uploadPill,
19398
19903
  {
19399
19904
  backgroundColor: colors.primarySoft,
19400
19905
  opacity: pillOpacity,
@@ -19402,34 +19907,34 @@ function MessageComposer({
19402
19907
  }
19403
19908
  ],
19404
19909
  children: [
19405
- /* @__PURE__ */ jsx56(Icon, { name: "file", size: 14, color: colors.primary }),
19406
- /* @__PURE__ */ jsxs38(Text35, { style: [styles44.uploadFileName, { color: colors.primary }], numberOfLines: 1, children: [
19910
+ /* @__PURE__ */ jsx60(Icon, { name: "file", size: 14, color: colors.primary }),
19911
+ /* @__PURE__ */ jsxs39(Text36, { style: [styles46.uploadFileName, { color: colors.primary }], numberOfLines: 1, children: [
19407
19912
  pendingUpload.file_name,
19408
19913
  " (",
19409
19914
  formatFileSize(pendingUpload.file_size),
19410
19915
  ")"
19411
19916
  ] }),
19412
- /* @__PURE__ */ jsx56(TouchableOpacity17, { onPress: onRemovePendingUpload, hitSlop: { top: 8, bottom: 8, left: 8, right: 8 }, children: /* @__PURE__ */ jsx56(Icon, { name: "x", size: 14, color: colors.textSecondary, strokeWidth: 2.4 }) })
19917
+ /* @__PURE__ */ jsx60(TouchableOpacity18, { onPress: onRemovePendingUpload, hitSlop: { top: 8, bottom: 8, left: 8, right: 8 }, children: /* @__PURE__ */ jsx60(Icon, { name: "x", size: 14, color: colors.textSecondary, strokeWidth: 2.4 }) })
19413
19918
  ]
19414
19919
  }
19415
19920
  ),
19416
- /* @__PURE__ */ jsxs38(View43, { style: [styles44.pill, { backgroundColor: colors.surface, borderColor: colors.border }, isCaseFinalized && styles44.pillDisabled], children: [
19417
- /* @__PURE__ */ jsx56(
19418
- TouchableOpacity17,
19921
+ /* @__PURE__ */ jsxs39(View45, { style: [styles46.pill, { backgroundColor: colors.surface, borderColor: colors.border }, isCaseFinalized && styles46.pillDisabled], children: [
19922
+ /* @__PURE__ */ jsx60(
19923
+ TouchableOpacity18,
19419
19924
  {
19420
- style: styles44.attachButton,
19925
+ style: styles46.attachButton,
19421
19926
  onPress: onAttachClick,
19422
19927
  disabled: isUploading || isCaseFinalized,
19423
19928
  activeOpacity: 0.6,
19424
19929
  hitSlop: DEFAULT_HIT_SLOP,
19425
19930
  accessibilityLabel: t("uploadFile") || "Attach file",
19426
- children: isUploading ? /* @__PURE__ */ jsx56(ActivityIndicator6, { size: "small", color: colors.primary }) : /* @__PURE__ */ jsx56(Icon, { name: "paperclip", size: 20, color: colors.textSecondary })
19931
+ children: isUploading ? /* @__PURE__ */ jsx60(ActivityIndicator6, { size: "small", color: colors.primary }) : /* @__PURE__ */ jsx60(Icon, { name: "paperclip", size: 20, color: colors.textSecondary })
19427
19932
  }
19428
19933
  ),
19429
- /* @__PURE__ */ jsx56(
19934
+ /* @__PURE__ */ jsx60(
19430
19935
  TextInput3,
19431
19936
  {
19432
- style: [styles44.input, { color: colors.text }],
19937
+ style: [styles46.input, { color: colors.text }],
19433
19938
  value: messageText,
19434
19939
  onChangeText: onMessageTextChange,
19435
19940
  placeholder: t("messageInputPlaceholder", { defaultValue: "Message\u2026" }),
@@ -19439,8 +19944,8 @@ function MessageComposer({
19439
19944
  editable: !isSending && !isCaseFinalized
19440
19945
  }
19441
19946
  ),
19442
- /* @__PURE__ */ jsx56(Animated12.View, { style: { transform: [{ scale: pressScale }] }, children: /* @__PURE__ */ jsx56(
19443
- TouchableOpacity17,
19947
+ /* @__PURE__ */ jsx60(Animated12.View, { style: { transform: [{ scale: pressScale }] }, children: /* @__PURE__ */ jsx60(
19948
+ TouchableOpacity18,
19444
19949
  {
19445
19950
  onPress: onSend,
19446
19951
  onPressIn: handlePressIn,
@@ -19448,15 +19953,15 @@ function MessageComposer({
19448
19953
  disabled: !canSend,
19449
19954
  activeOpacity: 0.85,
19450
19955
  accessibilityLabel: t("send") || "Send",
19451
- children: /* @__PURE__ */ jsx56(Animated12.View, { style: [styles44.sendButton, { backgroundColor: sendBgColor }], children: isSending ? /* @__PURE__ */ jsx56(ActivityIndicator6, { size: "small", color: colors.primaryText }) : /* @__PURE__ */ jsx56(View43, { style: styles44.sendIcon, children: /* @__PURE__ */ jsx56(Icon, { name: "send", size: 18, color: canSend ? colors.primaryText : colors.textSecondary }) }) })
19956
+ children: /* @__PURE__ */ jsx60(Animated12.View, { style: [styles46.sendButton, { backgroundColor: sendBgColor }], children: isSending ? /* @__PURE__ */ jsx60(ActivityIndicator6, { size: "small", color: colors.primaryText }) : /* @__PURE__ */ jsx60(View45, { style: styles46.sendIcon, children: /* @__PURE__ */ jsx60(Icon, { name: "send", size: 18, color: canSend ? colors.primaryText : colors.textSecondary }) }) })
19452
19957
  }
19453
19958
  ) })
19454
19959
  ] })
19455
19960
  ] });
19456
19961
  }
19457
- var styles44 = StyleSheet45.create({
19962
+ var styles46 = StyleSheet47.create({
19458
19963
  container: {
19459
- borderTopWidth: StyleSheet45.hairlineWidth,
19964
+ borderTopWidth: StyleSheet47.hairlineWidth,
19460
19965
  paddingHorizontal: spacing.md,
19461
19966
  paddingVertical: spacing.sm
19462
19967
  },
@@ -19479,7 +19984,7 @@ var styles44 = StyleSheet45.create({
19479
19984
  pill: {
19480
19985
  flexDirection: "row",
19481
19986
  alignItems: "center",
19482
- borderWidth: StyleSheet45.hairlineWidth,
19987
+ borderWidth: StyleSheet47.hairlineWidth,
19483
19988
  borderRadius: radii.xxl + 4,
19484
19989
  paddingHorizontal: spacing.xs + 2,
19485
19990
  paddingVertical: spacing.xs,
@@ -19518,7 +20023,7 @@ var styles44 = StyleSheet45.create({
19518
20023
  });
19519
20024
 
19520
20025
  // src/RedactoPrivacyCenter/components/CaseDetails/MessagesTab.tsx
19521
- import { Fragment as Fragment13, jsx as jsx57, jsxs as jsxs39 } from "react/jsx-runtime";
20026
+ import { Fragment as Fragment13, jsx as jsx61, jsxs as jsxs40 } from "react/jsx-runtime";
19522
20027
  var STREAK_GAP_MS = 5 * 60 * 1e3;
19523
20028
  function isStreakBoundary(a, b) {
19524
20029
  if (!a || !b) return true;
@@ -19548,7 +20053,7 @@ function sameDay(a, b) {
19548
20053
  }
19549
20054
  var MESSAGE_POLL_INTERVAL = 3e4;
19550
20055
  function MessagesTab({ caseUuid, isCaseFinalized = false }) {
19551
- const { t } = useTranslation24();
20056
+ const { t } = useTranslation26();
19552
20057
  const { accessToken, refreshToken, email, organizationId, workspaceId, onError, updateTokens } = useAuth();
19553
20058
  const { consentClient } = useBaseUrl();
19554
20059
  const { colors } = useTheme();
@@ -19564,13 +20069,13 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
19564
20069
  caseUuid,
19565
20070
  authContext
19566
20071
  );
19567
- const [messageText, setMessageText] = useState22("");
19568
- const [pendingUpload, setPendingUpload] = useState22(null);
19569
- const [isSending, setIsSending] = useState22(false);
19570
- const [isUploading, setIsUploading] = useState22(false);
19571
- const [isSubmittingForRequest, setIsSubmittingForRequest] = useState22(false);
20072
+ const [messageText, setMessageText] = useState23("");
20073
+ const [pendingUpload, setPendingUpload] = useState23(null);
20074
+ const [isSending, setIsSending] = useState23(false);
20075
+ const [isUploading, setIsUploading] = useState23(false);
20076
+ const [isSubmittingForRequest, setIsSubmittingForRequest] = useState23(false);
19572
20077
  const flatListRef = useRef10(null);
19573
- useEffect17(() => {
20078
+ useEffect18(() => {
19574
20079
  if (messages && messages.length > 0) {
19575
20080
  setTimeout(() => {
19576
20081
  var _a3;
@@ -19580,14 +20085,17 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
19580
20085
  }, [messages == null ? void 0 : messages.length]);
19581
20086
  const refetchRef = useRef10(refetch);
19582
20087
  refetchRef.current = refetch;
19583
- useEffect17(() => {
20088
+ const authContextRef = useRef10(authContext);
20089
+ authContextRef.current = authContext;
20090
+ useEffect18(() => {
19584
20091
  if (isCaseFinalized) return;
19585
20092
  const id = setInterval(() => {
20093
+ if (isRefreshBlocked(authContextRef.current)) return;
19586
20094
  refetchRef.current();
19587
20095
  }, MESSAGE_POLL_INTERVAL);
19588
20096
  return () => clearInterval(id);
19589
20097
  }, [isCaseFinalized]);
19590
- const handleSend = useCallback11(async () => {
20098
+ const handleSend = useCallback12(async () => {
19591
20099
  if (isCaseFinalized) return;
19592
20100
  if (!messageText.trim() && !pendingUpload) return;
19593
20101
  if (!organizationId || !workspaceId) return;
@@ -19612,7 +20120,7 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
19612
20120
  setIsSending(false);
19613
20121
  }
19614
20122
  }, [isCaseFinalized, messageText, pendingUpload, organizationId, workspaceId, caseUuid, authContext, consentClient, refetch]);
19615
- const handleAttach = useCallback11(async () => {
20123
+ const handleAttach = useCallback12(async () => {
19616
20124
  if (isCaseFinalized) return;
19617
20125
  if (!organizationId || !workspaceId) return;
19618
20126
  try {
@@ -19647,7 +20155,7 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
19647
20155
  setIsUploading(false);
19648
20156
  }
19649
20157
  }, [isCaseFinalized, organizationId, workspaceId, caseUuid, authContext, consentClient]);
19650
- const handleUploadForRequest = useCallback11((_requestEventUuid) => {
20158
+ const handleUploadForRequest = useCallback12((_requestEventUuid) => {
19651
20159
  handleAttach();
19652
20160
  }, [handleAttach]);
19653
20161
  const messagesList = useMemo19(() => {
@@ -19659,17 +20167,17 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
19659
20167
  });
19660
20168
  return list;
19661
20169
  }, [messages]);
19662
- const keyExtractor = useCallback11((item) => item.uuid, []);
19663
- const renderMessage = useCallback11(
20170
+ const keyExtractor = useCallback12((item) => item.uuid, []);
20171
+ const renderMessage = useCallback12(
19664
20172
  ({ item, index }) => {
19665
20173
  const prev = index > 0 ? messagesList[index - 1] : void 0;
19666
20174
  const next = index < messagesList.length - 1 ? messagesList[index + 1] : void 0;
19667
20175
  const isFirstInGroup = isStreakBoundary(prev, item);
19668
20176
  const isLastInGroup = isStreakBoundary(item, next);
19669
20177
  const dateSeparator = getDateSeparator(prev == null ? void 0 : prev.created_at, item.created_at, t);
19670
- return /* @__PURE__ */ jsxs39(Fragment13, { children: [
19671
- dateSeparator ? /* @__PURE__ */ jsx57(View44, { style: styles45.daySeparator, children: /* @__PURE__ */ jsx57(View44, { style: [styles45.dayPill, { backgroundColor: colors.surfaceAlt }], children: /* @__PURE__ */ jsx57(Text36, { style: [styles45.dayPillText, { color: colors.textSecondary }], children: dateSeparator }) }) }) : null,
19672
- /* @__PURE__ */ jsx57(
20178
+ return /* @__PURE__ */ jsxs40(Fragment13, { children: [
20179
+ dateSeparator ? /* @__PURE__ */ jsx61(View46, { style: styles47.daySeparator, children: /* @__PURE__ */ jsx61(View46, { style: [styles47.dayPill, { backgroundColor: colors.surfaceAlt }], children: /* @__PURE__ */ jsx61(Text37, { style: [styles47.dayPillText, { color: colors.textSecondary }], children: dateSeparator }) }) }) : null,
20180
+ /* @__PURE__ */ jsx61(
19673
20181
  MessageItem,
19674
20182
  {
19675
20183
  message: item,
@@ -19685,32 +20193,32 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
19685
20193
  [messagesList, handleUploadForRequest, isSubmittingForRequest, isCaseFinalized, colors, t]
19686
20194
  );
19687
20195
  if (isLoading) {
19688
- return /* @__PURE__ */ jsx57(View44, { style: styles45.centered, children: /* @__PURE__ */ jsx57(ActivityIndicator7, { size: "large", color: colors.primary }) });
20196
+ return /* @__PURE__ */ jsx61(View46, { style: styles47.centered, children: /* @__PURE__ */ jsx61(ActivityIndicator7, { size: "large", color: colors.primary }) });
19689
20197
  }
19690
20198
  if (error) {
19691
- return /* @__PURE__ */ jsx57(View44, { style: styles45.centered, children: /* @__PURE__ */ jsx57(Text36, { style: [styles45.errorText, { color: colors.error }], children: t("errorLoadingMessages") || "Error loading messages" }) });
20199
+ return /* @__PURE__ */ jsx61(View46, { style: styles47.centered, children: /* @__PURE__ */ jsx61(Text37, { style: [styles47.errorText, { color: colors.error }], children: t("errorLoadingMessages") || "Error loading messages" }) });
19692
20200
  }
19693
- return /* @__PURE__ */ jsxs39(View44, { style: [styles45.container, { backgroundColor: colors.canvasSubtle }], children: [
19694
- /* @__PURE__ */ jsxs39(View44, { style: styles45.secureRow, children: [
19695
- /* @__PURE__ */ jsx57(Icon, { name: "lock", size: 12, color: colors.textSecondary, strokeWidth: 2.2 }),
19696
- /* @__PURE__ */ jsx57(Text36, { 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"}` })
20201
+ return /* @__PURE__ */ jsxs40(View46, { style: [styles47.container, { backgroundColor: colors.canvasSubtle }], children: [
20202
+ /* @__PURE__ */ jsxs40(View46, { style: styles47.secureRow, children: [
20203
+ /* @__PURE__ */ jsx61(Icon, { name: "lock", size: 12, color: colors.textSecondary, strokeWidth: 2.2 }),
20204
+ /* @__PURE__ */ jsx61(Text37, { 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"}` })
19697
20205
  ] }),
19698
- /* @__PURE__ */ jsx57(
20206
+ /* @__PURE__ */ jsx61(
19699
20207
  FlatList2,
19700
20208
  {
19701
20209
  ref: flatListRef,
19702
- style: styles45.list,
20210
+ style: styles47.list,
19703
20211
  data: messagesList,
19704
20212
  keyExtractor,
19705
20213
  renderItem: renderMessage,
19706
20214
  contentContainerStyle: [
19707
- styles45.messagesList,
19708
- messagesList.length ? styles45.messagesListFill : styles45.messagesListCenter
20215
+ styles47.messagesList,
20216
+ messagesList.length ? styles47.messagesListFill : styles47.messagesListCenter
19709
20217
  ],
19710
- ListEmptyComponent: /* @__PURE__ */ jsxs39(View44, { style: styles45.emptyContainer, children: [
19711
- /* @__PURE__ */ jsx57(View44, { style: [styles45.emptyIconWrap, { backgroundColor: colors.primarySoft }], children: /* @__PURE__ */ jsx57(Icon, { name: "messages-square", size: 28, color: colors.primary, strokeWidth: 2 }) }),
19712
- /* @__PURE__ */ jsx57(Text36, { style: [styles45.emptyTitle, { color: colors.text }], children: t("noMessagesYet") || "No messages yet" }),
19713
- /* @__PURE__ */ jsx57(Text36, { style: [styles45.emptySubtitle, { color: colors.textSecondary }], children: t("noMessagesYetSubtitle", "Start the conversation below") })
20218
+ ListEmptyComponent: /* @__PURE__ */ jsxs40(View46, { style: styles47.emptyContainer, children: [
20219
+ /* @__PURE__ */ jsx61(View46, { style: [styles47.emptyIconWrap, { backgroundColor: colors.primarySoft }], children: /* @__PURE__ */ jsx61(Icon, { name: "messages-square", size: 28, color: colors.primary, strokeWidth: 2 }) }),
20220
+ /* @__PURE__ */ jsx61(Text37, { style: [styles47.emptyTitle, { color: colors.text }], children: t("noMessagesYet") || "No messages yet" }),
20221
+ /* @__PURE__ */ jsx61(Text37, { style: [styles47.emptySubtitle, { color: colors.textSecondary }], children: t("noMessagesYetSubtitle", "Start the conversation below") })
19714
20222
  ] }),
19715
20223
  onContentSizeChange: () => {
19716
20224
  var _a3;
@@ -19722,7 +20230,7 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
19722
20230
  removeClippedSubviews: true
19723
20231
  }
19724
20232
  ),
19725
- /* @__PURE__ */ jsx57(
20233
+ /* @__PURE__ */ jsx61(
19726
20234
  MessageComposer,
19727
20235
  {
19728
20236
  messageText,
@@ -19738,7 +20246,7 @@ function MessagesTab({ caseUuid, isCaseFinalized = false }) {
19738
20246
  )
19739
20247
  ] });
19740
20248
  }
19741
- var styles45 = StyleSheet46.create({
20249
+ var styles47 = StyleSheet48.create({
19742
20250
  container: {
19743
20251
  flex: 1
19744
20252
  },
@@ -19821,16 +20329,16 @@ var styles45 = StyleSheet46.create({
19821
20329
  });
19822
20330
 
19823
20331
  // src/RedactoPrivacyCenter/components/CaseDetails/CaseDetailsPage.tsx
19824
- import { jsx as jsx58, jsxs as jsxs40 } from "react/jsx-runtime";
20332
+ import { jsx as jsx62, jsxs as jsxs41 } from "react/jsx-runtime";
19825
20333
  function CaseDetailsPage() {
19826
20334
  var _a3, _b;
19827
- const { t } = useTranslation25();
20335
+ const { t } = useTranslation27();
19828
20336
  const { navigateTo, selectedCase, setSelectedCase, pendingCaseUuid } = useInternalNavigation();
19829
20337
  const { accessToken, refreshToken, email, organizationId, workspaceId, onError, updateTokens } = useAuth();
19830
20338
  const { colors } = useTheme();
19831
20339
  const { keyboardOffset } = usePrivacyCenterInsets();
19832
20340
  const requestTypeLabels = useRequestTypeLabels();
19833
- const [activeTab, setActiveTab] = useState23("request-details");
20341
+ const [activeTab, setActiveTab] = useState24("request-details");
19834
20342
  const authContext = useMemo20(() => ({
19835
20343
  accessToken,
19836
20344
  refreshToken,
@@ -19844,7 +20352,7 @@ function CaseDetailsPage() {
19844
20352
  email != null ? email : void 0,
19845
20353
  authContext
19846
20354
  );
19847
- useEffect18(() => {
20355
+ useEffect19(() => {
19848
20356
  if (!cases) return;
19849
20357
  if (cases.length === 0) {
19850
20358
  navigateTo("form");
@@ -19858,33 +20366,33 @@ function CaseDetailsPage() {
19858
20366
  navigateTo("form");
19859
20367
  }
19860
20368
  }, [cases, targetUuid, setSelectedCase, navigateTo]);
19861
- useEffect18(() => {
20369
+ useEffect19(() => {
19862
20370
  if (!selectedCase && !targetUuid && !isLoading) {
19863
20371
  navigateTo("form");
19864
20372
  }
19865
20373
  }, [selectedCase, targetUuid, isLoading, navigateTo]);
19866
20374
  if (!selectedCase) {
19867
- return /* @__PURE__ */ jsx58(View45, { style: styles46.centered, children: isLoading ? /* @__PURE__ */ jsx58(ActivityIndicator8, { size: "large", color: colors.primary }) : /* @__PURE__ */ jsx58(Text37, { style: [styles46.emptyText, { color: colors.textSecondary }], children: t("noCasesYet") || "No case selected" }) });
20375
+ return /* @__PURE__ */ jsx62(View47, { style: styles48.centered, children: isLoading ? /* @__PURE__ */ jsx62(ActivityIndicator8, { size: "large", color: colors.primary }) : /* @__PURE__ */ jsx62(Text38, { style: [styles48.emptyText, { color: colors.textSecondary }], children: t("noCasesYet") || "No case selected" }) });
19868
20376
  }
19869
20377
  const requestTypeLabel = requestTypeLabels[(_b = selectedCase.request_type) == null ? void 0 : _b.toUpperCase()] || selectedCase.request_type_display || formatCaseStatus(selectedCase.request_type || "");
19870
20378
  const tabs = [
19871
20379
  { id: "request-details", label: t("requestDetails") || "Request Details" },
19872
20380
  { id: "messages", label: t("messages") || "Messages" }
19873
20381
  ];
19874
- return /* @__PURE__ */ jsxs40(
20382
+ return /* @__PURE__ */ jsxs41(
19875
20383
  KeyboardAvoidingViewCompat,
19876
20384
  {
19877
- style: [styles46.container, { backgroundColor: colors.canvasSubtle }],
20385
+ style: [styles48.container, { backgroundColor: colors.canvasSubtle }],
19878
20386
  behavior: "padding",
19879
20387
  keyboardVerticalOffset: Platform7.OS === "ios" ? keyboardOffset : 0,
19880
20388
  children: [
19881
- /* @__PURE__ */ jsxs40(View45, { style: styles46.headerWrap, children: [
19882
- /* @__PURE__ */ jsx58(View45, { style: [styles46.heroCard, elevation.card, { backgroundColor: colors.surface }], children: /* @__PURE__ */ jsxs40(View45, { style: styles46.heroInner, children: [
19883
- /* @__PURE__ */ jsx58(View45, { style: [styles46.accent, { backgroundColor: getCaseStatusColor(selectedCase.status, colors) }] }),
19884
- /* @__PURE__ */ jsxs40(View45, { style: styles46.heroBody, children: [
19885
- /* @__PURE__ */ jsxs40(View45, { style: styles46.heroTopRow, children: [
19886
- /* @__PURE__ */ jsx58(View45, { style: [styles46.typeChip, { backgroundColor: withAlpha(getRequestTypeColor(selectedCase.request_type, colors), 0.12) }], children: /* @__PURE__ */ jsx58(Text37, { style: [styles46.typeChipText, { color: getRequestTypeColor(selectedCase.request_type, colors) }], numberOfLines: 1, children: requestTypeLabel }) }),
19887
- /* @__PURE__ */ jsx58(
20389
+ /* @__PURE__ */ jsxs41(View47, { style: styles48.headerWrap, children: [
20390
+ /* @__PURE__ */ jsx62(View47, { style: [styles48.heroCard, elevation.card, { backgroundColor: colors.surface }], children: /* @__PURE__ */ jsxs41(View47, { style: styles48.heroInner, children: [
20391
+ /* @__PURE__ */ jsx62(View47, { style: [styles48.accent, { backgroundColor: getCaseStatusColor(selectedCase.status, colors) }] }),
20392
+ /* @__PURE__ */ jsxs41(View47, { style: styles48.heroBody, children: [
20393
+ /* @__PURE__ */ jsxs41(View47, { style: styles48.heroTopRow, children: [
20394
+ /* @__PURE__ */ jsx62(View47, { style: [styles48.typeChip, { backgroundColor: withAlpha(getRequestTypeColor(selectedCase.request_type, colors), 0.12) }], children: /* @__PURE__ */ jsx62(Text38, { style: [styles48.typeChipText, { color: getRequestTypeColor(selectedCase.request_type, colors) }], numberOfLines: 1, children: requestTypeLabel }) }),
20395
+ /* @__PURE__ */ jsx62(
19888
20396
  PCBadge,
19889
20397
  {
19890
20398
  status: getCaseStatusVariant(selectedCase.status),
@@ -19893,10 +20401,10 @@ function CaseDetailsPage() {
19893
20401
  }
19894
20402
  )
19895
20403
  ] }),
19896
- /* @__PURE__ */ jsx58(Text37, { style: [styles46.caseId, { color: colors.text }], numberOfLines: 1, children: selectedCase.case_id })
20404
+ /* @__PURE__ */ jsx62(Text38, { style: [styles48.caseId, { color: colors.text }], numberOfLines: 1, children: selectedCase.case_id })
19897
20405
  ] })
19898
20406
  ] }) }),
19899
- /* @__PURE__ */ jsx58(
20407
+ /* @__PURE__ */ jsx62(
19900
20408
  Segmented,
19901
20409
  {
19902
20410
  options: tabs.map((tab) => ({ value: tab.id, label: tab.label })),
@@ -19905,18 +20413,18 @@ function CaseDetailsPage() {
19905
20413
  }
19906
20414
  )
19907
20415
  ] }),
19908
- /* @__PURE__ */ jsx58(View45, { style: styles46.tabContent, children: activeTab === "request-details" ? /* @__PURE__ */ jsx58(
20416
+ /* @__PURE__ */ jsx62(View47, { style: styles48.tabContent, children: activeTab === "request-details" ? /* @__PURE__ */ jsx62(
19909
20417
  RequestDetailsTab,
19910
20418
  {
19911
20419
  selectedCase,
19912
20420
  requestTypeLabel
19913
20421
  }
19914
- ) : /* @__PURE__ */ jsx58(MessagesTab, { caseUuid: selectedCase.uuid, isCaseFinalized: isTerminalCaseStatus(selectedCase.status) }) })
20422
+ ) : /* @__PURE__ */ jsx62(MessagesTab, { caseUuid: selectedCase.uuid, isCaseFinalized: isTerminalCaseStatus(selectedCase.status) }) })
19915
20423
  ]
19916
20424
  }
19917
20425
  );
19918
20426
  }
19919
- var styles46 = StyleSheet47.create({
20427
+ var styles48 = StyleSheet49.create({
19920
20428
  container: {
19921
20429
  flex: 1
19922
20430
  },
@@ -19981,36 +20489,36 @@ var styles46 = StyleSheet47.create({
19981
20489
  });
19982
20490
 
19983
20491
  // src/RedactoPrivacyCenter/components/NotificationHub/NotificationsScreen.tsx
19984
- import { useCallback as useCallback13, useEffect as useEffect19, useMemo as useMemo23, useRef as useRef12, useState as useState24 } from "react";
19985
- import { FlatList as FlatList3, RefreshControl as RefreshControl5, StyleSheet as StyleSheet52, Text as Text41, TouchableOpacity as TouchableOpacity21, View as View49 } from "react-native";
19986
- import { useTranslation as useTranslation27 } from "react-i18next";
20492
+ import { useCallback as useCallback14, useEffect as useEffect20, useMemo as useMemo23, useRef as useRef12, useState as useState25 } from "react";
20493
+ import { FlatList as FlatList3, RefreshControl as RefreshControl5, StyleSheet as StyleSheet54, Text as Text42, TouchableOpacity as TouchableOpacity22, View as View51 } from "react-native";
20494
+ import { useTranslation as useTranslation29 } from "react-i18next";
19987
20495
 
19988
20496
  // src/RedactoPrivacyCenter/components/NotificationHub/NotificationRow.tsx
19989
- import { StyleSheet as StyleSheet51, Text as Text40, TouchableOpacity as TouchableOpacity20, View as View48 } from "react-native";
19990
- import { useTranslation as useTranslation26 } from "react-i18next";
20497
+ import { StyleSheet as StyleSheet53, Text as Text41, TouchableOpacity as TouchableOpacity21, View as View50 } from "react-native";
20498
+ import { useTranslation as useTranslation28 } from "react-i18next";
19991
20499
 
19992
20500
  // src/RedactoPrivacyCenter/components/NotificationHub/NotificationCTAButton.tsx
19993
- import { StyleSheet as StyleSheet48, Text as Text38, TouchableOpacity as TouchableOpacity18 } from "react-native";
19994
- import { jsx as jsx59 } from "react/jsx-runtime";
20501
+ import { StyleSheet as StyleSheet50, Text as Text39, TouchableOpacity as TouchableOpacity19 } from "react-native";
20502
+ import { jsx as jsx63 } from "react/jsx-runtime";
19995
20503
  var NotificationCTAButton = ({ cta, onPress }) => {
19996
20504
  const { colors } = useTheme();
19997
20505
  const tone = cta.style === "danger" ? colors.error : colors.primary;
19998
20506
  const isPrimary = cta.style === "primary" || cta.style === "danger";
19999
- return /* @__PURE__ */ jsx59(
20000
- TouchableOpacity18,
20507
+ return /* @__PURE__ */ jsx63(
20508
+ TouchableOpacity19,
20001
20509
  {
20002
20510
  onPress,
20003
20511
  activeOpacity: 0.7,
20004
20512
  style: [
20005
- styles47.button,
20513
+ styles49.button,
20006
20514
  isPrimary ? { backgroundColor: tone } : { backgroundColor: colors.primarySoft }
20007
20515
  ],
20008
20516
  accessibilityRole: "button",
20009
- children: /* @__PURE__ */ jsx59(Text38, { style: [styles47.label, { color: isPrimary ? colors.primaryText : colors.primary }], numberOfLines: 1, children: cta.label })
20517
+ children: /* @__PURE__ */ jsx63(Text39, { style: [styles49.label, { color: isPrimary ? colors.primaryText : colors.primary }], numberOfLines: 1, children: cta.label })
20010
20518
  }
20011
20519
  );
20012
20520
  };
20013
- var styles47 = StyleSheet48.create({
20521
+ var styles49 = StyleSheet50.create({
20014
20522
  button: {
20015
20523
  paddingHorizontal: spacing.lg,
20016
20524
  paddingVertical: spacing.sm,
@@ -20025,8 +20533,8 @@ var styles47 = StyleSheet48.create({
20025
20533
  });
20026
20534
 
20027
20535
  // src/RedactoPrivacyCenter/components/NotificationHub/NotificationIcon.tsx
20028
- import { StyleSheet as StyleSheet49, View as View46 } from "react-native";
20029
- import { jsx as jsx60 } from "react/jsx-runtime";
20536
+ import { StyleSheet as StyleSheet51, View as View48 } from "react-native";
20537
+ import { jsx as jsx64 } from "react/jsx-runtime";
20030
20538
  var CATEGORY_ICON = {
20031
20539
  guardian: "user-round",
20032
20540
  consent: "clock",
@@ -20039,18 +20547,18 @@ var NotificationIcon = ({ notificationType, size = 40 }) => {
20039
20547
  var _a3;
20040
20548
  const category = (_a3 = TYPE_TO_ICON_CATEGORY[notificationType]) != null ? _a3 : "system";
20041
20549
  const color = ICON_COLORS[category];
20042
- return /* @__PURE__ */ jsx60(
20043
- View46,
20550
+ return /* @__PURE__ */ jsx64(
20551
+ View48,
20044
20552
  {
20045
20553
  style: [
20046
- styles48.wrap,
20554
+ styles50.wrap,
20047
20555
  { width: size, height: size, borderRadius: radii.md, backgroundColor: withAlpha(color, 0.13) }
20048
20556
  ],
20049
- children: /* @__PURE__ */ jsx60(Icon, { name: CATEGORY_ICON[category], size: Math.round(size * 0.5), color, strokeWidth: 2 })
20557
+ children: /* @__PURE__ */ jsx64(Icon, { name: CATEGORY_ICON[category], size: Math.round(size * 0.5), color, strokeWidth: 2 })
20050
20558
  }
20051
20559
  );
20052
20560
  };
20053
- var styles48 = StyleSheet49.create({
20561
+ var styles50 = StyleSheet51.create({
20054
20562
  wrap: {
20055
20563
  alignItems: "center",
20056
20564
  justifyContent: "center"
@@ -20059,8 +20567,8 @@ var styles48 = StyleSheet49.create({
20059
20567
 
20060
20568
  // src/RedactoPrivacyCenter/components/NotificationHub/SwipeableRow.tsx
20061
20569
  import { useMemo as useMemo21, useRef as useRef11 } from "react";
20062
- import { Animated as Animated13, PanResponder as PanResponder2, StyleSheet as StyleSheet50, Text as Text39, TouchableOpacity as TouchableOpacity19, View as View47 } from "react-native";
20063
- import { Fragment as Fragment14, jsx as jsx61, jsxs as jsxs41 } from "react/jsx-runtime";
20570
+ import { Animated as Animated13, PanResponder as PanResponder2, StyleSheet as StyleSheet52, Text as Text40, TouchableOpacity as TouchableOpacity20, View as View49 } from "react-native";
20571
+ import { Fragment as Fragment14, jsx as jsx65, jsxs as jsxs42 } from "react/jsx-runtime";
20064
20572
  var ACTION_WIDTH = 80;
20065
20573
  var CLAIM_THRESHOLD = 8;
20066
20574
  var SwipeableRow = ({ actions, background, children }) => {
@@ -20099,37 +20607,37 @@ var SwipeableRow = ({ actions, background, children }) => {
20099
20607
  [maxOpen]
20100
20608
  );
20101
20609
  if (actions.length === 0) {
20102
- return /* @__PURE__ */ jsx61(Fragment14, { children });
20610
+ return /* @__PURE__ */ jsx65(Fragment14, { children });
20103
20611
  }
20104
20612
  const runAction = (action) => {
20105
20613
  settle(0);
20106
20614
  action.onPress();
20107
20615
  };
20108
- return /* @__PURE__ */ jsxs41(View47, { style: styles49.root, children: [
20109
- /* @__PURE__ */ jsx61(View47, { style: styles49.actionsLayer, pointerEvents: "box-none", children: actions.map((action) => /* @__PURE__ */ jsxs41(
20110
- TouchableOpacity19,
20616
+ return /* @__PURE__ */ jsxs42(View49, { style: styles51.root, children: [
20617
+ /* @__PURE__ */ jsx65(View49, { style: styles51.actionsLayer, pointerEvents: "box-none", children: actions.map((action) => /* @__PURE__ */ jsxs42(
20618
+ TouchableOpacity20,
20111
20619
  {
20112
- style: [styles49.action, { width: ACTION_WIDTH, backgroundColor: toneColor2[action.tone] }],
20620
+ style: [styles51.action, { width: ACTION_WIDTH, backgroundColor: toneColor2[action.tone] }],
20113
20621
  onPress: () => runAction(action),
20114
20622
  activeOpacity: 0.85,
20115
20623
  accessibilityRole: "button",
20116
20624
  accessibilityLabel: action.label,
20117
20625
  children: [
20118
- /* @__PURE__ */ jsx61(Icon, { name: action.icon, size: 20, color: colors.primaryText, strokeWidth: 2.2 }),
20119
- /* @__PURE__ */ jsx61(Text39, { style: [styles49.actionLabel, { color: colors.primaryText }], numberOfLines: 1, children: action.label })
20626
+ /* @__PURE__ */ jsx65(Icon, { name: action.icon, size: 20, color: colors.primaryText, strokeWidth: 2.2 }),
20627
+ /* @__PURE__ */ jsx65(Text40, { style: [styles51.actionLabel, { color: colors.primaryText }], numberOfLines: 1, children: action.label })
20120
20628
  ]
20121
20629
  },
20122
20630
  action.key
20123
20631
  )) }),
20124
- /* @__PURE__ */ jsx61(Animated13.View, { style: [{ backgroundColor: background, transform: [{ translateX }] }], ...panResponder.panHandlers, children })
20632
+ /* @__PURE__ */ jsx65(Animated13.View, { style: [{ backgroundColor: background, transform: [{ translateX }] }], ...panResponder.panHandlers, children })
20125
20633
  ] });
20126
20634
  };
20127
- var styles49 = StyleSheet50.create({
20635
+ var styles51 = StyleSheet52.create({
20128
20636
  root: {
20129
20637
  position: "relative"
20130
20638
  },
20131
20639
  actionsLayer: {
20132
- ...StyleSheet50.absoluteFillObject,
20640
+ ...StyleSheet52.absoluteFillObject,
20133
20641
  flexDirection: "row",
20134
20642
  justifyContent: "flex-end"
20135
20643
  },
@@ -20162,10 +20670,10 @@ var formatTimeAgo = (dateString, t) => {
20162
20670
  };
20163
20671
 
20164
20672
  // src/RedactoPrivacyCenter/components/NotificationHub/NotificationRow.tsx
20165
- import { Fragment as Fragment15, jsx as jsx62, jsxs as jsxs42 } from "react/jsx-runtime";
20673
+ import { Fragment as Fragment15, jsx as jsx66, jsxs as jsxs43 } from "react/jsx-runtime";
20166
20674
  var NotificationRow = ({ notification, onPress, onMarkRead, onAcknowledge }) => {
20167
20675
  var _a3, _b;
20168
- const { t } = useTranslation26();
20676
+ const { t } = useTranslation28();
20169
20677
  const { colors } = useTheme();
20170
20678
  const isUnread = !notification.is_read;
20171
20679
  const statusLabel = notification.status_label_display || notification.status_label;
@@ -20192,35 +20700,35 @@ var NotificationRow = ({ notification, onPress, onMarkRead, onAcknowledge }) =>
20192
20700
  onPress: onAcknowledge
20193
20701
  });
20194
20702
  }
20195
- return /* @__PURE__ */ jsx62(SwipeableRow, { actions, background: colors.surface, children: /* @__PURE__ */ jsxs42(TouchableOpacity20, { onPress, activeOpacity: 0.6, accessibilityRole: "button", style: styles50.row, children: [
20196
- isUnread ? /* @__PURE__ */ jsx62(View48, { style: [styles50.accent, { backgroundColor: accent }] }) : null,
20197
- /* @__PURE__ */ jsx62(NotificationIcon, { notificationType: notification.notification_type, size: 36 }),
20198
- /* @__PURE__ */ jsxs42(View48, { style: styles50.content, children: [
20199
- /* @__PURE__ */ jsxs42(View48, { style: styles50.titleRow, children: [
20200
- /* @__PURE__ */ jsx62(
20201
- Text40,
20703
+ return /* @__PURE__ */ jsx66(SwipeableRow, { actions, background: colors.surface, children: /* @__PURE__ */ jsxs43(TouchableOpacity21, { onPress, activeOpacity: 0.6, accessibilityRole: "button", style: styles52.row, children: [
20704
+ isUnread ? /* @__PURE__ */ jsx66(View50, { style: [styles52.accent, { backgroundColor: accent }] }) : null,
20705
+ /* @__PURE__ */ jsx66(NotificationIcon, { notificationType: notification.notification_type, size: 36 }),
20706
+ /* @__PURE__ */ jsxs43(View50, { style: styles52.content, children: [
20707
+ /* @__PURE__ */ jsxs43(View50, { style: styles52.titleRow, children: [
20708
+ /* @__PURE__ */ jsx66(
20709
+ Text41,
20202
20710
  {
20203
- style: [styles50.title, { color: colors.text, fontWeight: isUnread ? "700" : "600" }],
20711
+ style: [styles52.title, { color: colors.text, fontWeight: isUnread ? "700" : "600" }],
20204
20712
  numberOfLines: 2,
20205
20713
  children: notification.title
20206
20714
  }
20207
20715
  ),
20208
- isUnread ? /* @__PURE__ */ jsx62(View48, { style: [styles50.unreadDot, { backgroundColor: colors.primary }] }) : null
20716
+ isUnread ? /* @__PURE__ */ jsx66(View50, { style: [styles52.unreadDot, { backgroundColor: colors.primary }] }) : null
20209
20717
  ] }),
20210
- /* @__PURE__ */ jsxs42(View48, { style: styles50.metaRow, children: [
20211
- statusLabel ? /* @__PURE__ */ jsxs42(Fragment15, { children: [
20212
- /* @__PURE__ */ jsx62(View48, { style: [styles50.statusDot, { backgroundColor: accent }] }),
20213
- /* @__PURE__ */ jsx62(Text40, { style: [styles50.metaText, { color: colors.textSecondary }], numberOfLines: 1, children: statusLabel }),
20214
- /* @__PURE__ */ jsx62(Text40, { style: [styles50.metaDivider, { color: colors.textSecondary }], children: "\xB7" })
20718
+ /* @__PURE__ */ jsxs43(View50, { style: styles52.metaRow, children: [
20719
+ statusLabel ? /* @__PURE__ */ jsxs43(Fragment15, { children: [
20720
+ /* @__PURE__ */ jsx66(View50, { style: [styles52.statusDot, { backgroundColor: accent }] }),
20721
+ /* @__PURE__ */ jsx66(Text41, { style: [styles52.metaText, { color: colors.textSecondary }], numberOfLines: 1, children: statusLabel }),
20722
+ /* @__PURE__ */ jsx66(Text41, { style: [styles52.metaDivider, { color: colors.textSecondary }], children: "\xB7" })
20215
20723
  ] }) : null,
20216
- /* @__PURE__ */ jsx62(Text40, { style: [styles50.metaText, { color: colors.textSecondary }], children: formatTimeAgo(notification.created_at, t) })
20724
+ /* @__PURE__ */ jsx66(Text41, { style: [styles52.metaText, { color: colors.textSecondary }], children: formatTimeAgo(notification.created_at, t) })
20217
20725
  ] }),
20218
- showAcknowledge && ackCta ? /* @__PURE__ */ jsx62(View48, { style: styles50.ackWrap, children: /* @__PURE__ */ jsx62(NotificationCTAButton, { cta: ackCta, onPress: onAcknowledge }) }) : null
20726
+ showAcknowledge && ackCta ? /* @__PURE__ */ jsx66(View50, { style: styles52.ackWrap, children: /* @__PURE__ */ jsx66(NotificationCTAButton, { cta: ackCta, onPress: onAcknowledge }) }) : null
20219
20727
  ] }),
20220
- /* @__PURE__ */ jsx62(View48, { style: styles50.chevron, children: /* @__PURE__ */ jsx62(Icon, { name: "chevron-right", size: 18, color: colors.textSecondary }) })
20728
+ /* @__PURE__ */ jsx66(View50, { style: styles52.chevron, children: /* @__PURE__ */ jsx66(Icon, { name: "chevron-right", size: 18, color: colors.textSecondary }) })
20221
20729
  ] }) });
20222
20730
  };
20223
- var styles50 = StyleSheet51.create({
20731
+ var styles52 = StyleSheet53.create({
20224
20732
  row: {
20225
20733
  flexDirection: "row",
20226
20734
  alignItems: "center",
@@ -20283,7 +20791,7 @@ var styles50 = StyleSheet51.create({
20283
20791
  });
20284
20792
 
20285
20793
  // src/RedactoPrivacyCenter/components/NotificationHub/useNotificationActions.ts
20286
- import { useCallback as useCallback12, useMemo as useMemo22 } from "react";
20794
+ import { useCallback as useCallback13, useMemo as useMemo22 } from "react";
20287
20795
  import { Linking as Linking2 } from "react-native";
20288
20796
  var useNotificationActions = () => {
20289
20797
  const { navigateTo, setSelectedCase } = useInternalNavigation();
@@ -20294,14 +20802,14 @@ var useNotificationActions = () => {
20294
20802
  () => ({ accessToken, refreshToken, onError, updateTokens }),
20295
20803
  [accessToken, refreshToken, onError, updateTokens]
20296
20804
  );
20297
- const hasAcknowledgeCTA = useCallback12(
20805
+ const hasAcknowledgeCTA = useCallback13(
20298
20806
  (notification) => {
20299
20807
  var _a3, _b;
20300
20808
  return (_b = (_a3 = notification.ctas) == null ? void 0 : _a3.some((cta) => cta.action_type === "acknowledge")) != null ? _b : false;
20301
20809
  },
20302
20810
  []
20303
20811
  );
20304
- const handleMarkRead = useCallback12(
20812
+ const handleMarkRead = useCallback13(
20305
20813
  async (notificationUuid) => {
20306
20814
  if (!organizationId || !workspaceId) return false;
20307
20815
  const result = await markNotificationRead(organizationId, workspaceId, notificationUuid, authContext, consentClient);
@@ -20309,12 +20817,12 @@ var useNotificationActions = () => {
20309
20817
  },
20310
20818
  [organizationId, workspaceId, authContext, consentClient]
20311
20819
  );
20312
- const handleMarkAllRead = useCallback12(async () => {
20820
+ const handleMarkAllRead = useCallback13(async () => {
20313
20821
  if (!organizationId || !workspaceId) return false;
20314
20822
  const result = await markAllRead(organizationId, workspaceId, authContext, consentClient);
20315
20823
  return result !== null;
20316
20824
  }, [organizationId, workspaceId, authContext, consentClient]);
20317
- const handleAcknowledge = useCallback12(
20825
+ const handleAcknowledge = useCallback13(
20318
20826
  async (notificationUuid) => {
20319
20827
  if (!organizationId || !workspaceId) return false;
20320
20828
  const result = await acknowledgeNotification(organizationId, workspaceId, notificationUuid, authContext, consentClient);
@@ -20322,7 +20830,7 @@ var useNotificationActions = () => {
20322
20830
  },
20323
20831
  [organizationId, workspaceId, authContext, consentClient]
20324
20832
  );
20325
- const handleCTAClick = useCallback12(
20833
+ const handleCTAClick = useCallback13(
20326
20834
  async (notification, cta) => {
20327
20835
  var _a3;
20328
20836
  if (cta.action_type === "acknowledge") {
@@ -20379,7 +20887,7 @@ var useNotificationActions = () => {
20379
20887
  };
20380
20888
 
20381
20889
  // src/RedactoPrivacyCenter/components/NotificationHub/NotificationsScreen.tsx
20382
- import { Fragment as Fragment16, jsx as jsx63, jsxs as jsxs43 } from "react/jsx-runtime";
20890
+ import { Fragment as Fragment16, jsx as jsx67, jsxs as jsxs44 } from "react/jsx-runtime";
20383
20891
  var EMPTY_SUMMARY = { total: 0, unread: 0, action_needed: 0, acknowledged: 0 };
20384
20892
  var READ_FILTER_TO_PARAM = {
20385
20893
  all: void 0,
@@ -20387,7 +20895,7 @@ var READ_FILTER_TO_PARAM = {
20387
20895
  read: true
20388
20896
  };
20389
20897
  var NotificationsScreen = () => {
20390
- const { t } = useTranslation27();
20898
+ const { t } = useTranslation29();
20391
20899
  const { colors } = useTheme();
20392
20900
  const { langParam } = useCurrentLanguage();
20393
20901
  const { listBottom } = usePrivacyCenterInsets();
@@ -20404,15 +20912,15 @@ var NotificationsScreen = () => {
20404
20912
  handleAcknowledge,
20405
20913
  handleCTAClick
20406
20914
  } = useNotificationActions();
20407
- const [notifications, setNotifications] = useState24([]);
20408
- const [summary, setSummary] = useState24(EMPTY_SUMMARY);
20409
- const [activeTab, setActiveTab] = useState24("all");
20410
- const [readFilter, setReadFilter] = useState24("all");
20411
- const [isLoading, setIsLoading] = useState24(true);
20412
- const [isRefreshing2, setIsRefreshing] = useState24(false);
20413
- const [filterOpen, setFilterOpen] = useState24(false);
20915
+ const [notifications, setNotifications] = useState25([]);
20916
+ const [summary, setSummary] = useState25(EMPTY_SUMMARY);
20917
+ const [activeTab, setActiveTab] = useState25("all");
20918
+ const [readFilter, setReadFilter] = useState25("all");
20919
+ const [isLoading, setIsLoading] = useState25(true);
20920
+ const [isRefreshing2, setIsRefreshing] = useState25(false);
20921
+ const [filterOpen, setFilterOpen] = useState25(false);
20414
20922
  const isFiltered = activeTab !== "all" || readFilter !== "all";
20415
- const loadNotifications = useCallback13(
20923
+ const loadNotifications = useCallback14(
20416
20924
  async (includeSummary = false, silent = false) => {
20417
20925
  if (!organizationId || !workspaceId) return;
20418
20926
  if (!silent) setIsLoading(true);
@@ -20442,18 +20950,21 @@ var NotificationsScreen = () => {
20442
20950
  },
20443
20951
  [organizationId, workspaceId, activeTab, readFilter, authContext, consentClient, langParam]
20444
20952
  );
20445
- useEffect19(() => {
20953
+ useEffect20(() => {
20446
20954
  loadNotifications(true);
20447
20955
  }, [loadNotifications]);
20448
20956
  const loadRef = useRef12(loadNotifications);
20449
20957
  loadRef.current = loadNotifications;
20450
- useEffect19(() => {
20958
+ const authContextRef = useRef12(authContext);
20959
+ authContextRef.current = authContext;
20960
+ useEffect20(() => {
20451
20961
  const id = setInterval(() => {
20962
+ if (isRefreshBlocked(authContextRef.current)) return;
20452
20963
  loadRef.current(false, true);
20453
20964
  }, POLL_INTERVAL);
20454
20965
  return () => clearInterval(id);
20455
20966
  }, []);
20456
- const onNotificationClick = useCallback13(
20967
+ const onNotificationClick = useCallback14(
20457
20968
  async (notification) => {
20458
20969
  const shouldMarkRead = !notification.is_read;
20459
20970
  const shouldAutoAcknowledge = !notification.is_acknowledged && !hasAcknowledgeCTA(notification);
@@ -20474,7 +20985,7 @@ var NotificationsScreen = () => {
20474
20985
  },
20475
20986
  [hasAcknowledgeCTA, handleAcknowledge, handleMarkRead]
20476
20987
  );
20477
- const onRowPress = useCallback13(
20988
+ const onRowPress = useCallback14(
20478
20989
  async (notification) => {
20479
20990
  var _a3;
20480
20991
  const linkCta = (_a3 = notification.ctas) == null ? void 0 : _a3.find((cta) => cta.action_type === "link" && cta.url);
@@ -20492,7 +21003,7 @@ var NotificationsScreen = () => {
20492
21003
  },
20493
21004
  [handleCTAClick, onNotificationClick]
20494
21005
  );
20495
- const onMarkReadRow = useCallback13(
21006
+ const onMarkReadRow = useCallback14(
20496
21007
  async (notification) => {
20497
21008
  if (notification.is_read) return;
20498
21009
  const ok = await handleMarkRead(notification.uuid);
@@ -20502,7 +21013,7 @@ var NotificationsScreen = () => {
20502
21013
  },
20503
21014
  [handleMarkRead]
20504
21015
  );
20505
- const onAcknowledgeRow = useCallback13(
21016
+ const onAcknowledgeRow = useCallback14(
20506
21017
  async (notification) => {
20507
21018
  if (notification.is_acknowledged) return;
20508
21019
  const ok = await handleAcknowledge(notification.uuid);
@@ -20519,7 +21030,14 @@ var NotificationsScreen = () => {
20519
21030
  },
20520
21031
  [handleAcknowledge]
20521
21032
  );
20522
- const onRefresh = useCallback13(() => {
21033
+ const onMarkAllRead = useCallback14(async () => {
21034
+ const ok = await handleMarkAllRead();
21035
+ if (!ok) return;
21036
+ setNotifications((prev) => prev.map((item) => ({ ...item, is_read: true })));
21037
+ setSummary((prev) => ({ ...prev, unread: 0 }));
21038
+ if (readFilter !== "all") loadNotifications(true, true);
21039
+ }, [handleMarkAllRead, readFilter, loadNotifications]);
21040
+ const onRefresh = useCallback14(() => {
20523
21041
  setIsRefreshing(true);
20524
21042
  loadNotifications(true, true);
20525
21043
  }, [loadNotifications]);
@@ -20527,14 +21045,14 @@ var NotificationsScreen = () => {
20527
21045
  () => groupByTime(notifications, (item) => item.created_at, classifyTime),
20528
21046
  [notifications, classifyTime]
20529
21047
  );
20530
- const header = /* @__PURE__ */ jsxs43(View49, { style: styles51.header, children: [
20531
- /* @__PURE__ */ jsxs43(View49, { style: styles51.titleRow, children: [
20532
- /* @__PURE__ */ jsx63(Text41, { style: [styles51.screenTitle, { color: colors.text }], children: t("notifications", { defaultValue: "Notifications" }) }),
20533
- /* @__PURE__ */ jsx63(
20534
- TouchableOpacity21,
21048
+ const header = /* @__PURE__ */ jsxs44(View51, { style: styles53.header, children: [
21049
+ /* @__PURE__ */ jsxs44(View51, { style: styles53.titleRow, children: [
21050
+ /* @__PURE__ */ jsx67(Text42, { style: [styles53.screenTitle, { color: colors.text }], children: t("notifications", { defaultValue: "Notifications" }) }),
21051
+ /* @__PURE__ */ jsx67(
21052
+ TouchableOpacity22,
20535
21053
  {
20536
21054
  style: [
20537
- styles51.filterBtn,
21055
+ styles53.filterBtn,
20538
21056
  {
20539
21057
  backgroundColor: isFiltered ? colors.primarySoft : colors.surface,
20540
21058
  borderColor: isFiltered ? colors.primary : colors.border
@@ -20543,30 +21061,30 @@ var NotificationsScreen = () => {
20543
21061
  onPress: () => setFilterOpen(true),
20544
21062
  accessibilityRole: "button",
20545
21063
  accessibilityLabel: t("filter") || "Filter",
20546
- children: /* @__PURE__ */ jsx63(Icon, { name: "sliders-horizontal", size: 18, color: isFiltered ? colors.primary : colors.text })
21064
+ children: /* @__PURE__ */ jsx67(Icon, { name: "sliders-horizontal", size: 18, color: isFiltered ? colors.primary : colors.text })
20547
21065
  }
20548
21066
  )
20549
21067
  ] }),
20550
- summary.unread > 0 ? /* @__PURE__ */ jsxs43(TouchableOpacity21, { style: styles51.markAllBtn, onPress: handleMarkAllRead, activeOpacity: 0.7, accessibilityRole: "button", children: [
20551
- /* @__PURE__ */ jsx63(Icon, { name: "check-check", size: 15, color: colors.primary, strokeWidth: 2.2 }),
20552
- /* @__PURE__ */ jsx63(Text41, { style: [styles51.markAllLabel, { color: colors.primary }], children: t("markAllAsRead") || "Mark all as read" })
21068
+ summary.unread > 0 ? /* @__PURE__ */ jsxs44(TouchableOpacity22, { style: styles53.markAllBtn, onPress: onMarkAllRead, activeOpacity: 0.7, accessibilityRole: "button", children: [
21069
+ /* @__PURE__ */ jsx67(Icon, { name: "check-check", size: 15, color: colors.primary, strokeWidth: 2.2 }),
21070
+ /* @__PURE__ */ jsx67(Text42, { style: [styles53.markAllLabel, { color: colors.primary }], children: t("markAllAsRead") || "Mark all as read" })
20553
21071
  ] }) : null
20554
21072
  ] });
20555
- return /* @__PURE__ */ jsxs43(Fragment16, { children: [
20556
- /* @__PURE__ */ jsx63(
21073
+ return /* @__PURE__ */ jsxs44(Fragment16, { children: [
21074
+ /* @__PURE__ */ jsx67(
20557
21075
  FlatList3,
20558
21076
  {
20559
21077
  data: sections,
20560
21078
  keyExtractor: (section2) => section2.key,
20561
- style: [styles51.list, { backgroundColor: colors.canvasSubtle }],
20562
- contentContainerStyle: [styles51.listContent, { flexGrow: 1, paddingBottom: listBottom }],
21079
+ style: [styles53.list, { backgroundColor: colors.canvasSubtle }],
21080
+ contentContainerStyle: [styles53.listContent, { flexGrow: 1, paddingBottom: listBottom }],
20563
21081
  ListHeaderComponent: header,
20564
21082
  showsVerticalScrollIndicator: false,
20565
- refreshControl: /* @__PURE__ */ jsx63(RefreshControl5, { refreshing: isRefreshing2, onRefresh, tintColor: colors.primary, colors: [colors.primary] }),
20566
- renderItem: ({ item: section2 }) => /* @__PURE__ */ jsxs43(View49, { style: styles51.section, children: [
20567
- /* @__PURE__ */ jsx63(Text41, { style: [styles51.sectionTitle, { color: colors.textSecondary }], children: section2.title }),
20568
- /* @__PURE__ */ jsx63(View49, { style: [styles51.cardShadow, elevation.card], children: /* @__PURE__ */ jsx63(View49, { style: [styles51.cardClip, { backgroundColor: colors.surface }], children: section2.data.map((item, index) => /* @__PURE__ */ jsxs43(View49, { children: [
20569
- /* @__PURE__ */ jsx63(
21083
+ refreshControl: /* @__PURE__ */ jsx67(RefreshControl5, { refreshing: isRefreshing2, onRefresh, tintColor: colors.primary, colors: [colors.primary] }),
21084
+ renderItem: ({ item: section2 }) => /* @__PURE__ */ jsxs44(View51, { style: styles53.section, children: [
21085
+ /* @__PURE__ */ jsx67(Text42, { style: [styles53.sectionTitle, { color: colors.textSecondary }], children: section2.title }),
21086
+ /* @__PURE__ */ jsx67(View51, { style: [styles53.cardShadow, elevation.card], children: /* @__PURE__ */ jsx67(View51, { style: [styles53.cardClip, { backgroundColor: colors.surface }], children: section2.data.map((item, index) => /* @__PURE__ */ jsxs44(View51, { children: [
21087
+ /* @__PURE__ */ jsx67(
20570
21088
  NotificationRow,
20571
21089
  {
20572
21090
  notification: item,
@@ -20575,19 +21093,19 @@ var NotificationsScreen = () => {
20575
21093
  onAcknowledge: () => onAcknowledgeRow(item)
20576
21094
  }
20577
21095
  ),
20578
- index < section2.data.length - 1 ? /* @__PURE__ */ jsx63(View49, { style: [styles51.separator, { backgroundColor: colors.hairline }] }) : null
21096
+ index < section2.data.length - 1 ? /* @__PURE__ */ jsx67(View51, { style: [styles53.separator, { backgroundColor: colors.hairline }] }) : null
20579
21097
  ] }, item.uuid)) }) })
20580
21098
  ] }),
20581
- ListEmptyComponent: isLoading ? /* @__PURE__ */ jsx63(View49, { style: styles51.skeletonWrap, children: /* @__PURE__ */ jsx63(View49, { style: [styles51.cardClip, elevation.card, { backgroundColor: colors.surface }], children: [0, 1, 2, 3].map((i) => /* @__PURE__ */ jsxs43(View49, { children: [
20582
- /* @__PURE__ */ jsxs43(View49, { style: styles51.skeletonRow, children: [
20583
- /* @__PURE__ */ jsx63(Skeleton, { width: 36, height: 36, radius: radii.md }),
20584
- /* @__PURE__ */ jsxs43(View49, { style: styles51.skeletonLines, children: [
20585
- /* @__PURE__ */ jsx63(Skeleton, { width: "70%", height: 13 }),
20586
- /* @__PURE__ */ jsx63(Skeleton, { width: "40%", height: 10 })
21099
+ ListEmptyComponent: isLoading ? /* @__PURE__ */ jsx67(View51, { style: styles53.skeletonWrap, children: /* @__PURE__ */ jsx67(View51, { style: [styles53.cardClip, elevation.card, { backgroundColor: colors.surface }], children: [0, 1, 2, 3].map((i) => /* @__PURE__ */ jsxs44(View51, { children: [
21100
+ /* @__PURE__ */ jsxs44(View51, { style: styles53.skeletonRow, children: [
21101
+ /* @__PURE__ */ jsx67(Skeleton, { width: 36, height: 36, radius: radii.md }),
21102
+ /* @__PURE__ */ jsxs44(View51, { style: styles53.skeletonLines, children: [
21103
+ /* @__PURE__ */ jsx67(Skeleton, { width: "70%", height: 13 }),
21104
+ /* @__PURE__ */ jsx67(Skeleton, { width: "40%", height: 10 })
20587
21105
  ] })
20588
21106
  ] }),
20589
- i < 3 ? /* @__PURE__ */ jsx63(View49, { style: [styles51.separator, { backgroundColor: colors.hairline }] }) : null
20590
- ] }, i)) }) }) : /* @__PURE__ */ jsx63(View49, { style: styles51.emptyWrap, children: /* @__PURE__ */ jsx63(
21107
+ i < 3 ? /* @__PURE__ */ jsx67(View51, { style: [styles53.separator, { backgroundColor: colors.hairline }] }) : null
21108
+ ] }, i)) }) }) : /* @__PURE__ */ jsx67(View51, { style: styles53.emptyWrap, children: /* @__PURE__ */ jsx67(
20591
21109
  PCEmpty,
20592
21110
  {
20593
21111
  iconName: "circle-check",
@@ -20596,14 +21114,14 @@ var NotificationsScreen = () => {
20596
21114
  }
20597
21115
  ) }),
20598
21116
  ListFooterComponentStyle: { marginTop: "auto" },
20599
- ListFooterComponent: /* @__PURE__ */ jsx63(Footer, {})
21117
+ ListFooterComponent: /* @__PURE__ */ jsx67(Footer, {})
20600
21118
  }
20601
21119
  ),
20602
- /* @__PURE__ */ jsx63(BottomSheet, { visible: filterOpen, onClose: () => setFilterOpen(false), title: t("filter") || "Filter", children: /* @__PURE__ */ jsxs43(View49, { style: styles51.filterSheet, children: [
20603
- /* @__PURE__ */ jsx63(Text41, { style: [styles51.filterGroupLabel, { color: colors.textSecondary }], children: t("category", { defaultValue: "Category" }) }),
20604
- /* @__PURE__ */ jsx63(View49, { style: styles51.chipWrap, children: filterTabs.map((tab) => {
21120
+ /* @__PURE__ */ jsx67(BottomSheet, { visible: filterOpen, onClose: () => setFilterOpen(false), title: t("filter") || "Filter", children: /* @__PURE__ */ jsxs44(View51, { style: styles53.filterSheet, children: [
21121
+ /* @__PURE__ */ jsx67(Text42, { style: [styles53.filterGroupLabel, { color: colors.textSecondary }], children: t("category", { defaultValue: "Category" }) }),
21122
+ /* @__PURE__ */ jsx67(View51, { style: styles53.chipWrap, children: filterTabs.map((tab) => {
20605
21123
  const selected = tab.key === activeTab;
20606
- return /* @__PURE__ */ jsx63(
21124
+ return /* @__PURE__ */ jsx67(
20607
21125
  FilterChip,
20608
21126
  {
20609
21127
  label: tab.label,
@@ -20613,12 +21131,12 @@ var NotificationsScreen = () => {
20613
21131
  tab.key
20614
21132
  );
20615
21133
  }) }),
20616
- /* @__PURE__ */ jsx63(Text41, { style: [styles51.filterGroupLabel, { color: colors.textSecondary, marginTop: spacing.lg }], children: t("readStatus", { defaultValue: "Status" }) }),
20617
- /* @__PURE__ */ jsx63(View49, { style: styles51.chipWrap, children: [
21134
+ /* @__PURE__ */ jsx67(Text42, { style: [styles53.filterGroupLabel, { color: colors.textSecondary, marginTop: spacing.lg }], children: t("readStatus", { defaultValue: "Status" }) }),
21135
+ /* @__PURE__ */ jsx67(View51, { style: styles53.chipWrap, children: [
20618
21136
  { key: "all", label: t("all") || "All" },
20619
21137
  { key: "unread", label: t("unread") || "Unread" },
20620
21138
  { key: "read", label: t("read", { defaultValue: "Read" }) }
20621
- ].map((opt) => /* @__PURE__ */ jsx63(
21139
+ ].map((opt) => /* @__PURE__ */ jsx67(
20622
21140
  FilterChip,
20623
21141
  {
20624
21142
  label: opt.label,
@@ -20627,13 +21145,13 @@ var NotificationsScreen = () => {
20627
21145
  },
20628
21146
  opt.key
20629
21147
  )) }),
20630
- /* @__PURE__ */ jsx63(
20631
- TouchableOpacity21,
21148
+ /* @__PURE__ */ jsx67(
21149
+ TouchableOpacity22,
20632
21150
  {
20633
- style: [styles51.applyBtn, { backgroundColor: colors.primary }],
21151
+ style: [styles53.applyBtn, { backgroundColor: colors.primary }],
20634
21152
  onPress: () => setFilterOpen(false),
20635
21153
  accessibilityRole: "button",
20636
- children: /* @__PURE__ */ jsx63(Text41, { style: [styles51.applyLabel, { color: colors.primaryText }], children: t("done", { defaultValue: "Done" }) })
21154
+ children: /* @__PURE__ */ jsx67(Text42, { style: [styles53.applyLabel, { color: colors.primaryText }], children: t("done", { defaultValue: "Done" }) })
20637
21155
  }
20638
21156
  )
20639
21157
  ] }) })
@@ -20641,25 +21159,25 @@ var NotificationsScreen = () => {
20641
21159
  };
20642
21160
  var FilterChip = ({ label, selected, onPress }) => {
20643
21161
  const { colors } = useTheme();
20644
- return /* @__PURE__ */ jsx63(
20645
- TouchableOpacity21,
21162
+ return /* @__PURE__ */ jsx67(
21163
+ TouchableOpacity22,
20646
21164
  {
20647
21165
  onPress,
20648
21166
  activeOpacity: 0.7,
20649
21167
  accessibilityRole: "button",
20650
21168
  accessibilityState: { selected },
20651
21169
  style: [
20652
- styles51.chip,
21170
+ styles53.chip,
20653
21171
  {
20654
21172
  backgroundColor: selected ? colors.primary : colors.surfaceAlt,
20655
21173
  borderColor: selected ? colors.primary : colors.border
20656
21174
  }
20657
21175
  ],
20658
- children: /* @__PURE__ */ jsx63(Text41, { style: [styles51.chipLabel, { color: selected ? colors.primaryText : colors.text }], children: label })
21176
+ children: /* @__PURE__ */ jsx67(Text42, { style: [styles53.chipLabel, { color: selected ? colors.primaryText : colors.text }], children: label })
20659
21177
  }
20660
21178
  );
20661
21179
  };
20662
- var styles51 = StyleSheet52.create({
21180
+ var styles53 = StyleSheet54.create({
20663
21181
  list: {
20664
21182
  flex: 1
20665
21183
  },
@@ -20693,7 +21211,7 @@ var styles51 = StyleSheet52.create({
20693
21211
  filterBtn: {
20694
21212
  width: 40,
20695
21213
  height: 40,
20696
- borderWidth: StyleSheet52.hairlineWidth,
21214
+ borderWidth: StyleSheet54.hairlineWidth,
20697
21215
  borderRadius: radii.md,
20698
21216
  justifyContent: "center",
20699
21217
  alignItems: "center"
@@ -20714,7 +21232,7 @@ var styles51 = StyleSheet52.create({
20714
21232
  overflow: "hidden"
20715
21233
  },
20716
21234
  separator: {
20717
- height: StyleSheet52.hairlineWidth,
21235
+ height: StyleSheet54.hairlineWidth,
20718
21236
  marginLeft: spacing.lg + 36 + spacing.md
20719
21237
  },
20720
21238
  emptyWrap: {
@@ -20752,7 +21270,7 @@ var styles51 = StyleSheet52.create({
20752
21270
  justifyContent: "center",
20753
21271
  paddingHorizontal: spacing.lg,
20754
21272
  borderRadius: radii.pill,
20755
- borderWidth: StyleSheet52.hairlineWidth
21273
+ borderWidth: StyleSheet54.hairlineWidth
20756
21274
  },
20757
21275
  chipLabel: {
20758
21276
  ...typography.label
@@ -20771,7 +21289,7 @@ var styles51 = StyleSheet52.create({
20771
21289
  });
20772
21290
 
20773
21291
  // src/RedactoPrivacyCenter/RedactoPrivacyCenter.tsx
20774
- import { Fragment as Fragment17, jsx as jsx64, jsxs as jsxs44 } from "react/jsx-runtime";
21292
+ import { Fragment as Fragment17, jsx as jsx68, jsxs as jsxs45 } from "react/jsx-runtime";
20775
21293
  var privacyCenterQueryClient = new QueryClient();
20776
21294
  function PrivacyCenterContent({ onBack }) {
20777
21295
  const { currentPage } = useInternalNavigation();
@@ -20781,24 +21299,24 @@ function PrivacyCenterContent({ onBack }) {
20781
21299
  const chromeMode = getPageChromeMode(currentPage);
20782
21300
  const canvasIsLight = isLightColor(colors.canvasSubtle);
20783
21301
  const barStyle = canvasIsLight ? "dark-content" : "light-content";
20784
- useEffect20(() => {
21302
+ useEffect21(() => {
20785
21303
  StatusBar2.setBarStyle(barStyle, true);
20786
21304
  if (Platform8.OS === "android") {
20787
21305
  setNavBarIconStyle(canvasIsLight ? "dark" : "light");
20788
21306
  }
20789
21307
  }, [barStyle, canvasIsLight]);
20790
- return /* @__PURE__ */ jsxs44(View50, { style: [styles52.container, { backgroundColor: colors.canvasSubtle }], children: [
20791
- /* @__PURE__ */ jsx64(StatusBar2, { barStyle, translucent: true }),
20792
- /* @__PURE__ */ jsx64(View50, { style: styles52.mainColumn, children: brandingLoading ? /* @__PURE__ */ jsx64(PCLoader, {}) : /* @__PURE__ */ jsxs44(Fragment17, { children: [
20793
- /* @__PURE__ */ jsx64(SlimTopBar, { mode: chromeMode, onBack }),
20794
- /* @__PURE__ */ jsx64(View50, { style: [styles52.content, { paddingBottom: insets.bottom }], children: status === "checking" ? /* @__PURE__ */ jsx64(PCLoader, {}) : status === "empty" ? /* @__PURE__ */ jsx64(PrivacyCenterEmptyState, {}) : /* @__PURE__ */ jsxs44(Fragment17, { children: [
20795
- currentPage === "home" && /* @__PURE__ */ jsx64(HomeHub, {}),
20796
- currentPage === "consent-manager" && /* @__PURE__ */ jsx64(ConsentManager, {}),
20797
- currentPage === "form" && /* @__PURE__ */ jsx64(FormPage, {}),
20798
- currentPage === "activity" && /* @__PURE__ */ jsx64(ActivitiesList, {}),
20799
- currentPage === "receipts" && /* @__PURE__ */ jsx64(ReceiptsList, {}),
20800
- currentPage === "case-details" && /* @__PURE__ */ jsx64(CaseDetailsPage, {}),
20801
- currentPage === "notifications" && /* @__PURE__ */ jsx64(NotificationsScreen, {})
21308
+ return /* @__PURE__ */ jsxs45(View52, { style: [styles54.container, { backgroundColor: colors.canvasSubtle }], children: [
21309
+ /* @__PURE__ */ jsx68(StatusBar2, { barStyle, translucent: true }),
21310
+ /* @__PURE__ */ jsx68(View52, { style: styles54.mainColumn, children: brandingLoading ? /* @__PURE__ */ jsx68(PCLoader, {}) : /* @__PURE__ */ jsxs45(Fragment17, { children: [
21311
+ /* @__PURE__ */ jsx68(SlimTopBar, { mode: chromeMode, onBack }),
21312
+ /* @__PURE__ */ jsx68(View52, { style: [styles54.content, { paddingBottom: insets.bottom }], children: status === "checking" ? /* @__PURE__ */ jsx68(PCLoader, {}) : status === "session-expired" ? /* @__PURE__ */ jsx68(PrivacyCenterSessionExpired, {}) : status === "empty" ? /* @__PURE__ */ jsx68(PrivacyCenterEmptyState, {}) : /* @__PURE__ */ jsxs45(Fragment17, { children: [
21313
+ currentPage === "home" && /* @__PURE__ */ jsx68(HomeHub, {}),
21314
+ currentPage === "consent-manager" && /* @__PURE__ */ jsx68(ConsentManager, {}),
21315
+ currentPage === "form" && /* @__PURE__ */ jsx68(FormPage, {}),
21316
+ currentPage === "activity" && /* @__PURE__ */ jsx68(ActivitiesList, {}),
21317
+ currentPage === "receipts" && /* @__PURE__ */ jsx68(ReceiptsList, {}),
21318
+ currentPage === "case-details" && /* @__PURE__ */ jsx68(CaseDetailsPage, {}),
21319
+ currentPage === "notifications" && /* @__PURE__ */ jsx68(NotificationsScreen, {})
20802
21320
  ] }) })
20803
21321
  ] }) })
20804
21322
  ] });
@@ -20823,7 +21341,7 @@ function RedactoPrivacyCenter({
20823
21341
  initialCaseUuid,
20824
21342
  onBack
20825
21343
  }) {
20826
- return /* @__PURE__ */ jsx64(SafeAreaBoundary, { children: /* @__PURE__ */ jsx64(KeyboardProviderCompat, { children: /* @__PURE__ */ jsx64(QueryClientProvider, { client: privacyCenterQueryClient, children: /* @__PURE__ */ jsx64(I18nextProvider, { i18n: i18n_default, children: /* @__PURE__ */ jsx64(ThemeProvider, { slug, baseUrl, children: /* @__PURE__ */ jsx64(BaseUrlProvider, { baseUrl, ledgerBaseUrl, children: /* @__PURE__ */ jsx64(
21344
+ return /* @__PURE__ */ jsx68(SafeAreaBoundary, { children: /* @__PURE__ */ jsx68(KeyboardProviderCompat, { children: /* @__PURE__ */ jsx68(QueryClientProvider, { client: privacyCenterQueryClient, children: /* @__PURE__ */ jsx68(I18nextProvider, { i18n: i18n_default, children: /* @__PURE__ */ jsx68(ThemeProvider, { slug, baseUrl, children: /* @__PURE__ */ jsx68(BaseUrlProvider, { baseUrl, ledgerBaseUrl, children: /* @__PURE__ */ jsx68(
20827
21345
  AuthProvider,
20828
21346
  {
20829
21347
  accessToken: accessToken != null ? accessToken : "",
@@ -20835,11 +21353,11 @@ function RedactoPrivacyCenter({
20835
21353
  workspaceUuid,
20836
21354
  slug,
20837
21355
  onError,
20838
- children: /* @__PURE__ */ jsx64(NavigationProvider, { initialPage, initialPendingCaseUuid: initialCaseUuid != null ? initialCaseUuid : null, children: /* @__PURE__ */ jsx64(DataAvailabilityProvider, { children: /* @__PURE__ */ jsx64(PageStatusProvider, { children: /* @__PURE__ */ jsx64(PrivacyCenterContent, { onBack }) }) }) })
21356
+ children: /* @__PURE__ */ jsx68(NavigationProvider, { initialPage, initialPendingCaseUuid: initialCaseUuid != null ? initialCaseUuid : null, children: /* @__PURE__ */ jsx68(SelectUserGate, { children: /* @__PURE__ */ jsx68(DataAvailabilityProvider, { children: /* @__PURE__ */ jsx68(PageStatusProvider, { children: /* @__PURE__ */ jsx68(PrivacyCenterContent, { onBack }) }) }) }) })
20839
21357
  }
20840
21358
  ) }) }) }) }) }) });
20841
21359
  }
20842
- var styles52 = StyleSheet53.create({
21360
+ var styles54 = StyleSheet55.create({
20843
21361
  container: {
20844
21362
  flex: 1
20845
21363
  },
@@ -20854,78 +21372,78 @@ var styles52 = StyleSheet53.create({
20854
21372
 
20855
21373
  // src/RedactoPrivacyCenter/components/SideMenu.tsx
20856
21374
  import {
20857
- StyleSheet as StyleSheet54,
20858
- Text as Text42,
20859
- TouchableOpacity as TouchableOpacity22,
20860
- View as View51
21375
+ StyleSheet as StyleSheet56,
21376
+ Text as Text43,
21377
+ TouchableOpacity as TouchableOpacity23,
21378
+ View as View53
20861
21379
  } from "react-native";
20862
- import { useTranslation as useTranslation28 } from "react-i18next";
21380
+ import { useTranslation as useTranslation30 } from "react-i18next";
20863
21381
  import Svg2, { Path as Path2 } from "react-native-svg";
20864
- import { Fragment as Fragment18, jsx as jsx65, jsxs as jsxs45 } from "react/jsx-runtime";
21382
+ import { Fragment as Fragment18, jsx as jsx69, jsxs as jsxs46 } from "react/jsx-runtime";
20865
21383
  var MENU_ITEMS = [
20866
21384
  { page: "consent-manager", labelKey: "consentManager", fallback: "Consent Manager", icon: "shield-check" },
20867
21385
  { page: "form", labelKey: "grievanceRequests", fallback: "Privacy Requests", icon: "message-circle-warning" },
20868
21386
  { page: "activity", labelKey: "activity", fallback: "Activity", icon: "activity" }
20869
21387
  ];
20870
21388
  function SideMenu({ onBack } = {}) {
20871
- const { t } = useTranslation28();
21389
+ const { t } = useTranslation30();
20872
21390
  const { currentPage, navigateTo } = useInternalNavigation();
20873
21391
  const { organizationName, email } = useAuth();
20874
21392
  const { colors } = useTheme();
20875
21393
  const orgInitial = organizationName ? organizationName.charAt(0).toUpperCase() : "R";
20876
21394
  const displayName = organizationName || "Organization";
20877
- return /* @__PURE__ */ jsxs45(View51, { style: [styles53.container, { backgroundColor: colors.surface }], children: [
20878
- /* @__PURE__ */ jsxs45(View51, { style: styles53.orgSection, children: [
20879
- /* @__PURE__ */ jsx65(View51, { style: [styles53.avatar, { backgroundColor: colors.primary }], children: /* @__PURE__ */ jsx65(Text42, { style: [styles53.avatarText, { color: colors.primaryText }], children: orgInitial }) }),
20880
- /* @__PURE__ */ jsxs45(View51, { style: styles53.orgInfo, children: [
20881
- /* @__PURE__ */ jsx65(Text42, { style: [styles53.orgName, { color: colors.text }], numberOfLines: 1, children: displayName }),
20882
- email ? /* @__PURE__ */ jsx65(Text42, { style: [styles53.orgEmail, { color: colors.textSecondary }], numberOfLines: 1, children: email }) : null
21395
+ return /* @__PURE__ */ jsxs46(View53, { style: [styles55.container, { backgroundColor: colors.surface }], children: [
21396
+ /* @__PURE__ */ jsxs46(View53, { style: styles55.orgSection, children: [
21397
+ /* @__PURE__ */ jsx69(View53, { style: [styles55.avatar, { backgroundColor: colors.primary }], children: /* @__PURE__ */ jsx69(Text43, { style: [styles55.avatarText, { color: colors.primaryText }], children: orgInitial }) }),
21398
+ /* @__PURE__ */ jsxs46(View53, { style: styles55.orgInfo, children: [
21399
+ /* @__PURE__ */ jsx69(Text43, { style: [styles55.orgName, { color: colors.text }], numberOfLines: 1, children: displayName }),
21400
+ email ? /* @__PURE__ */ jsx69(Text43, { style: [styles55.orgEmail, { color: colors.textSecondary }], numberOfLines: 1, children: email }) : null
20883
21401
  ] })
20884
21402
  ] }),
20885
- /* @__PURE__ */ jsx65(View51, { style: [styles53.divider, { backgroundColor: colors.border }] }),
20886
- /* @__PURE__ */ jsx65(View51, { style: styles53.menuSection, children: MENU_ITEMS.map((item) => {
21403
+ /* @__PURE__ */ jsx69(View53, { style: [styles55.divider, { backgroundColor: colors.border }] }),
21404
+ /* @__PURE__ */ jsx69(View53, { style: styles55.menuSection, children: MENU_ITEMS.map((item) => {
20887
21405
  const isActive = currentPage === item.page || item.page === "form" && currentPage === "case-details";
20888
- return /* @__PURE__ */ jsxs45(
20889
- TouchableOpacity22,
21406
+ return /* @__PURE__ */ jsxs46(
21407
+ TouchableOpacity23,
20890
21408
  {
20891
21409
  style: [
20892
- styles53.menuItem,
20893
- isActive && [styles53.menuItemActive, { backgroundColor: `${colors.primary}14` }]
21410
+ styles55.menuItem,
21411
+ isActive && [styles55.menuItemActive, { backgroundColor: `${colors.primary}14` }]
20894
21412
  ],
20895
21413
  onPress: () => navigateTo(item.page),
20896
21414
  activeOpacity: 0.7,
20897
21415
  accessibilityRole: "button",
20898
21416
  accessibilityState: { selected: isActive },
20899
21417
  children: [
20900
- /* @__PURE__ */ jsx65(View51, { style: styles53.menuIconWrap, children: /* @__PURE__ */ jsx65(Icon, { name: item.icon, size: 18, color: isActive ? colors.primary : colors.textSecondary }) }),
20901
- /* @__PURE__ */ jsx65(
20902
- Text42,
21418
+ /* @__PURE__ */ jsx69(View53, { style: styles55.menuIconWrap, children: /* @__PURE__ */ jsx69(Icon, { name: item.icon, size: 18, color: isActive ? colors.primary : colors.textSecondary }) }),
21419
+ /* @__PURE__ */ jsx69(
21420
+ Text43,
20903
21421
  {
20904
21422
  style: [
20905
- styles53.menuLabel,
21423
+ styles55.menuLabel,
20906
21424
  { color: isActive ? colors.primary : colors.text },
20907
- isActive && styles53.menuLabelActive
21425
+ isActive && styles55.menuLabelActive
20908
21426
  ],
20909
21427
  children: t(item.labelKey) || item.fallback
20910
21428
  }
20911
21429
  ),
20912
- isActive ? /* @__PURE__ */ jsx65(View51, { style: [styles53.activeIndicator, { backgroundColor: colors.primary }] }) : null
21430
+ isActive ? /* @__PURE__ */ jsx69(View53, { style: [styles55.activeIndicator, { backgroundColor: colors.primary }] }) : null
20913
21431
  ]
20914
21432
  },
20915
21433
  item.page
20916
21434
  );
20917
21435
  }) }),
20918
- onBack ? /* @__PURE__ */ jsxs45(Fragment18, { children: [
20919
- /* @__PURE__ */ jsx65(View51, { style: { flex: 1 } }),
20920
- /* @__PURE__ */ jsx65(View51, { style: [styles53.divider, { backgroundColor: colors.border }] }),
20921
- /* @__PURE__ */ jsxs45(
20922
- TouchableOpacity22,
21436
+ onBack ? /* @__PURE__ */ jsxs46(Fragment18, { children: [
21437
+ /* @__PURE__ */ jsx69(View53, { style: { flex: 1 } }),
21438
+ /* @__PURE__ */ jsx69(View53, { style: [styles55.divider, { backgroundColor: colors.border }] }),
21439
+ /* @__PURE__ */ jsxs46(
21440
+ TouchableOpacity23,
20923
21441
  {
20924
- style: styles53.backBtn,
21442
+ style: styles55.backBtn,
20925
21443
  onPress: () => navigateBack(onBack),
20926
21444
  activeOpacity: 0.7,
20927
21445
  children: [
20928
- /* @__PURE__ */ jsx65(Svg2, { width: 16, height: 16, viewBox: "0 0 24 24", fill: "none", children: onBack === "back" ? /* @__PURE__ */ jsx65(
21446
+ /* @__PURE__ */ jsx69(Svg2, { width: 16, height: 16, viewBox: "0 0 24 24", fill: "none", children: onBack === "back" ? /* @__PURE__ */ jsx69(
20929
21447
  Path2,
20930
21448
  {
20931
21449
  d: "M19 12H5m0 0l7 7m-7-7l7-7",
@@ -20934,7 +21452,7 @@ function SideMenu({ onBack } = {}) {
20934
21452
  strokeLinecap: "round",
20935
21453
  strokeLinejoin: "round"
20936
21454
  }
20937
- ) : /* @__PURE__ */ jsx65(
21455
+ ) : /* @__PURE__ */ jsx69(
20938
21456
  Path2,
20939
21457
  {
20940
21458
  d: "M9 21H5a2 2 0 01-2-2V5a2 2 0 012-2h4 M16 17l5-5-5-5 M21 12H9",
@@ -20944,14 +21462,14 @@ function SideMenu({ onBack } = {}) {
20944
21462
  strokeLinejoin: "round"
20945
21463
  }
20946
21464
  ) }),
20947
- /* @__PURE__ */ jsx65(Text42, { style: [styles53.backBtnLabel, { color: colors.textSecondary }], children: onBack === "back" ? t("back") || "Back" : t("signOut") || "Sign Out" })
21465
+ /* @__PURE__ */ jsx69(Text43, { style: [styles55.backBtnLabel, { color: colors.textSecondary }], children: onBack === "back" ? t("back") || "Back" : t("signOut") || "Sign Out" })
20948
21466
  ]
20949
21467
  }
20950
21468
  )
20951
21469
  ] }) : null
20952
21470
  ] });
20953
21471
  }
20954
- var styles53 = StyleSheet54.create({
21472
+ var styles55 = StyleSheet56.create({
20955
21473
  container: {
20956
21474
  flex: 1,
20957
21475
  paddingTop: 12
@@ -21037,42 +21555,68 @@ var styles53 = StyleSheet54.create({
21037
21555
  });
21038
21556
 
21039
21557
  // src/RedactoPrivacyCenter/components/Navbar.tsx
21040
- import { useCallback as useCallback14, useEffect as useEffect21, useState as useState25 } from "react";
21041
- import { StyleSheet as StyleSheet56, Text as Text44, TouchableOpacity as TouchableOpacity24, View as View53 } from "react-native";
21042
- import { useTranslation as useTranslation30 } from "react-i18next";
21558
+ import { useCallback as useCallback15, useEffect as useEffect22, useState as useState26 } from "react";
21559
+ import { StyleSheet as StyleSheet58, Text as Text45, TouchableOpacity as TouchableOpacity25, View as View55 } from "react-native";
21560
+ import { useTranslation as useTranslation32 } from "react-i18next";
21043
21561
  import Svg4, { Path as Path4 } from "react-native-svg";
21044
21562
 
21045
21563
  // src/RedactoPrivacyCenter/components/UserOrgMenu.tsx
21046
- import { Image as Image4, StyleSheet as StyleSheet55, Text as Text43, TouchableOpacity as TouchableOpacity23, View as View52 } from "react-native";
21047
- import { useTranslation as useTranslation29 } from "react-i18next";
21564
+ import { Image as Image4, StyleSheet as StyleSheet57, Text as Text44, TouchableOpacity as TouchableOpacity24, View as View54 } from "react-native";
21565
+ import { useTranslation as useTranslation31 } from "react-i18next";
21048
21566
  import Svg3, { Path as Path3 } from "react-native-svg";
21049
- import { jsx as jsx66, jsxs as jsxs46 } from "react/jsx-runtime";
21567
+ import { jsx as jsx70, jsxs as jsxs47 } from "react/jsx-runtime";
21050
21568
  var UserOrgMenu = ({ visible, onClose, onBack }) => {
21051
- const { t } = useTranslation29();
21569
+ const { t } = useTranslation31();
21052
21570
  const { organizationName, email } = useAuth();
21053
21571
  const { colors, branding } = useTheme();
21572
+ const { switchProfile } = useProfileSwitch();
21054
21573
  const brandName = (branding == null ? void 0 : branding.brand_name) || organizationName || t("privacyCenter") || "Privacy Center";
21055
21574
  const handleAction = () => {
21056
21575
  onClose();
21057
21576
  navigateBack(onBack);
21058
21577
  };
21059
- return /* @__PURE__ */ jsxs46(BottomSheet, { visible, onClose, title: t("account") || "Account", children: [
21060
- /* @__PURE__ */ jsxs46(View52, { style: styles54.identity, children: [
21061
- (branding == null ? void 0 : branding.logo_url) ? /* @__PURE__ */ jsx66(Image4, { source: { uri: branding.logo_url }, style: styles54.logo, resizeMode: "contain" }) : /* @__PURE__ */ jsx66(PCAvatar, { name: organizationName || brandName, imageUrl: branding == null ? void 0 : branding.icon_url, size: 52 }),
21062
- /* @__PURE__ */ jsxs46(View52, { style: styles54.identityText, children: [
21063
- /* @__PURE__ */ jsx66(Text43, { style: [styles54.orgName, { color: colors.text }], numberOfLines: 2, children: brandName }),
21064
- email ? /* @__PURE__ */ jsx66(Text43, { style: [styles54.email, { color: colors.textSecondary }], numberOfLines: 1, children: email }) : null
21578
+ return /* @__PURE__ */ jsxs47(BottomSheet, { visible, onClose, title: t("account") || "Account", children: [
21579
+ /* @__PURE__ */ jsxs47(View54, { style: styles56.identity, children: [
21580
+ (branding == null ? void 0 : branding.logo_url) ? /* @__PURE__ */ jsx70(Image4, { source: { uri: branding.logo_url }, style: styles56.logo, resizeMode: "contain" }) : /* @__PURE__ */ jsx70(PCAvatar, { name: organizationName || brandName, imageUrl: branding == null ? void 0 : branding.icon_url, size: 52 }),
21581
+ /* @__PURE__ */ jsxs47(View54, { style: styles56.identityText, children: [
21582
+ /* @__PURE__ */ jsx70(Text44, { style: [styles56.orgName, { color: colors.text }], numberOfLines: 2, children: brandName }),
21583
+ email ? /* @__PURE__ */ jsx70(Text44, { style: [styles56.email, { color: colors.textSecondary }], numberOfLines: 1, children: email }) : null
21065
21584
  ] })
21066
21585
  ] }),
21067
- onBack ? /* @__PURE__ */ jsxs46(
21068
- TouchableOpacity23,
21586
+ switchProfile ? /* @__PURE__ */ jsxs47(
21587
+ TouchableOpacity24,
21588
+ {
21589
+ style: [styles56.actionRow, { backgroundColor: withAlpha(colors.primary, 0.1) }],
21590
+ onPress: () => {
21591
+ onClose();
21592
+ switchProfile();
21593
+ },
21594
+ activeOpacity: 0.7,
21595
+ accessibilityRole: "button",
21596
+ children: [
21597
+ /* @__PURE__ */ jsx70(Svg3, { width: 18, height: 18, viewBox: "0 0 24 24", fill: "none", children: /* @__PURE__ */ jsx70(
21598
+ Path3,
21599
+ {
21600
+ d: "M16 3h5v5 M21 3l-7 7 M8 21H3v-5 M3 21l7-7",
21601
+ stroke: colors.primary,
21602
+ strokeWidth: 2,
21603
+ strokeLinecap: "round",
21604
+ strokeLinejoin: "round"
21605
+ }
21606
+ ) }),
21607
+ /* @__PURE__ */ jsx70(Text44, { style: [styles56.actionLabel, { color: colors.primary }], children: t("switchProfile") })
21608
+ ]
21609
+ }
21610
+ ) : null,
21611
+ onBack ? /* @__PURE__ */ jsxs47(
21612
+ TouchableOpacity24,
21069
21613
  {
21070
- style: [styles54.actionRow, { backgroundColor: withAlpha(onBack === "signout" ? colors.error : colors.primary, 0.1) }],
21614
+ style: [styles56.actionRow, { backgroundColor: withAlpha(onBack === "signout" ? colors.error : colors.primary, 0.1) }],
21071
21615
  onPress: handleAction,
21072
21616
  activeOpacity: 0.7,
21073
21617
  accessibilityRole: "button",
21074
21618
  children: [
21075
- /* @__PURE__ */ jsx66(Svg3, { width: 18, height: 18, viewBox: "0 0 24 24", fill: "none", children: onBack === "signout" ? /* @__PURE__ */ jsx66(
21619
+ /* @__PURE__ */ jsx70(Svg3, { width: 18, height: 18, viewBox: "0 0 24 24", fill: "none", children: onBack === "signout" ? /* @__PURE__ */ jsx70(
21076
21620
  Path3,
21077
21621
  {
21078
21622
  d: "M9 21H5a2 2 0 01-2-2V5a2 2 0 012-2h4 M16 17l5-5-5-5 M21 12H9",
@@ -21081,7 +21625,7 @@ var UserOrgMenu = ({ visible, onClose, onBack }) => {
21081
21625
  strokeLinecap: "round",
21082
21626
  strokeLinejoin: "round"
21083
21627
  }
21084
- ) : /* @__PURE__ */ jsx66(
21628
+ ) : /* @__PURE__ */ jsx70(
21085
21629
  Path3,
21086
21630
  {
21087
21631
  d: "M19 12H5m0 0l7 7m-7-7l7-7",
@@ -21091,13 +21635,13 @@ var UserOrgMenu = ({ visible, onClose, onBack }) => {
21091
21635
  strokeLinejoin: "round"
21092
21636
  }
21093
21637
  ) }),
21094
- /* @__PURE__ */ jsx66(Text43, { style: [styles54.actionLabel, { color: onBack === "signout" ? colors.error : colors.primary }], children: onBack === "signout" ? t("signOut") || "Sign Out" : t("back") || "Back" })
21638
+ /* @__PURE__ */ jsx70(Text44, { style: [styles56.actionLabel, { color: onBack === "signout" ? colors.error : colors.primary }], children: onBack === "signout" ? t("signOut") || "Sign Out" : t("back") || "Back" })
21095
21639
  ]
21096
21640
  }
21097
21641
  ) : null
21098
21642
  ] });
21099
21643
  };
21100
- var styles54 = StyleSheet55.create({
21644
+ var styles56 = StyleSheet57.create({
21101
21645
  identity: {
21102
21646
  flexDirection: "row",
21103
21647
  alignItems: "center",
@@ -21138,33 +21682,33 @@ var styles54 = StyleSheet55.create({
21138
21682
  });
21139
21683
 
21140
21684
  // src/RedactoPrivacyCenter/components/Navbar.tsx
21141
- import { Fragment as Fragment19, jsx as jsx67, jsxs as jsxs47 } from "react/jsx-runtime";
21685
+ import { Fragment as Fragment19, jsx as jsx71, jsxs as jsxs48 } from "react/jsx-runtime";
21142
21686
  function Navbar({ mode = "primary", onBack }) {
21143
- const { t } = useTranslation30();
21687
+ const { t } = useTranslation32();
21144
21688
  const { currentPage, navigateTo } = useInternalNavigation();
21145
21689
  const { organizationName, email } = useAuth();
21146
21690
  const { colors, branding } = useTheme();
21147
- const [locale, setLocale] = useState25(i18n_default.language || "en");
21148
- const [menuOpen, setMenuOpen] = useState25(false);
21691
+ const [locale, setLocale] = useState26(i18n_default.language || "en");
21692
+ const [menuOpen, setMenuOpen] = useState26(false);
21149
21693
  const unreadCount = useUnreadCount();
21150
21694
  const { status: pageStatus } = usePageStatus();
21151
21695
  const pageChrome = PAGE_CHROME_BY_PAGE[currentPage] || PAGE_CHROME_BY_PAGE["consent-manager"];
21152
21696
  const isDetail = mode === "detail";
21153
- useEffect21(() => {
21697
+ useEffect22(() => {
21154
21698
  const handleLanguageChanged = () => setLocale(i18n_default.language);
21155
21699
  i18n_default.on("languageChanged", handleLanguageChanged);
21156
21700
  return () => {
21157
21701
  i18n_default.off("languageChanged", handleLanguageChanged);
21158
21702
  };
21159
21703
  }, []);
21160
- const handleLanguageChange = useCallback14((value) => {
21704
+ const handleLanguageChange = useCallback15((value) => {
21161
21705
  i18n_default.changeLanguage(value);
21162
21706
  }, []);
21163
21707
  const brandLabel = (branding == null ? void 0 : branding.brand_name) || organizationName || t("privacyCenter") || "Privacy Center";
21164
21708
  const accountLabel = brandLabel || email || t("account") || "Account";
21165
- const brandLockup = /* @__PURE__ */ jsxs47(View53, { style: styles55.brandRow, children: [
21166
- /* @__PURE__ */ jsx67(PCAvatar, { name: organizationName || brandLabel, imageUrl: branding == null ? void 0 : branding.icon_url, size: 28 }),
21167
- /* @__PURE__ */ jsx67(Text44, { style: [styles55.brandText, { color: colors.text }], numberOfLines: 1, children: brandLabel })
21709
+ const brandLockup = /* @__PURE__ */ jsxs48(View55, { style: styles57.brandRow, children: [
21710
+ /* @__PURE__ */ jsx71(PCAvatar, { name: organizationName || brandLabel, imageUrl: branding == null ? void 0 : branding.icon_url, size: 28 }),
21711
+ /* @__PURE__ */ jsx71(Text45, { style: [styles57.brandText, { color: colors.text }], numberOfLines: 1, children: brandLabel })
21168
21712
  ] });
21169
21713
  const handleDetailBack = () => {
21170
21714
  if (currentPage === "case-details") {
@@ -21176,26 +21720,26 @@ function Navbar({ mode = "primary", onBack }) {
21176
21720
  }
21177
21721
  };
21178
21722
  if (isDetail) {
21179
- return /* @__PURE__ */ jsxs47(Fragment19, { children: [
21180
- /* @__PURE__ */ jsx67(
21181
- View53,
21723
+ return /* @__PURE__ */ jsxs48(Fragment19, { children: [
21724
+ /* @__PURE__ */ jsx71(
21725
+ View55,
21182
21726
  {
21183
21727
  style: [
21184
- styles55.container,
21185
- styles55.detailContainer,
21728
+ styles57.container,
21729
+ styles57.detailContainer,
21186
21730
  { backgroundColor: colors.background, borderBottomColor: colors.border, paddingTop: TOP_INSET + spacing.xs }
21187
21731
  ],
21188
- children: /* @__PURE__ */ jsxs47(View53, { style: styles55.detailRow, children: [
21189
- /* @__PURE__ */ jsx67(
21190
- TouchableOpacity24,
21732
+ children: /* @__PURE__ */ jsxs48(View55, { style: styles57.detailRow, children: [
21733
+ /* @__PURE__ */ jsx71(
21734
+ TouchableOpacity25,
21191
21735
  {
21192
- style: styles55.backButton,
21736
+ style: styles57.backButton,
21193
21737
  onPress: handleDetailBack,
21194
21738
  activeOpacity: 0.7,
21195
21739
  hitSlop: DEFAULT_HIT_SLOP,
21196
21740
  accessibilityRole: "button",
21197
21741
  accessibilityLabel: t("back") || "Back",
21198
- children: /* @__PURE__ */ jsx67(Svg4, { width: 22, height: 22, viewBox: "0 0 24 24", fill: "none", children: /* @__PURE__ */ jsx67(
21742
+ children: /* @__PURE__ */ jsx71(Svg4, { width: 22, height: 22, viewBox: "0 0 24 24", fill: "none", children: /* @__PURE__ */ jsx71(
21199
21743
  Path4,
21200
21744
  {
21201
21745
  d: "M19 12H5m0 0l7 7m-7-7l7-7",
@@ -21207,36 +21751,36 @@ function Navbar({ mode = "primary", onBack }) {
21207
21751
  ) })
21208
21752
  }
21209
21753
  ),
21210
- /* @__PURE__ */ jsxs47(View53, { style: styles55.detailTitleWrap, children: [
21211
- /* @__PURE__ */ jsx67(Text44, { style: [styles55.detailTitle, { color: colors.text }], numberOfLines: 1, children: t(pageChrome.titleKey) }),
21212
- pageStatus ? /* @__PURE__ */ jsx67(PCBadge, { status: pageStatus.tone, label: pageStatus.label }) : null
21754
+ /* @__PURE__ */ jsxs48(View55, { style: styles57.detailTitleWrap, children: [
21755
+ /* @__PURE__ */ jsx71(Text45, { style: [styles57.detailTitle, { color: colors.text }], numberOfLines: 1, children: t(pageChrome.titleKey) }),
21756
+ pageStatus ? /* @__PURE__ */ jsx71(PCBadge, { status: pageStatus.tone, label: pageStatus.label }) : null
21213
21757
  ] })
21214
21758
  ] })
21215
21759
  }
21216
21760
  ),
21217
- /* @__PURE__ */ jsx67(UserOrgMenu, { visible: menuOpen, onClose: () => setMenuOpen(false), onBack })
21761
+ /* @__PURE__ */ jsx71(UserOrgMenu, { visible: menuOpen, onClose: () => setMenuOpen(false), onBack })
21218
21762
  ] });
21219
21763
  }
21220
- return /* @__PURE__ */ jsxs47(Fragment19, { children: [
21221
- /* @__PURE__ */ jsxs47(
21222
- View53,
21764
+ return /* @__PURE__ */ jsxs48(Fragment19, { children: [
21765
+ /* @__PURE__ */ jsxs48(
21766
+ View55,
21223
21767
  {
21224
21768
  style: [
21225
- styles55.container,
21769
+ styles57.container,
21226
21770
  { backgroundColor: colors.background, borderBottomColor: colors.border, paddingTop: TOP_INSET + spacing.xs }
21227
21771
  ],
21228
21772
  children: [
21229
- /* @__PURE__ */ jsxs47(View53, { style: styles55.appBar, children: [
21230
- onBack ? /* @__PURE__ */ jsx67(
21231
- TouchableOpacity24,
21773
+ /* @__PURE__ */ jsxs48(View55, { style: styles57.appBar, children: [
21774
+ onBack ? /* @__PURE__ */ jsx71(
21775
+ TouchableOpacity25,
21232
21776
  {
21233
- style: styles55.backButton,
21777
+ style: styles57.backButton,
21234
21778
  onPress: () => navigateBack(onBack),
21235
21779
  activeOpacity: 0.7,
21236
21780
  hitSlop: DEFAULT_HIT_SLOP,
21237
21781
  accessibilityRole: "button",
21238
21782
  accessibilityLabel: onBack === "back" ? t("back") || "Back" : t("signOut") || "Sign Out",
21239
- children: /* @__PURE__ */ jsx67(Svg4, { width: 22, height: 22, viewBox: "0 0 24 24", fill: "none", children: /* @__PURE__ */ jsx67(
21783
+ children: /* @__PURE__ */ jsx71(Svg4, { width: 22, height: 22, viewBox: "0 0 24 24", fill: "none", children: /* @__PURE__ */ jsx71(
21240
21784
  Path4,
21241
21785
  {
21242
21786
  d: "M19 12H5m0 0l7 7m-7-7l7-7",
@@ -21248,39 +21792,39 @@ function Navbar({ mode = "primary", onBack }) {
21248
21792
  ) })
21249
21793
  }
21250
21794
  ) : null,
21251
- /* @__PURE__ */ jsx67(View53, { style: styles55.brandWrap, children: (branding == null ? void 0 : branding.logo_url) ? /* @__PURE__ */ jsx67(BrandImage, { uri: branding.logo_url, height: 34, maxWidth: 170, fallback: brandLockup }) : brandLockup }),
21252
- /* @__PURE__ */ jsxs47(View53, { style: styles55.actions, children: [
21253
- /* @__PURE__ */ jsx67(NotificationBell, { count: unreadCount, onPress: () => navigateTo("notifications") }),
21254
- /* @__PURE__ */ jsx67(PCSelect, { value: locale, options: languageOptions, onChange: handleLanguageChange, placeholder: t("language"), compact: true }),
21255
- /* @__PURE__ */ jsx67(
21256
- TouchableOpacity24,
21795
+ /* @__PURE__ */ jsx71(View55, { style: styles57.brandWrap, children: (branding == null ? void 0 : branding.logo_url) ? /* @__PURE__ */ jsx71(BrandImage, { uri: branding.logo_url, height: 34, maxWidth: 170, fallback: brandLockup }) : brandLockup }),
21796
+ /* @__PURE__ */ jsxs48(View55, { style: styles57.actions, children: [
21797
+ /* @__PURE__ */ jsx71(NotificationBell, { count: unreadCount, onPress: () => navigateTo("notifications") }),
21798
+ /* @__PURE__ */ jsx71(PCSelect, { value: locale, options: languageOptions, onChange: handleLanguageChange, placeholder: t("language"), compact: true }),
21799
+ /* @__PURE__ */ jsx71(
21800
+ TouchableOpacity25,
21257
21801
  {
21258
- style: styles55.avatarButton,
21802
+ style: styles57.avatarButton,
21259
21803
  onPress: () => setMenuOpen(true),
21260
21804
  activeOpacity: 0.7,
21261
21805
  hitSlop: DEFAULT_HIT_SLOP,
21262
21806
  accessibilityRole: "button",
21263
21807
  accessibilityLabel: accountLabel,
21264
- children: /* @__PURE__ */ jsx67(PCAvatar, { name: organizationName || accountLabel, imageUrl: branding == null ? void 0 : branding.icon_url, size: 28 })
21808
+ children: /* @__PURE__ */ jsx71(PCAvatar, { name: organizationName || accountLabel, imageUrl: branding == null ? void 0 : branding.icon_url, size: 28 })
21265
21809
  }
21266
21810
  )
21267
21811
  ] })
21268
21812
  ] }),
21269
- /* @__PURE__ */ jsx67(View53, { style: styles55.pageHeader, children: /* @__PURE__ */ jsxs47(View53, { style: styles55.titleRow, children: [
21270
- /* @__PURE__ */ jsx67(Text44, { style: [styles55.pageTitle, { color: colors.text }], numberOfLines: 1, children: t(pageChrome.titleKey) }),
21271
- pageStatus ? /* @__PURE__ */ jsx67(PCBadge, { status: pageStatus.tone, label: pageStatus.label }) : null
21813
+ /* @__PURE__ */ jsx71(View55, { style: styles57.pageHeader, children: /* @__PURE__ */ jsxs48(View55, { style: styles57.titleRow, children: [
21814
+ /* @__PURE__ */ jsx71(Text45, { style: [styles57.pageTitle, { color: colors.text }], numberOfLines: 1, children: t(pageChrome.titleKey) }),
21815
+ pageStatus ? /* @__PURE__ */ jsx71(PCBadge, { status: pageStatus.tone, label: pageStatus.label }) : null
21272
21816
  ] }) })
21273
21817
  ]
21274
21818
  }
21275
21819
  ),
21276
- /* @__PURE__ */ jsx67(UserOrgMenu, { visible: menuOpen, onClose: () => setMenuOpen(false), onBack })
21820
+ /* @__PURE__ */ jsx71(UserOrgMenu, { visible: menuOpen, onClose: () => setMenuOpen(false), onBack })
21277
21821
  ] });
21278
21822
  }
21279
- var styles55 = StyleSheet56.create({
21823
+ var styles57 = StyleSheet58.create({
21280
21824
  container: {
21281
21825
  paddingHorizontal: spacing.lg,
21282
21826
  paddingBottom: spacing.md,
21283
- borderBottomWidth: StyleSheet56.hairlineWidth
21827
+ borderBottomWidth: StyleSheet58.hairlineWidth
21284
21828
  },
21285
21829
  detailContainer: {
21286
21830
  paddingBottom: spacing.sm
@@ -21360,10 +21904,10 @@ var styles55 = StyleSheet56.create({
21360
21904
  });
21361
21905
 
21362
21906
  // src/RedactoPrivacyCenter/components/BottomTabBar.tsx
21363
- import { useState as useState26 } from "react";
21364
- import { Animated as Animated14, StyleSheet as StyleSheet57, Text as Text45, TouchableOpacity as TouchableOpacity25, View as View54 } from "react-native";
21365
- import { useTranslation as useTranslation31 } from "react-i18next";
21366
- import { jsx as jsx68, jsxs as jsxs48 } from "react/jsx-runtime";
21907
+ import { useState as useState27 } from "react";
21908
+ import { Animated as Animated14, StyleSheet as StyleSheet59, Text as Text46, TouchableOpacity as TouchableOpacity26, View as View56 } from "react-native";
21909
+ import { useTranslation as useTranslation33 } from "react-i18next";
21910
+ import { jsx as jsx72, jsxs as jsxs49 } from "react/jsx-runtime";
21367
21911
  var TAB_ITEMS = [
21368
21912
  { page: "consent-manager", labelKey: "consentManager", fallback: "Consents", icon: "shield-check" },
21369
21913
  { page: "form", labelKey: "grievanceRequests", fallback: "Requests", icon: "message-circle-warning" },
@@ -21374,10 +21918,10 @@ var PAD_H = spacing.lg;
21374
21918
  var PILL_WIDTH = 56;
21375
21919
  var PILL_HEIGHT = 34;
21376
21920
  function BottomTabBar({ showFooter = true }) {
21377
- const { t } = useTranslation31();
21921
+ const { t } = useTranslation33();
21378
21922
  const { currentPage, navigateTo } = useInternalNavigation();
21379
21923
  const { colors } = useTheme();
21380
- const [rowWidth, setRowWidth] = useState26(0);
21924
+ const [rowWidth, setRowWidth] = useState27(0);
21381
21925
  const innerWidth = Math.max(0, rowWidth - PAD_H * 2);
21382
21926
  const tabWidth = innerWidth > 0 ? innerWidth / TAB_ITEMS.length : 0;
21383
21927
  const activeIndex = TAB_ITEMS.findIndex(
@@ -21385,13 +21929,13 @@ function BottomTabBar({ showFooter = true }) {
21385
21929
  );
21386
21930
  const { translateX } = useAnimatedTabIndicator(Math.max(0, activeIndex), tabWidth);
21387
21931
  const onLayout = (e) => setRowWidth(e.nativeEvent.layout.width);
21388
- return /* @__PURE__ */ jsxs48(View54, { style: [styles56.wrapper, { backgroundColor: colors.canvasSubtle, borderTopColor: colors.hairline }], children: [
21389
- /* @__PURE__ */ jsxs48(View54, { style: styles56.container, onLayout, children: [
21390
- tabWidth > 0 && activeIndex >= 0 ? /* @__PURE__ */ jsx68(
21932
+ return /* @__PURE__ */ jsxs49(View56, { style: [styles58.wrapper, { backgroundColor: colors.canvasSubtle, borderTopColor: colors.hairline }], children: [
21933
+ /* @__PURE__ */ jsxs49(View56, { style: styles58.container, onLayout, children: [
21934
+ tabWidth > 0 && activeIndex >= 0 ? /* @__PURE__ */ jsx72(
21391
21935
  Animated14.View,
21392
21936
  {
21393
21937
  style: [
21394
- styles56.pill,
21938
+ styles58.pill,
21395
21939
  {
21396
21940
  width: PILL_WIDTH,
21397
21941
  left: PAD_H + (tabWidth - PILL_WIDTH) / 2,
@@ -21404,17 +21948,17 @@ function BottomTabBar({ showFooter = true }) {
21404
21948
  TAB_ITEMS.map((item) => {
21405
21949
  const isActive = currentPage === item.page || item.page === "form" && currentPage === "case-details";
21406
21950
  const label = t(item.labelKey) || item.fallback;
21407
- return /* @__PURE__ */ jsxs48(
21408
- TouchableOpacity25,
21951
+ return /* @__PURE__ */ jsxs49(
21952
+ TouchableOpacity26,
21409
21953
  {
21410
- style: styles56.tab,
21954
+ style: styles58.tab,
21411
21955
  onPress: () => navigateTo(item.page),
21412
21956
  activeOpacity: 0.7,
21413
21957
  accessibilityRole: "tab",
21414
21958
  accessibilityState: { selected: isActive },
21415
21959
  accessibilityLabel: label,
21416
21960
  children: [
21417
- /* @__PURE__ */ jsx68(View54, { style: styles56.iconWrap, children: /* @__PURE__ */ jsx68(
21961
+ /* @__PURE__ */ jsx72(View56, { style: styles58.iconWrap, children: /* @__PURE__ */ jsx72(
21418
21962
  Icon,
21419
21963
  {
21420
21964
  name: item.icon,
@@ -21423,10 +21967,10 @@ function BottomTabBar({ showFooter = true }) {
21423
21967
  strokeWidth: isActive ? 2.1 : 1.85
21424
21968
  }
21425
21969
  ) }),
21426
- /* @__PURE__ */ jsx68(
21427
- Text45,
21970
+ /* @__PURE__ */ jsx72(
21971
+ Text46,
21428
21972
  {
21429
- style: [styles56.tabLabel, { color: isActive ? colors.primary : colors.textSecondary }],
21973
+ style: [styles58.tabLabel, { color: isActive ? colors.primary : colors.textSecondary }],
21430
21974
  numberOfLines: 1,
21431
21975
  children: label
21432
21976
  }
@@ -21437,13 +21981,13 @@ function BottomTabBar({ showFooter = true }) {
21437
21981
  );
21438
21982
  })
21439
21983
  ] }),
21440
- showFooter ? /* @__PURE__ */ jsx68(Footer, { inline: true }) : null,
21441
- /* @__PURE__ */ jsx68(View54, { style: { height: BOTTOM_INSET } })
21984
+ showFooter ? /* @__PURE__ */ jsx72(Footer, { inline: true }) : null,
21985
+ /* @__PURE__ */ jsx72(View56, { style: { height: BOTTOM_INSET } })
21442
21986
  ] });
21443
21987
  }
21444
- var styles56 = StyleSheet57.create({
21988
+ var styles58 = StyleSheet59.create({
21445
21989
  wrapper: {
21446
- borderTopWidth: StyleSheet57.hairlineWidth
21990
+ borderTopWidth: StyleSheet59.hairlineWidth
21447
21991
  },
21448
21992
  container: {
21449
21993
  flexDirection: "row",