@redacto.io/consent-sdk-react 10.4.0-beta.1 → 11.0.0-beta.2

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,8 +5,13 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
6
  var __getProtoOf = Object.getPrototypeOf;
7
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __esm = (fn, res) => function __init() {
9
- return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
8
+ var __esm = (fn, res, err) => function __init() {
9
+ if (err) throw err[0];
10
+ try {
11
+ return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
12
+ } catch (e) {
13
+ throw err = [e], e;
14
+ }
10
15
  };
11
16
  var __export = (target, all) => {
12
17
  for (var name in all)
@@ -8204,7 +8209,7 @@ syncDayjsLocale(import_i18next.default.language);
8204
8209
  var i18n_default = import_i18next.default;
8205
8210
 
8206
8211
  // src/RedactoPrivacyCenter/PrivacyCenterLayout.tsx
8207
- var import_react49 = require("react");
8212
+ var import_react50 = require("react");
8208
8213
 
8209
8214
  // src/RedactoPrivacyCenter/context/OrganizationContext.tsx
8210
8215
  var import_react = require("react");
@@ -8227,7 +8232,7 @@ var useOrganization = () => {
8227
8232
  };
8228
8233
 
8229
8234
  // src/RedactoPrivacyCenter/context/DataAvailabilityContext.tsx
8230
- var import_react6 = require("react");
8235
+ var import_react7 = require("react");
8231
8236
 
8232
8237
  // src/shared/sandbox.ts
8233
8238
  var SANDBOX_TOKEN_HEADER = "X-Consent-Token";
@@ -9231,36 +9236,35 @@ var isJwtExpired = (token, bufferSeconds = 5 * 60) => {
9231
9236
  return true;
9232
9237
  }
9233
9238
  };
9234
- var isUserAuthenticated = (expectedSlug) => {
9239
+ var isUserAuthenticated = (_expectedSlug) => {
9235
9240
  if (typeof window === "undefined") return false;
9236
9241
  const accessToken = sessionStorage.getItem("access_token");
9237
9242
  const email = sessionStorage.getItem("email");
9238
- const orgSlug = sessionStorage.getItem("pc_org_slug");
9239
- if (!accessToken || !email || !orgSlug) {
9240
- return false;
9241
- }
9242
- return orgSlug === expectedSlug;
9243
+ return Boolean(accessToken && email);
9243
9244
  };
9244
- var getInitialState = (slug) => {
9245
+ var getInitialState = (_slug) => {
9245
9246
  if (typeof window === "undefined") return true;
9246
- return !isUserAuthenticated(slug);
9247
+ return !isUserAuthenticated();
9248
+ };
9249
+ var isSessionForOrganisation = (organizationId) => {
9250
+ const storedOrgId = sessionStorage.getItem("pc_org_id");
9251
+ return Boolean(storedOrgId) && (!organizationId || storedOrgId === organizationId);
9247
9252
  };
9248
- var checkAndRefreshAuth = async (expectedSlug, organizationId, workspaceId, consentClient) => {
9253
+ var checkAndRefreshAuth = async (_expectedSlug, organizationId, workspaceId, consentClient) => {
9249
9254
  if (typeof window === "undefined") return false;
9250
9255
  if (getSandboxConfig()) {
9251
9256
  return true;
9252
9257
  }
9253
9258
  const accessToken = sessionStorage.getItem("access_token");
9254
9259
  const email = sessionStorage.getItem("email");
9255
- const orgSlug = sessionStorage.getItem("pc_org_slug");
9256
- if (orgSlug && orgSlug !== expectedSlug) {
9260
+ if (!isSessionForOrganisation(organizationId)) {
9257
9261
  return false;
9258
9262
  }
9259
9263
  const needsRefresh = !accessToken || accessToken && isJwtExpired(accessToken, TOKEN_EXPIRY_BUFFER_SECONDS);
9260
- if (!needsRefresh && accessToken && email && orgSlug && orgSlug === expectedSlug) {
9264
+ if (!needsRefresh && accessToken && email) {
9261
9265
  return true;
9262
9266
  }
9263
- if (needsRefresh && email && orgSlug === expectedSlug) {
9267
+ if (needsRefresh && email) {
9264
9268
  const orgId = organizationId || sessionStorage.getItem("pc_org_id") || "";
9265
9269
  const wsId = workspaceId || sessionStorage.getItem("pc_workspace_id") || "";
9266
9270
  if (!orgId || !wsId) {
@@ -9359,7 +9363,7 @@ var signOutPrivacyCenter = () => {
9359
9363
  removeStorage(REFRESH_TOKEN_STORAGE_KEY);
9360
9364
  clearLegacyRefreshTokenCookie();
9361
9365
  };
9362
- var ensureValidToken = async (organizationId, workspaceId, slug, authContext, consentClient) => {
9366
+ var ensureValidToken = async (organizationId, workspaceId, _slug, authContext, consentClient) => {
9363
9367
  if (typeof window === "undefined") return null;
9364
9368
  const sandbox = getSandboxConfig();
9365
9369
  if (sandbox) {
@@ -9384,7 +9388,7 @@ var ensureValidToken = async (organizationId, workspaceId, slug, authContext, co
9384
9388
  return newToken;
9385
9389
  }
9386
9390
  isRefreshing = true;
9387
- refreshPromise = performTokenRefresh(organizationId, workspaceId, slug, authContext, consentClient);
9391
+ refreshPromise = performTokenRefresh(organizationId, workspaceId, authContext, consentClient);
9388
9392
  try {
9389
9393
  const newToken = await refreshPromise;
9390
9394
  return newToken;
@@ -9393,7 +9397,7 @@ var ensureValidToken = async (organizationId, workspaceId, slug, authContext, co
9393
9397
  refreshPromise = null;
9394
9398
  }
9395
9399
  };
9396
- var performTokenRefresh = async (organizationId, workspaceId, _slug, authContext, consentClient) => {
9400
+ var performTokenRefresh = async (organizationId, workspaceId, authContext, consentClient) => {
9397
9401
  var _a, _b, _c, _d, _e, _f, _g;
9398
9402
  const orgId = organizationId || sessionStorage.getItem("pc_org_id") || "";
9399
9403
  const wsId = workspaceId || sessionStorage.getItem("pc_workspace_id") || "";
@@ -9997,13 +10001,15 @@ var seedSessionStorage = (data) => {
9997
10001
  return;
9998
10002
  }
9999
10003
  if (data.accessToken) sessionStorage.setItem("access_token", data.accessToken);
10004
+ if (data.orgId && !data.workspaceId && sessionStorage.getItem("pc_org_id") !== data.orgId) {
10005
+ sessionStorage.removeItem("pc_workspace_id");
10006
+ }
10000
10007
  if (data.orgId) sessionStorage.setItem("pc_org_id", data.orgId);
10001
10008
  if (data.workspaceId) sessionStorage.setItem("pc_workspace_id", data.workspaceId);
10002
- if (data.slug) sessionStorage.setItem("pc_org_slug", data.slug);
10003
10009
  if (data.contact) sessionStorage.setItem("email", data.contact);
10004
10010
  };
10005
10011
  var configureSandbox = (props) => {
10006
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m;
10012
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;
10007
10013
  const token = (_a = props.token) == null ? void 0 : _a.trim();
10008
10014
  if (!token) {
10009
10015
  setSandboxConfig(null);
@@ -10014,21 +10020,18 @@ var configureSandbox = (props) => {
10014
10020
  const ucic = (_g = (_f = props.sandboxUcic) == null ? void 0 : _f.trim()) != null ? _g : "";
10015
10021
  const email = (_i = (_h = props.sandboxEmail) == null ? void 0 : _h.trim()) != null ? _i : "";
10016
10022
  const mobile = (_k = (_j = props.sandboxMobile) == null ? void 0 : _j.trim()) != null ? _k : "";
10017
- const slug = (_m = (_l = props.slug) == null ? void 0 : _l.trim()) != null ? _m : "";
10018
10023
  setSandboxConfig({
10019
10024
  token,
10020
10025
  ucic: ucic || void 0,
10021
10026
  email: email || void 0,
10022
10027
  mobile: mobile || void 0,
10023
10028
  organisationUuid,
10024
- workspaceUuid,
10025
- slug
10029
+ workspaceUuid
10026
10030
  });
10027
10031
  seedSessionStorage({
10028
10032
  accessToken: token,
10029
10033
  orgId: organisationUuid,
10030
10034
  workspaceId: workspaceUuid,
10031
- slug,
10032
10035
  // The principal precedence (UCIC > email > mobile) the server also applies.
10033
10036
  contact: ucic || email || mobile
10034
10037
  });
@@ -10044,7 +10047,6 @@ var syncJwtDataToSessionStorage = (accessToken) => {
10044
10047
  seedSessionStorage({
10045
10048
  orgId: typeof decoded.organisation_uuid === "string" ? decoded.organisation_uuid : void 0,
10046
10049
  workspaceId: typeof decoded.workspace_uuid === "string" ? decoded.workspace_uuid : void 0,
10047
- slug: typeof decoded.organisation_slug === "string" ? decoded.organisation_slug : void 0,
10048
10050
  contact: typeof contact === "string" ? contact : void 0
10049
10051
  });
10050
10052
  };
@@ -10059,7 +10061,6 @@ var AuthProvider = (props) => {
10059
10061
  sandboxMobile,
10060
10062
  organisationUuid,
10061
10063
  workspaceUuid,
10062
- slug,
10063
10064
  onError
10064
10065
  } = props;
10065
10066
  const [sandboxActive] = (0, import_react4.useState)(() => configureSandbox(props));
@@ -10143,7 +10144,7 @@ var AuthProvider = (props) => {
10143
10144
  }
10144
10145
  configureSandbox(props);
10145
10146
  return () => setSandboxConfig(null);
10146
- }, [sandboxActive, sandboxToken, sandboxUcic, sandboxEmail, sandboxMobile, organisationUuid, workspaceUuid, slug]);
10147
+ }, [sandboxActive, sandboxToken, sandboxUcic, sandboxEmail, sandboxMobile, organisationUuid, workspaceUuid]);
10147
10148
  const updateTokens = (0, import_react4.useCallback)((newAccessToken, newRefreshToken) => {
10148
10149
  setAccessToken(newAccessToken);
10149
10150
  if (newRefreshToken) {
@@ -10186,7 +10187,7 @@ var useAuth = () => {
10186
10187
  };
10187
10188
 
10188
10189
  // src/RedactoPrivacyCenter/context/BaseUrlContext.tsx
10189
- var import_react5 = require("react");
10190
+ var import_react6 = require("react");
10190
10191
 
10191
10192
  // src/shared/idempotency.ts
10192
10193
  var HEADER = "Idempotency-Key";
@@ -10246,11 +10247,66 @@ ${body}`;
10246
10247
  }
10247
10248
  };
10248
10249
 
10250
+ // src/shared/endpoints.ts
10251
+ var CONSENT_PATH = "/consent";
10252
+ var LEDGER_PATH = "/consent-ledger";
10253
+ var ABSOLUTE_HTTP_URL = /^https?:\/\/(?:\[[0-9a-f:.]+\]|[^\s/?#@:[\]]+)(?::\d+)?(?:\/[^\s?#]*)?$/i;
10254
+ var trimUrl = (value) => (value != null ? value : "").trim().replace(/\/+$/, "");
10255
+ var isConsentServerUrl = (trimmed) => ABSOLUTE_HTTP_URL.test(trimmed) && trimmed.endsWith(CONSENT_PATH);
10256
+ var isHostForm = (trimmed) => ABSOLUTE_HTTP_URL.test(trimmed) && !trimmed.endsWith(CONSENT_PATH);
10257
+ function resolveEndpoints(baseUrl, ledgerBaseUrl) {
10258
+ const trimmed = trimUrl(baseUrl);
10259
+ if (!isHostForm(trimmed)) {
10260
+ return { mode: "legacy", apiHost: void 0, baseUrl, ledgerBaseUrl };
10261
+ }
10262
+ const apiHost = trimmed.endsWith(LEDGER_PATH) ? trimmed.slice(0, -LEDGER_PATH.length) : trimmed;
10263
+ return {
10264
+ mode: "host",
10265
+ apiHost,
10266
+ baseUrl: `${apiHost}${CONSENT_PATH}`,
10267
+ ledgerBaseUrl: `${apiHost}${LEDGER_PATH}`
10268
+ };
10269
+ }
10270
+ var ENDPOINT_WARNINGS = {
10271
+ missingBaseUrl: "[Redacto] baseUrl is not set, so the SDK's built-in production default is used. Pass baseUrl: your API host.",
10272
+ consentServerBaseUrl: "[Redacto] baseUrl is the consent server URL (ending in /consent), which is deprecated. Pass the API host instead; the SDK derives the consent server and ledger URLs from it.",
10273
+ ledgerBaseUrl: "[Redacto] ledgerBaseUrl is deprecated. Pass the Redacto API host as baseUrl instead; the SDK then reaches the consent server and the ledger under it.",
10274
+ ledgerBaseUrlIgnored: "[Redacto] ledgerBaseUrl is ignored because baseUrl is the API host; the SDK reaches the ledger under that host. Remove ledgerBaseUrl.",
10275
+ slugIgnored: "[Redacto] slug is deprecated and ignored. The Privacy Center reads the organisation from the access token, or from organisationUuid and workspaceUuid. Remove slug."
10276
+ };
10277
+ var issuedWarnings = /* @__PURE__ */ new Set();
10278
+ var warnOnce = (warning) => {
10279
+ if (issuedWarnings.has(warning)) {
10280
+ return;
10281
+ }
10282
+ issuedWarnings.add(warning);
10283
+ console.warn(ENDPOINT_WARNINGS[warning]);
10284
+ };
10285
+ var warnEndpointUsage = (baseUrl, ledgerBaseUrl, { hasBuiltInDefault }) => {
10286
+ if (!baseUrl) {
10287
+ if (hasBuiltInDefault) {
10288
+ warnOnce("missingBaseUrl");
10289
+ }
10290
+ } else if (isConsentServerUrl(trimUrl(baseUrl))) {
10291
+ warnOnce("consentServerBaseUrl");
10292
+ }
10293
+ if (trimUrl(ledgerBaseUrl)) {
10294
+ warnOnce(isHostForm(trimUrl(baseUrl)) ? "ledgerBaseUrlIgnored" : "ledgerBaseUrl");
10295
+ }
10296
+ };
10297
+ var warnSlugDeprecated = () => {
10298
+ warnOnce("slugIgnored");
10299
+ };
10300
+
10249
10301
  // src/RedactoPrivacyCenter/api/client.ts
10250
10302
  function createConsentClient(baseUrl, ledgerBaseUrl) {
10251
- const ledgerConfigured = Boolean(ledgerBaseUrl);
10303
+ var _a;
10304
+ warnEndpointUsage(baseUrl, ledgerBaseUrl, { hasBuiltInDefault: false });
10305
+ const endpoints = resolveEndpoints(baseUrl, ledgerBaseUrl);
10306
+ const consentBaseUrl = endpoints.baseUrl;
10307
+ const ledgerConfigured = Boolean(endpoints.ledgerBaseUrl);
10252
10308
  const useLedger = () => ledgerConfigured;
10253
- const ledgerBase = (ledgerBaseUrl != null ? ledgerBaseUrl : "").replace(/\/$/, "");
10309
+ const ledgerBase = ((_a = endpoints.ledgerBaseUrl) != null ? _a : "").replace(/\/$/, "");
10254
10310
  async function privacyCenterApiFetch(url, options) {
10255
10311
  const { authToken, getAuthToken, headers = {}, ...fetchOptions } = options;
10256
10312
  const requestHeaders = new Headers();
@@ -10348,7 +10404,7 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
10348
10404
  }
10349
10405
  }
10350
10406
  function privacyCenterUrl(baseRequest, path) {
10351
- return `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center${path}`;
10407
+ return `${consentBaseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/dsar/privacy-center${path}`;
10352
10408
  }
10353
10409
  function ledgerUrl(baseRequest, path) {
10354
10410
  if (!useLedger()) {
@@ -10450,7 +10506,7 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
10450
10506
  * `channel: "sms"`.
10451
10507
  */
10452
10508
  async createOtp(organisationId, workspaceId, email, options, channel = "email") {
10453
- const url = `${baseUrl}/public/organisations/${organisationId}/workspaces/${workspaceId}/otp/create`;
10509
+ const url = `${consentBaseUrl}/public/organisations/${organisationId}/workspaces/${workspaceId}/otp/create`;
10454
10510
  return apiFetch(url, {
10455
10511
  ...options,
10456
10512
  method: "POST",
@@ -10468,7 +10524,7 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
10468
10524
  * then rejects it with 403 "Token scope is not permitted".
10469
10525
  */
10470
10526
  async verifyOtp(organisationId, workspaceId, otpId, otp, options, purpose = "login") {
10471
- const url = `${baseUrl}/public/organisations/${organisationId}/workspaces/${workspaceId}/otp/verify`;
10527
+ const url = `${consentBaseUrl}/public/organisations/${organisationId}/workspaces/${workspaceId}/otp/verify`;
10472
10528
  return apiFetch(url, {
10473
10529
  ...options,
10474
10530
  method: "POST",
@@ -10479,7 +10535,7 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
10479
10535
  * Exchange one-time token for JWT tokens (public)
10480
10536
  */
10481
10537
  async exchangeToken(token) {
10482
- const url = `${baseUrl}/public/tokens/token-exchange?token=${encodeURIComponent(token)}`;
10538
+ const url = `${consentBaseUrl}/public/tokens/token-exchange?token=${encodeURIComponent(token)}`;
10483
10539
  const response = await fetch(url, {
10484
10540
  method: "GET",
10485
10541
  headers: { Accept: "application/json" }
@@ -10500,7 +10556,7 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
10500
10556
  * Refresh OTP token (public)
10501
10557
  */
10502
10558
  async refreshOtpToken(organisationId, workspaceId, refreshToken, options) {
10503
- const url = `${baseUrl}/public/organisations/${organisationId}/workspaces/${workspaceId}/otp/refresh`;
10559
+ const url = `${consentBaseUrl}/public/organisations/${organisationId}/workspaces/${workspaceId}/otp/refresh`;
10504
10560
  return apiFetch(url, {
10505
10561
  ...options,
10506
10562
  method: "POST",
@@ -10511,7 +10567,7 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
10511
10567
  * Get products
10512
10568
  */
10513
10569
  async getProducts(baseRequest, skip = 0, limit = 10, options) {
10514
- const url = `${baseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/notice-management/products/?skip=${skip}&limit=${limit}`;
10570
+ const url = `${consentBaseUrl}/organisations/${baseRequest.organisationUuid}/workspaces/${baseRequest.workspaceUuid}/notice-management/products/?skip=${skip}&limit=${limit}`;
10515
10571
  return apiFetch(url, {
10516
10572
  ...options,
10517
10573
  getAuthToken: async () => baseRequest.authToken
@@ -10603,7 +10659,7 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
10603
10659
  * used with its `{ purpose_uuid, contact, ... }` payload.
10604
10660
  */
10605
10661
  async manageConsent(baseRequest, purposeId, contact, status, authToken, options, nominatorContact, dataElementUuids, productUuid, noticeUuid, dataElements, language, nominatorUuid) {
10606
- var _a;
10662
+ var _a2;
10607
10663
  if (!useLedger()) {
10608
10664
  const url2 = privacyCenterUrl(
10609
10665
  baseRequest,
@@ -10653,7 +10709,7 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
10653
10709
  notice_uuid: noticeUuid,
10654
10710
  // Sandbox has no JWT, so the ledger resolves the acting test principal
10655
10711
  // from this identity in the body; null (spread no-op) on the live JWT path.
10656
- ...(_a = sandboxBodyIdentity()) != null ? _a : {},
10712
+ ...(_a2 = sandboxBodyIdentity()) != null ? _a2 : {},
10657
10713
  // Pins the action to the card the user acted on. Without it the ledger
10658
10714
  // scopes by the notice and applies the answer to every product the
10659
10715
  // notice covers, so revoking a purpose held on two products withdrew
@@ -10996,30 +11052,43 @@ function createConsentClient(baseUrl, ledgerBaseUrl) {
10996
11052
  };
10997
11053
  }
10998
11054
 
11055
+ // src/shared/useResolvedEndpoints.ts
11056
+ var import_react5 = require("react");
11057
+ var useResolvedEndpoints = (baseUrl, ledgerBaseUrl, { warn = true, hasBuiltInDefault = true } = {}) => (0, import_react5.useMemo)(() => {
11058
+ if (warn) {
11059
+ warnEndpointUsage(baseUrl, ledgerBaseUrl, { hasBuiltInDefault });
11060
+ }
11061
+ return resolveEndpoints(baseUrl, ledgerBaseUrl);
11062
+ }, [baseUrl, ledgerBaseUrl, warn, hasBuiltInDefault]);
11063
+
10999
11064
  // src/RedactoPrivacyCenter/context/BaseUrlContext.tsx
11000
11065
  var import_jsx_runtime4 = require("react/jsx-runtime");
11001
- var BaseUrlContext = (0, import_react5.createContext)(null);
11066
+ var BaseUrlContext = (0, import_react6.createContext)(null);
11002
11067
  var BaseUrlProvider = ({
11003
11068
  children,
11004
11069
  baseUrl,
11005
11070
  ledgerBaseUrl
11006
11071
  }) => {
11007
- const consentClient = (0, import_react5.useMemo)(
11072
+ const endpoints = useResolvedEndpoints(baseUrl, ledgerBaseUrl, {
11073
+ hasBuiltInDefault: false
11074
+ });
11075
+ const consentClient = (0, import_react6.useMemo)(
11008
11076
  () => createConsentClient(baseUrl, ledgerBaseUrl),
11009
11077
  [baseUrl, ledgerBaseUrl]
11010
11078
  );
11011
- const value = (0, import_react5.useMemo)(
11079
+ const value = (0, import_react6.useMemo)(
11012
11080
  () => ({
11013
- baseUrl,
11014
- ledgerBaseUrl,
11015
- consentClient
11081
+ baseUrl: endpoints.baseUrl,
11082
+ ledgerBaseUrl: endpoints.ledgerBaseUrl,
11083
+ consentClient,
11084
+ apiHost: endpoints.apiHost
11016
11085
  }),
11017
- [baseUrl, ledgerBaseUrl, consentClient]
11086
+ [endpoints, consentClient]
11018
11087
  );
11019
11088
  return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(BaseUrlContext.Provider, { value, children });
11020
11089
  };
11021
11090
  var useBaseUrl = () => {
11022
- const context = (0, import_react5.useContext)(BaseUrlContext);
11091
+ const context = (0, import_react6.useContext)(BaseUrlContext);
11023
11092
  if (!context) {
11024
11093
  throw new Error(
11025
11094
  "useBaseUrl must be used within a BaseUrlProvider"
@@ -11030,7 +11099,7 @@ var useBaseUrl = () => {
11030
11099
 
11031
11100
  // src/RedactoPrivacyCenter/context/DataAvailabilityContext.tsx
11032
11101
  var import_jsx_runtime5 = require("react/jsx-runtime");
11033
- var DataAvailabilityContext = (0, import_react6.createContext)(null);
11102
+ var DataAvailabilityContext = (0, import_react7.createContext)(null);
11034
11103
  var DataAvailabilityProvider = ({ children }) => {
11035
11104
  var _a;
11036
11105
  const { organization } = useOrganization();
@@ -11039,20 +11108,20 @@ var DataAvailabilityProvider = ({ children }) => {
11039
11108
  const { langParam } = useCurrentLanguage();
11040
11109
  const organizationId = organization == null ? void 0 : organization.uuid;
11041
11110
  const workspaceId = (_a = organization == null ? void 0 : organization.workspaces[0]) == null ? void 0 : _a.uuid;
11042
- const authContext = (0, import_react6.useMemo)(
11111
+ const authContext = (0, import_react7.useMemo)(
11043
11112
  () => ({ accessToken, refreshToken, onError, updateTokens }),
11044
11113
  [accessToken, refreshToken, onError, updateTokens]
11045
11114
  );
11046
- const [status, setStatus] = (0, import_react6.useState)("checking");
11047
- const runIdRef = (0, import_react6.useRef)(0);
11048
- const mountedRef = (0, import_react6.useRef)(true);
11049
- (0, import_react6.useEffect)(() => {
11115
+ const [status, setStatus] = (0, import_react7.useState)("checking");
11116
+ const runIdRef = (0, import_react7.useRef)(0);
11117
+ const mountedRef = (0, import_react7.useRef)(true);
11118
+ (0, import_react7.useEffect)(() => {
11050
11119
  mountedRef.current = true;
11051
11120
  return () => {
11052
11121
  mountedRef.current = false;
11053
11122
  };
11054
11123
  }, []);
11055
- const runCheck = (0, import_react6.useCallback)(async () => {
11124
+ const runCheck = (0, import_react7.useCallback)(async () => {
11056
11125
  if (!organizationId || !workspaceId) return;
11057
11126
  const runId = ++runIdRef.current;
11058
11127
  setStatus("checking");
@@ -11106,7 +11175,7 @@ var DataAvailabilityProvider = ({ children }) => {
11106
11175
  consentsEmpty && casesEmpty && activitiesEmpty ? "empty" : "has-data"
11107
11176
  );
11108
11177
  }, [organizationId, workspaceId, authContext, consentClient, langParam]);
11109
- (0, import_react6.useEffect)(() => {
11178
+ (0, import_react7.useEffect)(() => {
11110
11179
  if (sessionExpired) {
11111
11180
  runIdRef.current += 1;
11112
11181
  setStatus("session-expired");
@@ -11116,14 +11185,14 @@ var DataAvailabilityProvider = ({ children }) => {
11116
11185
  void runCheck();
11117
11186
  }
11118
11187
  }, [organizationId, workspaceId, accessToken, runCheck, sessionExpired]);
11119
- const value = (0, import_react6.useMemo)(
11188
+ const value = (0, import_react7.useMemo)(
11120
11189
  () => ({ status }),
11121
11190
  [status]
11122
11191
  );
11123
11192
  return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(DataAvailabilityContext.Provider, { value, children });
11124
11193
  };
11125
11194
  var useDataAvailability = () => {
11126
- const ctx = (0, import_react6.useContext)(DataAvailabilityContext);
11195
+ const ctx = (0, import_react7.useContext)(DataAvailabilityContext);
11127
11196
  if (!ctx) {
11128
11197
  throw new Error(
11129
11198
  "useDataAvailability must be used within a DataAvailabilityProvider"
@@ -12051,9 +12120,9 @@ function PCButton({
12051
12120
  }
12052
12121
 
12053
12122
  // src/RedactoPrivacyCenter/ui/PCActionIcon.tsx
12054
- var import_react7 = require("react");
12123
+ var import_react8 = require("react");
12055
12124
  var import_jsx_runtime9 = require("react/jsx-runtime");
12056
- var PCActionIcon = (0, import_react7.forwardRef)(({
12125
+ var PCActionIcon = (0, import_react8.forwardRef)(({
12057
12126
  children,
12058
12127
  className = "",
12059
12128
  style = {},
@@ -12087,7 +12156,7 @@ var PCActionIcon = (0, import_react7.forwardRef)(({
12087
12156
  PCActionIcon.displayName = "PCActionIcon";
12088
12157
 
12089
12158
  // src/RedactoPrivacyCenter/ui/PCInput.tsx
12090
- var import_react8 = require("react");
12159
+ var import_react9 = require("react");
12091
12160
  var import_lucide_react = require("lucide-react");
12092
12161
  var import_jsx_runtime10 = require("react/jsx-runtime");
12093
12162
  function PCInput({
@@ -12106,9 +12175,9 @@ function PCInput({
12106
12175
  onChange,
12107
12176
  ...props
12108
12177
  }) {
12109
- const [showClear, setShowClear] = (0, import_react8.useState)(false);
12110
- const inputRef = (0, import_react8.useRef)(null);
12111
- (0, import_react8.useEffect)(() => {
12178
+ const [showClear, setShowClear] = (0, import_react9.useState)(false);
12179
+ const inputRef = (0, import_react9.useRef)(null);
12180
+ (0, import_react9.useEffect)(() => {
12112
12181
  if (clearable && value && String(value).length > 0) {
12113
12182
  setShowClear(true);
12114
12183
  } else {
@@ -12275,12 +12344,12 @@ function PCCheckbox({
12275
12344
  }
12276
12345
 
12277
12346
  // src/RedactoPrivacyCenter/ui/PCSelect.tsx
12278
- var import_react10 = require("react");
12347
+ var import_react11 = require("react");
12279
12348
  var import_lucide_react2 = require("lucide-react");
12280
12349
 
12281
12350
  // src/shared/useIsomorphicLayoutEffect.ts
12282
- var import_react9 = require("react");
12283
- var useIsomorphicLayoutEffect = typeof window === "undefined" ? import_react9.useEffect : import_react9.useLayoutEffect;
12351
+ var import_react10 = require("react");
12352
+ var useIsomorphicLayoutEffect = typeof window === "undefined" ? import_react10.useEffect : import_react10.useLayoutEffect;
12284
12353
 
12285
12354
  // src/RedactoPrivacyCenter/ui/PCSelect.tsx
12286
12355
  var import_jsx_runtime13 = require("react/jsx-runtime");
@@ -12305,13 +12374,13 @@ function PCSelect({
12305
12374
  clearAriaLabel = "Clear selection",
12306
12375
  showSelectedCheck = false
12307
12376
  }) {
12308
- const [isOpen, setIsOpen] = (0, import_react10.useState)(false);
12309
- const [searchQuery, setSearchQuery] = (0, import_react10.useState)("");
12310
- const [dropdownLayout, setDropdownLayout] = (0, import_react10.useState)(null);
12311
- const wrapperRef = (0, import_react10.useRef)(null);
12312
- const selectRef = (0, import_react10.useRef)(null);
12313
- const triggerRef = (0, import_react10.useRef)(null);
12314
- const dropdownRef = (0, import_react10.useRef)(null);
12377
+ const [isOpen, setIsOpen] = (0, import_react11.useState)(false);
12378
+ const [searchQuery, setSearchQuery] = (0, import_react11.useState)("");
12379
+ const [dropdownLayout, setDropdownLayout] = (0, import_react11.useState)(null);
12380
+ const wrapperRef = (0, import_react11.useRef)(null);
12381
+ const selectRef = (0, import_react11.useRef)(null);
12382
+ const triggerRef = (0, import_react11.useRef)(null);
12383
+ const dropdownRef = (0, import_react11.useRef)(null);
12315
12384
  const filteredOptions = searchable && searchQuery ? options.filter(
12316
12385
  (opt) => opt.label.toLowerCase().includes(searchQuery.toLowerCase())
12317
12386
  ) : options;
@@ -12384,7 +12453,7 @@ function PCSelect({
12384
12453
  clearable,
12385
12454
  dropdownMatchTriggerWidth
12386
12455
  ]);
12387
- (0, import_react10.useEffect)(() => {
12456
+ (0, import_react11.useEffect)(() => {
12388
12457
  const handleClickOutside = (event) => {
12389
12458
  if (selectRef.current && !selectRef.current.contains(event.target) && dropdownRef.current && !dropdownRef.current.contains(event.target)) {
12390
12459
  setIsOpen(false);
@@ -12605,7 +12674,7 @@ function PCSelect({
12605
12674
  }
12606
12675
 
12607
12676
  // src/RedactoPrivacyCenter/ui/PCModal.tsx
12608
- var import_react13 = require("react");
12677
+ var import_react14 = require("react");
12609
12678
  var import_lucide_react3 = require("lucide-react");
12610
12679
 
12611
12680
  // src/shared/appearance/constants.ts
@@ -12875,10 +12944,10 @@ var prefersReducedMotion = () => {
12875
12944
  };
12876
12945
 
12877
12946
  // src/shared/usePresence.ts
12878
- var import_react11 = require("react");
12947
+ var import_react12 = require("react");
12879
12948
  function usePresence(isOpen, exitMs) {
12880
- const [lingering, setLingering] = (0, import_react11.useState)(isOpen);
12881
- (0, import_react11.useEffect)(() => {
12949
+ const [lingering, setLingering] = (0, import_react12.useState)(isOpen);
12950
+ (0, import_react12.useEffect)(() => {
12882
12951
  if (isOpen) {
12883
12952
  setLingering(true);
12884
12953
  return;
@@ -12890,7 +12959,7 @@ function usePresence(isOpen, exitMs) {
12890
12959
  }
12891
12960
 
12892
12961
  // src/RedactoPrivacyCenter/context/AppearanceContext.tsx
12893
- var import_react12 = require("react");
12962
+ var import_react13 = require("react");
12894
12963
 
12895
12964
  // src/RedactoPrivacyCenter/styles/glass/tokens.ts
12896
12965
  var S = `[${APPEARANCE_ATTRIBUTE}="glass"]:not([${NOTICE_ROOT_ATTRIBUTE}])`;
@@ -13564,7 +13633,7 @@ var APPEARANCE_STYLESHEETS = {
13564
13633
 
13565
13634
  // src/RedactoPrivacyCenter/context/AppearanceContext.tsx
13566
13635
  var import_jsx_runtime14 = require("react/jsx-runtime");
13567
- var AppearanceContext = (0, import_react12.createContext)(DEFAULT_APPEARANCE);
13636
+ var AppearanceContext = (0, import_react13.createContext)(DEFAULT_APPEARANCE);
13568
13637
  var AppearanceProvider = ({ theme, children }) => {
13569
13638
  const resolved = resolveAppearance(theme);
13570
13639
  useIsomorphicLayoutEffect(() => {
@@ -13573,7 +13642,7 @@ var AppearanceProvider = ({ theme, children }) => {
13573
13642
  }, [resolved]);
13574
13643
  return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(AppearanceContext.Provider, { value: resolved, children });
13575
13644
  };
13576
- var useAppearance = () => (0, import_react12.useContext)(AppearanceContext);
13645
+ var useAppearance = () => (0, import_react13.useContext)(AppearanceContext);
13577
13646
  var useAppearanceLayout = () => getAppearanceLayout(useAppearance());
13578
13647
  var useAppearanceAttributes = () => {
13579
13648
  const appearance = useAppearance();
@@ -13594,7 +13663,7 @@ function PCModal({
13594
13663
  footer,
13595
13664
  closeAriaLabel = "Close modal"
13596
13665
  }) {
13597
- (0, import_react13.useEffect)(() => {
13666
+ (0, import_react14.useEffect)(() => {
13598
13667
  if (isOpen) {
13599
13668
  document.body.style.overflow = "hidden";
13600
13669
  } else {
@@ -13604,7 +13673,7 @@ function PCModal({
13604
13673
  document.body.style.overflow = "";
13605
13674
  };
13606
13675
  }, [isOpen]);
13607
- (0, import_react13.useEffect)(() => {
13676
+ (0, import_react14.useEffect)(() => {
13608
13677
  const handleEscape = (e) => {
13609
13678
  if (e.key === "Escape" && isOpen) {
13610
13679
  onClose();
@@ -13615,11 +13684,11 @@ function PCModal({
13615
13684
  }, [isOpen, onClose]);
13616
13685
  const { sheetOverlays } = useAppearanceLayout();
13617
13686
  const { mounted, closing } = usePresence(isOpen, sheetOverlays ? MOTION.dimMs : MOTION.fadeMs);
13618
- const lastOpen = (0, import_react13.useRef)({ title, children, footer });
13687
+ const lastOpen = (0, import_react14.useRef)({ title, children, footer });
13619
13688
  if (isOpen) {
13620
13689
  lastOpen.current = { title, children, footer };
13621
13690
  }
13622
- const dialogRef = (0, import_react13.useRef)(null);
13691
+ const dialogRef = (0, import_react14.useRef)(null);
13623
13692
  useIsomorphicLayoutEffect(() => {
13624
13693
  const dialog = dialogRef.current;
13625
13694
  if (!dialog) {
@@ -13695,9 +13764,9 @@ function PCModal({
13695
13764
  }
13696
13765
 
13697
13766
  // src/RedactoPrivacyCenter/ui/PCTable.tsx
13698
- var import_react14 = require("react");
13767
+ var import_react15 = require("react");
13699
13768
  var import_jsx_runtime16 = require("react/jsx-runtime");
13700
- var TableContext = (0, import_react14.createContext)({});
13769
+ var TableContext = (0, import_react15.createContext)({});
13701
13770
  function PCTable({ children, variant = "modern", className = "", style = {}, ...props }) {
13702
13771
  const tableStyle = {
13703
13772
  ...pcStyles.table,
@@ -13800,16 +13869,16 @@ function PCBadge({
13800
13869
  }
13801
13870
 
13802
13871
  // src/RedactoPrivacyCenter/ui/PCTooltip.tsx
13803
- var import_react16 = require("react");
13872
+ var import_react17 = require("react");
13804
13873
  var import_react_dom = require("react-dom");
13805
13874
 
13806
13875
  // src/RedactoPrivacyCenter/context/scopeState.ts
13807
- var import_react15 = require("react");
13876
+ var import_react16 = require("react");
13808
13877
  var PC_SCOPE_ATTRIBUTE = "data-redacto-pc-scope";
13809
- var ScopeContext = (0, import_react15.createContext)(null);
13810
- var usePrivacyCenterScope = () => (0, import_react15.useContext)(ScopeContext);
13878
+ var ScopeContext = (0, import_react16.createContext)(null);
13879
+ var usePrivacyCenterScope = () => (0, import_react16.useContext)(ScopeContext);
13811
13880
  var usePrivacyCenterScopeAttributes = () => {
13812
- const scope = (0, import_react15.useContext)(ScopeContext);
13881
+ const scope = (0, import_react16.useContext)(ScopeContext);
13813
13882
  if (!scope) {
13814
13883
  return {};
13815
13884
  }
@@ -13827,10 +13896,10 @@ function PCTooltip({
13827
13896
  color = "default",
13828
13897
  triggerStyle
13829
13898
  }) {
13830
- const [isVisible, setIsVisible] = (0, import_react16.useState)(false);
13831
- const [position, setPosition] = (0, import_react16.useState)({ top: 0, left: 0 });
13832
- const triggerRef = (0, import_react16.useRef)(null);
13833
- const tooltipRef = (0, import_react16.useRef)(null);
13899
+ const [isVisible, setIsVisible] = (0, import_react17.useState)(false);
13900
+ const [position, setPosition] = (0, import_react17.useState)({ top: 0, left: 0 });
13901
+ const triggerRef = (0, import_react17.useRef)(null);
13902
+ const tooltipRef = (0, import_react17.useRef)(null);
13834
13903
  const appearanceAttributes = useAppearanceAttributes();
13835
13904
  const scopeAttributes = usePrivacyCenterScopeAttributes();
13836
13905
  const updatePosition = () => {
@@ -13865,7 +13934,7 @@ function PCTooltip({
13865
13934
  top = Math.min(Math.max(top, viewportGutter), Math.max(viewportGutter, maxTop));
13866
13935
  setPosition({ top, left });
13867
13936
  };
13868
- (0, import_react16.useEffect)(() => {
13937
+ (0, import_react17.useEffect)(() => {
13869
13938
  if (isVisible) {
13870
13939
  updatePosition();
13871
13940
  window.addEventListener("scroll", updatePosition, true);
@@ -13923,7 +13992,7 @@ function PCTooltip({
13923
13992
  }
13924
13993
 
13925
13994
  // src/RedactoPrivacyCenter/ui/PCPopover.tsx
13926
- var import_react17 = require("react");
13995
+ var import_react18 = require("react");
13927
13996
  var import_jsx_runtime20 = require("react/jsx-runtime");
13928
13997
  function PCPopover({
13929
13998
  content,
@@ -13934,10 +14003,10 @@ function PCPopover({
13934
14003
  style = {},
13935
14004
  onOpen
13936
14005
  }) {
13937
- const [isOpen, setIsOpen] = (0, import_react17.useState)(false);
13938
- const [position, setPosition] = (0, import_react17.useState)({ top: 0, left: 0 });
13939
- const triggerRef = (0, import_react17.useRef)(null);
13940
- const popoverRef = (0, import_react17.useRef)(null);
14006
+ const [isOpen, setIsOpen] = (0, import_react18.useState)(false);
14007
+ const [position, setPosition] = (0, import_react18.useState)({ top: 0, left: 0 });
14008
+ const triggerRef = (0, import_react18.useRef)(null);
14009
+ const popoverRef = (0, import_react18.useRef)(null);
13941
14010
  const updatePosition = () => {
13942
14011
  if (!triggerRef.current || !popoverRef.current) return;
13943
14012
  const triggerRect = triggerRef.current.getBoundingClientRect();
@@ -13998,7 +14067,7 @@ function PCPopover({
13998
14067
  };
13999
14068
  }
14000
14069
  }, [isOpen, placement]);
14001
- (0, import_react17.useEffect)(() => {
14070
+ (0, import_react18.useEffect)(() => {
14002
14071
  const handleClickOutside = (event) => {
14003
14072
  if (triggerRef.current && !triggerRef.current.contains(event.target) && popoverRef.current && !popoverRef.current.contains(event.target)) {
14004
14073
  setIsOpen(false);
@@ -14083,7 +14152,7 @@ PCPopover.Trigger = ({ children }) => children;
14083
14152
  PCPopover.Content = ({ children }) => children;
14084
14153
 
14085
14154
  // src/RedactoPrivacyCenter/ui/PCAccordion.tsx
14086
- var import_react18 = require("react");
14155
+ var import_react19 = require("react");
14087
14156
  var import_jsx_runtime21 = require("react/jsx-runtime");
14088
14157
  function PCAccordion({ children, className = "", style = {}, ...props }) {
14089
14158
  const accordionStyle = {
@@ -14123,8 +14192,8 @@ function PCAccordionBody({
14123
14192
  open = false,
14124
14193
  ...props
14125
14194
  }) {
14126
- const [settledOpen, setSettledOpen] = (0, import_react18.useState)(open);
14127
- (0, import_react18.useEffect)(() => {
14195
+ const [settledOpen, setSettledOpen] = (0, import_react19.useState)(open);
14196
+ (0, import_react19.useEffect)(() => {
14128
14197
  if (!open) {
14129
14198
  setSettledOpen(false);
14130
14199
  return;
@@ -14152,7 +14221,7 @@ PCAccordion.Header = PCAccordionHeader;
14152
14221
  PCAccordion.Body = PCAccordionBody;
14153
14222
 
14154
14223
  // src/RedactoPrivacyCenter/ui/PCCollapse.tsx
14155
- var import_react19 = require("react");
14224
+ var import_react20 = require("react");
14156
14225
  var import_jsx_runtime22 = require("react/jsx-runtime");
14157
14226
  function PCCollapse({
14158
14227
  children,
@@ -14161,7 +14230,7 @@ function PCCollapse({
14161
14230
  style = {},
14162
14231
  ...props
14163
14232
  }) {
14164
- const [open, setOpen] = (0, import_react19.useState)(defaultOpen);
14233
+ const [open, setOpen] = (0, import_react20.useState)(defaultOpen);
14165
14234
  const toggle = () => setOpen(!open);
14166
14235
  const collapseStyle = {
14167
14236
  ...style
@@ -14213,7 +14282,7 @@ PCCollapse.Header = PCCollapseHeader;
14213
14282
  PCCollapse.Body = PCCollapseBody;
14214
14283
 
14215
14284
  // src/RedactoPrivacyCenter/ui/PCAvatar.tsx
14216
- var import_react20 = require("react");
14285
+ var import_react21 = require("react");
14217
14286
  var import_jsx_runtime23 = require("react/jsx-runtime");
14218
14287
  function getInitials(name) {
14219
14288
  return name.split(" ").map((n) => n[0]).join("").toUpperCase().slice(0, 2);
@@ -14239,8 +14308,8 @@ function PCAvatar({
14239
14308
  color = "primary",
14240
14309
  framed = true
14241
14310
  }) {
14242
- const [failed, setFailed] = (0, import_react20.useState)(false);
14243
- (0, import_react20.useEffect)(() => setFailed(false), [src]);
14311
+ const [failed, setFailed] = (0, import_react21.useState)(false);
14312
+ (0, import_react21.useEffect)(() => setFailed(false), [src]);
14244
14313
  const baseStyle = {
14245
14314
  ...pcStyles.avatar,
14246
14315
  ...size === "sm" && pcStyles.avatarSm,
@@ -14294,12 +14363,12 @@ function PCEmpty({
14294
14363
  }
14295
14364
 
14296
14365
  // src/RedactoPrivacyCenter/components/AppShell/AppShell.tsx
14297
- var import_react41 = require("react");
14366
+ var import_react42 = require("react");
14298
14367
  var import_react_i18next18 = require("react-i18next");
14299
14368
 
14300
14369
  // src/RedactoPrivacyCenter/context/LocaleContext.tsx
14301
- var import_react21 = require("react");
14302
- var LocaleContext = (0, import_react21.createContext)({
14370
+ var import_react22 = require("react");
14371
+ var LocaleContext = (0, import_react22.createContext)({
14303
14372
  locale: "en",
14304
14373
  setLocale: () => {
14305
14374
  }
@@ -14312,7 +14381,7 @@ var import_react_i18next4 = require("react-i18next");
14312
14381
  var poweredByRedacto_default = 'data:image/svg+xml,<svg width="81" height="27" viewBox="0 0 81 27" fill="none" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">%0A<rect width="81" height="27" fill="url(%23pattern0_23733_15486)"/>%0A<defs>%0A<pattern id="pattern0_23733_15486" patternContentUnits="objectBoundingBox" width="1" height="1">%0A<use xlink:href="%23image0_23733_15486" transform="matrix(0.000971817 0 0 0.00291545 -0.00826045 0)"/>%0A</pattern>%0A<image id="image0_23733_15486" width="1046" height="343" preserveAspectRatio="none" xlink:href="data:image/png;base64,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dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj4xMDc0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6VXNlckNvbW1lbnQ+U2NyZWVuc2hvdDwvZXhpZjpVc2VyQ29tbWVudD4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjQ5MDwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjE0NDwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6WFJlc29sdXRpb24+MTQ0PC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4Ky5Nh9gAAQABJREFUeAHsnQeA1MX1x2fL3V7vwHGANBHpChZEo2KPUSwRsIuIYsX+tyTKamKLNWqMkBg1lkSIJvaCiqL0Xu6QzhWu317vW/7vzezvbu+4svVud+/7g73d/e3Uz5uZ38ybNzNC4AIBEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAABEAglArpQSizSGlgCZrNDnzA2z1R10JSYXxKZUVZh62e1OWIcDn2sTjiiHEIXIRyOSIcQLuVGb6Pfmh0OR7NBp2+yC3sDvwx6Xb3Dpq936G31RoOu3tpobLAZjPW6aGtjTGlTsxD9msaNE1azWUfBCX7hAgEQAAEQAAEQAAEQAAEQAAEQCEEC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gARIgARIoOsQYMdC19HVMSXNyLD5bD1QcnJtXeNs2Zhw9DEtnGAGZD7COouf7dZRfaK/43KHE0y5DA4JkAAJkAAJkAAJkAAJkECnJcCOhU6rmrYJlpGxNWDLgYQp9XW2x0/wTobNNqvl3rGpkZ9IZ0Jd26jRNgmQAAmQAAmQAAmQAAmQAAmQgLsE2LHgLrEuaD7jU5vfzmXFEysqbY/bbMbJXTAIh4u8NiTEuKfnyMz182aMqz/8R34nARIgARIgARIgARIgARIgARLoOALsWOg41p3CJ2z6+PA/y6N/3lk7tarW8rBsaJjQKQQ7qhC23MBA20N9ewUun/VQWKHFwk0Yj4qLP5IACZAACZAACZAACZAACZBABxJgx0IHwu6MXqmOhnk5wYU5YSkHD9aeUV9rnCnHMk6QDoe4jpfXlmfYjG/9/Y2PEmMDP45OKd/70LW9qtmR0PGaoI8kQAIkQAIkQAIkQAIkQAIk4CoBdiy4SqqbmkPHw/TpS33S06dZtm41fAxjv29pkL9PkL+vT32tj6VHqMVSXyefYIulQe49hVOZfPwCbDb/avnIXZZg2PwDrbaa+kZrom98Y2WKYU03DOvWrUttS5ZMs7LjoJtGLgabBEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEiABEjAUwL/H4Qg+t9kjfqtAAAAAElFTkSuQmCC"/>%0A</defs>%0A</svg>%0A';
14313
14382
 
14314
14383
  // src/RedactoPrivacyCenter/context/BrandingContext.tsx
14315
- var import_react23 = require("react");
14384
+ var import_react24 = require("react");
14316
14385
 
14317
14386
  // src/constants.ts
14318
14387
  var DEFAULT_CONSENT_API_BASE_URL = "https://api.redacto.io/consent";
@@ -14325,11 +14394,15 @@ function originOf(url) {
14325
14394
  return match ? match[0] : "";
14326
14395
  }
14327
14396
  function userServiceBaseUrl(consentBaseUrl) {
14397
+ const endpoints = resolveEndpoints(consentBaseUrl);
14398
+ if (endpoints.mode === "host") {
14399
+ return endpoints.apiHost + USER_SERVICE_PATH;
14400
+ }
14328
14401
  const origin = originOf(consentBaseUrl) || originOf(DEFAULT_CONSENT_API_BASE_URL);
14329
14402
  return origin + USER_SERVICE_PATH;
14330
14403
  }
14331
- async function fetchOrgBranding(slug, baseUrl) {
14332
- const url = `${userServiceBaseUrl(baseUrl)}/public/org-branding/by-slug/${encodeURIComponent(slug)}`;
14404
+ async function fetchOrgBrandingForOrganisation(organisationUuid, baseUrl) {
14405
+ const url = `${userServiceBaseUrl(baseUrl)}/public/org-branding/${encodeURIComponent(organisationUuid)}`;
14333
14406
  return apiFetch(url, { method: "GET" });
14334
14407
  }
14335
14408
 
@@ -14736,7 +14809,7 @@ function clearBrandingTheme() {
14736
14809
  }
14737
14810
 
14738
14811
  // src/RedactoPrivacyCenter/context/settingsState.ts
14739
- var import_react22 = require("react");
14812
+ var import_react23 = require("react");
14740
14813
 
14741
14814
  // src/RedactoPrivacyCenter/settings/constants.ts
14742
14815
  var SETTINGS_SCHEMA_VERSION = 1;
@@ -14940,17 +15013,16 @@ var DEFAULT_CONTEXT = {
14940
15013
  status: "idle",
14941
15014
  isCustomised: false,
14942
15015
  organisation: { organisationUuid: null, workspaceUuid: null, status: "failed" },
14943
- slug: "",
14944
15016
  builtInSignIn: false,
14945
15017
  brandContact: EMPTY_BRAND_CONTACT
14946
15018
  };
14947
- var PrivacyCenterSettingsContext = (0, import_react22.createContext)(DEFAULT_CONTEXT);
14948
- var usePrivacyCenterSettingsContext = () => (0, import_react22.useContext)(PrivacyCenterSettingsContext);
14949
- var usePrivacyCenterSettings = () => (0, import_react22.useContext)(PrivacyCenterSettingsContext).settings;
15019
+ var PrivacyCenterSettingsContext = (0, import_react23.createContext)(DEFAULT_CONTEXT);
15020
+ var usePrivacyCenterSettingsContext = () => (0, import_react23.useContext)(PrivacyCenterSettingsContext);
15021
+ var usePrivacyCenterSettings = () => (0, import_react23.useContext)(PrivacyCenterSettingsContext).settings;
14950
15022
 
14951
15023
  // src/RedactoPrivacyCenter/context/BrandingContext.tsx
14952
15024
  var import_jsx_runtime25 = require("react/jsx-runtime");
14953
- var BrandingContext = (0, import_react23.createContext)(null);
15025
+ var BrandingContext = (0, import_react24.createContext)(null);
14954
15026
  var withIdentityOverride = (branding, settings) => {
14955
15027
  var _a;
14956
15028
  if (settings.inherit_identity) {
@@ -14967,18 +15039,20 @@ var withIdentityOverride = (branding, settings) => {
14967
15039
  };
14968
15040
  var BrandingProvider = ({
14969
15041
  children,
14970
- slug,
14971
15042
  baseUrl
14972
15043
  }) => {
14973
15044
  var _a;
14974
- const [branding, setBranding] = (0, import_react23.useState)(null);
14975
- const { branding: brandingSettings } = usePrivacyCenterSettings();
15045
+ const [branding, setBranding] = (0, import_react24.useState)(null);
15046
+ const { settings, organisation } = usePrivacyCenterSettingsContext();
15047
+ const brandingSettings = settings.branding;
15048
+ const organisationUuid = organisation.organisationUuid;
14976
15049
  const scope = usePrivacyCenterScope();
14977
15050
  const scopeId = (_a = scope == null ? void 0 : scope.id) != null ? _a : null;
14978
- (0, import_react23.useEffect)(() => {
14979
- if (!slug) return;
15051
+ (0, import_react24.useEffect)(() => {
15052
+ setBranding(null);
15053
+ if (!organisationUuid) return;
14980
15054
  let cancelled = false;
14981
- fetchOrgBranding(slug, baseUrl).then((data) => {
15055
+ fetchOrgBrandingForOrganisation(organisationUuid, baseUrl).then((data) => {
14982
15056
  if (!cancelled) setBranding(data);
14983
15057
  }).catch((error) => {
14984
15058
  console.warn("[RedactoPrivacyCenter] org branding fetch failed:", error);
@@ -14986,8 +15060,8 @@ var BrandingProvider = ({
14986
15060
  return () => {
14987
15061
  cancelled = true;
14988
15062
  };
14989
- }, [slug, baseUrl]);
14990
- const themeVars = (0, import_react23.useMemo)(
15063
+ }, [organisationUuid, baseUrl]);
15064
+ const themeVars = (0, import_react24.useMemo)(
14991
15065
  () => ({
14992
15066
  ...(branding == null ? void 0 : branding.theme) ? brandingThemeVars(branding.theme) : {},
14993
15067
  ...settingsThemeVars(brandingSettings)
@@ -14995,7 +15069,7 @@ var BrandingProvider = ({
14995
15069
  [branding, brandingSettings]
14996
15070
  );
14997
15071
  const themeKey = JSON.stringify(themeVars);
14998
- (0, import_react23.useEffect)(() => {
15072
+ (0, import_react24.useEffect)(() => {
14999
15073
  if (scopeId) {
15000
15074
  return applyScopedTheme(PC_SCOPE_ATTRIBUTE, scopeId, themeVars);
15001
15075
  }
@@ -15005,7 +15079,7 @@ var BrandingProvider = ({
15005
15079
  applyBrandingTheme(branding.theme);
15006
15080
  return clearBrandingTheme;
15007
15081
  }, [scopeId, themeKey]);
15008
- const value = (0, import_react23.useMemo)(
15082
+ const value = (0, import_react24.useMemo)(
15009
15083
  () => ({ branding: withIdentityOverride(branding, brandingSettings) }),
15010
15084
  [branding, brandingSettings]
15011
15085
  );
@@ -15013,12 +15087,12 @@ var BrandingProvider = ({
15013
15087
  };
15014
15088
  var useBranding = () => {
15015
15089
  var _a;
15016
- const ctx = (0, import_react23.useContext)(BrandingContext);
15090
+ const ctx = (0, import_react24.useContext)(BrandingContext);
15017
15091
  return (_a = ctx == null ? void 0 : ctx.branding) != null ? _a : null;
15018
15092
  };
15019
15093
 
15020
15094
  // src/RedactoPrivacyCenter/settings/copy.ts
15021
- var import_react24 = require("react");
15095
+ var import_react25 = require("react");
15022
15096
  var import_react_i18next3 = require("react-i18next");
15023
15097
 
15024
15098
  // src/RedactoPrivacyCenter/settings/placeholders.ts
@@ -15046,20 +15120,19 @@ var resolvePlaceholders = (text2, context) => {
15046
15120
  };
15047
15121
 
15048
15122
  // src/RedactoPrivacyCenter/settings/copy.ts
15049
- var nameFromSlug = (slug) => slug.split("-").filter(Boolean).map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()).join(" ");
15050
15123
  var usePlaceholderContext = () => {
15051
15124
  var _a, _b;
15052
15125
  const branding = useBranding();
15053
- const { slug, brandContact } = usePrivacyCenterSettingsContext();
15054
- const organizationName = (_b = (_a = (0, import_react24.useContext)(OrganizationContext)) == null ? void 0 : _a.organization) == null ? void 0 : _b.name;
15055
- const brand = (branding == null ? void 0 : branding.brand_name) || organizationName || nameFromSlug(slug);
15126
+ const { brandContact } = usePrivacyCenterSettingsContext();
15127
+ const organizationName = (_b = (_a = (0, import_react25.useContext)(OrganizationContext)) == null ? void 0 : _a.organization) == null ? void 0 : _b.name;
15128
+ const brand = (branding == null ? void 0 : branding.brand_name) || organizationName || "";
15056
15129
  const legal = brandContact.legal_entity_name || (branding == null ? void 0 : branding.legal_name) || null;
15057
- return (0, import_react24.useMemo)(() => ({ brand, legal }), [brand, legal]);
15130
+ return (0, import_react25.useMemo)(() => ({ brand, legal }), [brand, legal]);
15058
15131
  };
15059
15132
  var useSettingsCopy = () => {
15060
15133
  const { t } = (0, import_react_i18next3.useTranslation)();
15061
15134
  const context = usePlaceholderContext();
15062
- return (0, import_react24.useCallback)(
15135
+ return (0, import_react25.useCallback)(
15063
15136
  (value, extra) => {
15064
15137
  if (!value) {
15065
15138
  return "";
@@ -15208,11 +15281,11 @@ function Footer() {
15208
15281
  }
15209
15282
 
15210
15283
  // src/RedactoNoticeConsent/useMediaQuery.ts
15211
- var import_react25 = require("react");
15284
+ var import_react26 = require("react");
15212
15285
  var useMediaQuery = (query) => {
15213
15286
  const getMatches = () => typeof window !== "undefined" ? window.matchMedia(query).matches : false;
15214
- const [matches, setMatches] = (0, import_react25.useState)(getMatches);
15215
- (0, import_react25.useEffect)(() => {
15287
+ const [matches, setMatches] = (0, import_react26.useState)(getMatches);
15288
+ (0, import_react26.useEffect)(() => {
15216
15289
  if (typeof window === "undefined") return;
15217
15290
  const media = window.matchMedia(query);
15218
15291
  const listener = (e) => {
@@ -15235,7 +15308,7 @@ var useMediaQuery = (query) => {
15235
15308
  };
15236
15309
 
15237
15310
  // src/RedactoPrivacyCenter/components/AppShell/hooks/useSidebarState.ts
15238
- var import_react26 = require("react");
15311
+ var import_react27 = require("react");
15239
15312
  var STORAGE_KEY = "redacto-pc-sidebar-state";
15240
15313
  var EXPAND_MIN_WIDTH = "(min-width: 1024px)";
15241
15314
  function getDefaultState() {
@@ -15263,18 +15336,18 @@ function writeStored(value) {
15263
15336
  }
15264
15337
  }
15265
15338
  function useSidebarState() {
15266
- const [state, setStateRaw] = (0, import_react26.useState)(void 0);
15267
- (0, import_react26.useEffect)(() => {
15339
+ const [state, setStateRaw] = (0, import_react27.useState)(void 0);
15340
+ (0, import_react27.useEffect)(() => {
15268
15341
  var _a;
15269
15342
  setStateRaw((_a = readStored()) != null ? _a : getDefaultState());
15270
15343
  }, []);
15271
- (0, import_react26.useEffect)(() => {
15344
+ (0, import_react27.useEffect)(() => {
15272
15345
  if (state) writeStored(state);
15273
15346
  }, [state]);
15274
- const setState = (0, import_react26.useCallback)((next) => {
15347
+ const setState = (0, import_react27.useCallback)((next) => {
15275
15348
  setStateRaw(next);
15276
15349
  }, []);
15277
- const toggle = (0, import_react26.useCallback)(() => {
15350
+ const toggle = (0, import_react27.useCallback)(() => {
15278
15351
  setStateRaw((prev) => prev === "expanded" ? "collapsed" : "expanded");
15279
15352
  }, []);
15280
15353
  return {
@@ -15287,7 +15360,7 @@ function useSidebarState() {
15287
15360
  }
15288
15361
 
15289
15362
  // src/RedactoPrivacyCenter/components/AppShell/hooks/useKeyboardShortcut.ts
15290
- var import_react27 = require("react");
15363
+ var import_react28 = require("react");
15291
15364
  function isEditableTarget(target) {
15292
15365
  if (!target || !(target instanceof HTMLElement)) return false;
15293
15366
  const tag = target.tagName;
@@ -15296,7 +15369,7 @@ function isEditableTarget(target) {
15296
15369
  return false;
15297
15370
  }
15298
15371
  function useKeyboardShortcut(combo, handler) {
15299
- (0, import_react27.useEffect)(() => {
15372
+ (0, import_react28.useEffect)(() => {
15300
15373
  if (typeof window === "undefined") return;
15301
15374
  const onKey = (event) => {
15302
15375
  if (event.key.toLowerCase() !== combo.key.toLowerCase()) return;
@@ -15316,12 +15389,12 @@ function useKeyboardShortcut(combo, handler) {
15316
15389
  }
15317
15390
 
15318
15391
  // src/RedactoPrivacyCenter/components/AppShell/TopAppBar.tsx
15319
- var import_react36 = require("react");
15392
+ var import_react37 = require("react");
15320
15393
  var import_react_i18next12 = require("react-i18next");
15321
15394
  var import_lucide_react8 = require("lucide-react");
15322
15395
 
15323
15396
  // src/RedactoPrivacyCenter/context/NavigationContext.tsx
15324
- var import_react28 = require("react");
15397
+ var import_react29 = require("react");
15325
15398
  var import_jsx_runtime27 = require("react/jsx-runtime");
15326
15399
  var NAV_STORAGE_KEY = "pc_current_page";
15327
15400
  var CASE_UUID_STORAGE_KEY = "pc_selected_case_uuid";
@@ -15352,18 +15425,18 @@ function getStoredCaseUuid() {
15352
15425
  return null;
15353
15426
  }
15354
15427
  }
15355
- var NavigationContext = (0, import_react28.createContext)(null);
15428
+ var NavigationContext = (0, import_react29.createContext)(null);
15356
15429
  var NavigationProvider = ({
15357
15430
  children,
15358
15431
  initialPage = "consent-manager"
15359
15432
  }) => {
15360
15433
  var _a;
15361
- const [currentPage, setCurrentPage] = (0, import_react28.useState)(
15434
+ const [currentPage, setCurrentPage] = (0, import_react29.useState)(
15362
15435
  () => getStoredPage(initialPage)
15363
15436
  );
15364
- const [selectedCase, setSelectedCaseState] = (0, import_react28.useState)(null);
15365
- const [pendingCaseUuid] = (0, import_react28.useState)(() => getStoredCaseUuid());
15366
- const setSelectedCase = (0, import_react28.useCallback)((c) => {
15437
+ const [selectedCase, setSelectedCaseState] = (0, import_react29.useState)(null);
15438
+ const [pendingCaseUuid] = (0, import_react29.useState)(() => getStoredCaseUuid());
15439
+ const setSelectedCase = (0, import_react29.useCallback)((c) => {
15367
15440
  setSelectedCaseState(c);
15368
15441
  try {
15369
15442
  if (c == null ? void 0 : c.uuid) {
@@ -15375,16 +15448,16 @@ var NavigationProvider = ({
15375
15448
  }
15376
15449
  }, []);
15377
15450
  const { portal } = usePrivacyCenterSettings();
15378
- const enabledPages = (0, import_react28.useMemo)(
15451
+ const enabledPages = (0, import_react29.useMemo)(
15379
15452
  () => portal.sections.filter((section) => section.enabled).map((section) => section.key),
15380
15453
  [portal.sections]
15381
15454
  );
15382
- const isPageAllowed = (0, import_react28.useCallback)(
15455
+ const isPageAllowed = (0, import_react29.useCallback)(
15383
15456
  (page) => page === "case-details" || enabledPages.includes(page),
15384
15457
  [enabledPages]
15385
15458
  );
15386
15459
  const effectivePage = isPageAllowed(currentPage) ? currentPage : (_a = enabledPages[0]) != null ? _a : "consent-manager";
15387
- const navigateTo = (0, import_react28.useCallback)((page) => {
15460
+ const navigateTo = (0, import_react29.useCallback)((page) => {
15388
15461
  if (!isPageAllowed(page)) {
15389
15462
  return;
15390
15463
  }
@@ -15400,7 +15473,7 @@ var NavigationProvider = ({
15400
15473
  return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(NavigationContext.Provider, { value: { currentPage: effectivePage, navigateTo, selectedCase, setSelectedCase, pendingCaseUuid }, children });
15401
15474
  };
15402
15475
  var useInternalNavigation = () => {
15403
- const context = (0, import_react28.useContext)(NavigationContext);
15476
+ const context = (0, import_react29.useContext)(NavigationContext);
15404
15477
  if (!context) {
15405
15478
  throw new Error("useInternalNavigation must be used within a NavigationProvider");
15406
15479
  }
@@ -15434,7 +15507,7 @@ var rememberLanguageChoice = (code) => {
15434
15507
  };
15435
15508
 
15436
15509
  // src/RedactoPrivacyCenter/settings/hooks.ts
15437
- var import_react29 = require("react");
15510
+ var import_react30 = require("react");
15438
15511
  var import_react_i18next5 = require("react-i18next");
15439
15512
 
15440
15513
  // src/RedactoPrivacyCenter/components/SideMenuBarPC/constants.tsx
@@ -15466,7 +15539,7 @@ var menuItemsPC = [
15466
15539
  // src/RedactoPrivacyCenter/settings/hooks.ts
15467
15540
  var useIsSectionEnabled = () => {
15468
15541
  const { portal } = usePrivacyCenterSettings();
15469
- return (0, import_react29.useCallback)(
15542
+ return (0, import_react30.useCallback)(
15470
15543
  (key) => {
15471
15544
  var _a, _b;
15472
15545
  return (_b = (_a = portal.sections.find((section) => section.key === key)) == null ? void 0 : _a.enabled) != null ? _b : true;
@@ -15477,7 +15550,7 @@ var useIsSectionEnabled = () => {
15477
15550
  var useMenuItemsPC = () => {
15478
15551
  const { t } = (0, import_react_i18next5.useTranslation)();
15479
15552
  const { portal } = usePrivacyCenterSettings();
15480
- return (0, import_react29.useMemo)(
15553
+ return (0, import_react30.useMemo)(
15481
15554
  () => portal.sections.filter((section) => section.enabled).flatMap((section) => {
15482
15555
  var _a;
15483
15556
  const item = menuItemsPC.find((candidate) => candidate.href === section.key);
@@ -15488,14 +15561,14 @@ var useMenuItemsPC = () => {
15488
15561
  };
15489
15562
  var useLanguageOptions = () => {
15490
15563
  const { languages } = usePrivacyCenterSettings();
15491
- return (0, import_react29.useMemo)(() => {
15564
+ return (0, import_react30.useMemo)(() => {
15492
15565
  const options = languageOptions.filter((option2) => languages.enabled.includes(option2.value));
15493
15566
  return { options, showSwitcher: languages.show_switcher && options.length >= 2 };
15494
15567
  }, [languages]);
15495
15568
  };
15496
15569
 
15497
15570
  // src/RedactoPrivacyCenter/components/NotificationHub/NotificationBell.tsx
15498
- var import_react31 = require("react");
15571
+ var import_react32 = require("react");
15499
15572
  var import_react_i18next9 = require("react-i18next");
15500
15573
  var import_io53 = require("react-icons/io5");
15501
15574
 
@@ -15708,7 +15781,7 @@ var NotificationDropdown = ({
15708
15781
  };
15709
15782
 
15710
15783
  // src/RedactoPrivacyCenter/components/NotificationHub/useNotificationActions.ts
15711
- var import_react30 = require("react");
15784
+ var import_react31 = require("react");
15712
15785
  var useNotificationActions = () => {
15713
15786
  var _a;
15714
15787
  const { navigateTo, setSelectedCase } = useInternalNavigation();
@@ -15718,38 +15791,38 @@ var useNotificationActions = () => {
15718
15791
  const { langParam } = useCurrentLanguage();
15719
15792
  const organizationId = organization == null ? void 0 : organization.uuid;
15720
15793
  const workspaceId = (_a = organization == null ? void 0 : organization.workspaces[0]) == null ? void 0 : _a.uuid;
15721
- const authContext = (0, import_react30.useMemo)(() => ({
15794
+ const authContext = (0, import_react31.useMemo)(() => ({
15722
15795
  accessToken,
15723
15796
  refreshToken,
15724
15797
  onError,
15725
15798
  updateTokens
15726
15799
  }), [accessToken, refreshToken, onError, updateTokens]);
15727
- const hasAcknowledgeCTA = (0, import_react30.useCallback)((notification) => {
15800
+ const hasAcknowledgeCTA = (0, import_react31.useCallback)((notification) => {
15728
15801
  var _a2, _b;
15729
15802
  return (_b = (_a2 = notification.ctas) == null ? void 0 : _a2.some((cta) => cta.action_type === "acknowledge")) != null ? _b : false;
15730
15803
  }, []);
15731
- const handleMarkRead = (0, import_react30.useCallback)(async (notificationUuid) => {
15804
+ const handleMarkRead = (0, import_react31.useCallback)(async (notificationUuid) => {
15732
15805
  if (!organizationId || !workspaceId) {
15733
15806
  return false;
15734
15807
  }
15735
15808
  const result = await markNotificationRead(organizationId, workspaceId, notificationUuid, authContext, consentClient);
15736
15809
  return result !== null;
15737
15810
  }, [organizationId, workspaceId, authContext, consentClient]);
15738
- const handleMarkAllRead = (0, import_react30.useCallback)(async () => {
15811
+ const handleMarkAllRead = (0, import_react31.useCallback)(async () => {
15739
15812
  if (!organizationId || !workspaceId) {
15740
15813
  return false;
15741
15814
  }
15742
15815
  const result = await markAllRead(organizationId, workspaceId, authContext, consentClient);
15743
15816
  return result !== null;
15744
15817
  }, [organizationId, workspaceId, authContext, consentClient]);
15745
- const handleAcknowledge = (0, import_react30.useCallback)(async (notificationUuid) => {
15818
+ const handleAcknowledge = (0, import_react31.useCallback)(async (notificationUuid) => {
15746
15819
  if (!organizationId || !workspaceId) {
15747
15820
  return false;
15748
15821
  }
15749
15822
  const result = await acknowledgeNotification(organizationId, workspaceId, notificationUuid, authContext, consentClient);
15750
15823
  return result !== null;
15751
15824
  }, [organizationId, workspaceId, authContext, consentClient]);
15752
- const handleCTAClick = (0, import_react30.useCallback)(async (notification, cta) => {
15825
+ const handleCTAClick = (0, import_react31.useCallback)(async (notification, cta) => {
15753
15826
  var _a2;
15754
15827
  if (cta.action_type === "acknowledge") {
15755
15828
  const ok = await handleAcknowledge(notification.uuid);
@@ -15807,11 +15880,11 @@ var import_jsx_runtime34 = require("react/jsx-runtime");
15807
15880
  var NotificationBell = () => {
15808
15881
  const { t } = (0, import_react_i18next9.useTranslation)();
15809
15882
  const { langParam } = useCurrentLanguage();
15810
- const [notifications, setNotifications] = (0, import_react31.useState)([]);
15811
- const [unreadCount, setUnreadCount] = (0, import_react31.useState)(0);
15812
- const [isRefreshing2, setIsRefreshing] = (0, import_react31.useState)(false);
15813
- const pollRef = (0, import_react31.useRef)(null);
15814
- const tenantRequestRef = (0, import_react31.useRef)(0);
15883
+ const [notifications, setNotifications] = (0, import_react32.useState)([]);
15884
+ const [unreadCount, setUnreadCount] = (0, import_react32.useState)(0);
15885
+ const [isRefreshing2, setIsRefreshing] = (0, import_react32.useState)(false);
15886
+ const pollRef = (0, import_react32.useRef)(null);
15887
+ const tenantRequestRef = (0, import_react32.useRef)(0);
15815
15888
  const {
15816
15889
  organizationId,
15817
15890
  workspaceId,
@@ -15822,7 +15895,7 @@ var NotificationBell = () => {
15822
15895
  handleMarkAllRead,
15823
15896
  handleCTAClick
15824
15897
  } = useNotificationActions();
15825
- const pollUnreadCount = (0, import_react31.useCallback)(async () => {
15898
+ const pollUnreadCount = (0, import_react32.useCallback)(async () => {
15826
15899
  if (!organizationId || !workspaceId) {
15827
15900
  return;
15828
15901
  }
@@ -15838,7 +15911,7 @@ var NotificationBell = () => {
15838
15911
  setUnreadCount(result.count);
15839
15912
  }
15840
15913
  }, [organizationId, workspaceId, authContext, consentClient]);
15841
- const loadDropdownNotifications = (0, import_react31.useCallback)(async () => {
15914
+ const loadDropdownNotifications = (0, import_react32.useCallback)(async () => {
15842
15915
  if (!organizationId || !workspaceId) {
15843
15916
  return;
15844
15917
  }
@@ -15854,7 +15927,7 @@ var NotificationBell = () => {
15854
15927
  }
15855
15928
  }
15856
15929
  }, [organizationId, workspaceId, authContext, consentClient, langParam]);
15857
- (0, import_react31.useEffect)(() => {
15930
+ (0, import_react32.useEffect)(() => {
15858
15931
  tenantRequestRef.current += 1;
15859
15932
  setNotifications([]);
15860
15933
  setUnreadCount(0);
@@ -15862,11 +15935,11 @@ var NotificationBell = () => {
15862
15935
  tenantRequestRef.current += 1;
15863
15936
  };
15864
15937
  }, [organizationId, workspaceId]);
15865
- const pollUnreadCountRef = (0, import_react31.useRef)(pollUnreadCount);
15866
- (0, import_react31.useEffect)(() => {
15938
+ const pollUnreadCountRef = (0, import_react32.useRef)(pollUnreadCount);
15939
+ (0, import_react32.useEffect)(() => {
15867
15940
  pollUnreadCountRef.current = pollUnreadCount;
15868
15941
  }, [pollUnreadCount]);
15869
- (0, import_react31.useEffect)(() => {
15942
+ (0, import_react32.useEffect)(() => {
15870
15943
  if (!organizationId || !workspaceId) {
15871
15944
  if (pollRef.current) {
15872
15945
  clearInterval(pollRef.current);
@@ -15882,7 +15955,7 @@ var NotificationBell = () => {
15882
15955
  }
15883
15956
  };
15884
15957
  }, [organizationId, workspaceId]);
15885
- const onRefresh = (0, import_react31.useCallback)(async () => {
15958
+ const onRefresh = (0, import_react32.useCallback)(async () => {
15886
15959
  setIsRefreshing(true);
15887
15960
  try {
15888
15961
  await loadDropdownNotifications();
@@ -15890,7 +15963,7 @@ var NotificationBell = () => {
15890
15963
  setIsRefreshing(false);
15891
15964
  }
15892
15965
  }, [loadDropdownNotifications]);
15893
- const onMarkAllRead = (0, import_react31.useCallback)(async () => {
15966
+ const onMarkAllRead = (0, import_react32.useCallback)(async () => {
15894
15967
  const ok = await handleMarkAllRead();
15895
15968
  if (!ok) {
15896
15969
  return;
@@ -15898,7 +15971,7 @@ var NotificationBell = () => {
15898
15971
  setNotifications((prev) => prev.map((n) => ({ ...n, is_read: true })));
15899
15972
  setUnreadCount(0);
15900
15973
  }, [handleMarkAllRead]);
15901
- const onNotificationClick = (0, import_react31.useCallback)(async (notification) => {
15974
+ const onNotificationClick = (0, import_react32.useCallback)(async (notification) => {
15902
15975
  if (!notification.is_read) {
15903
15976
  const ok = await handleMarkRead(notification.uuid);
15904
15977
  if (!ok) {
@@ -15908,7 +15981,7 @@ var NotificationBell = () => {
15908
15981
  setUnreadCount((prev) => Math.max(0, prev - 1));
15909
15982
  }
15910
15983
  }, [handleMarkRead]);
15911
- const onCTAClick = (0, import_react31.useCallback)(async (notification, cta) => {
15984
+ const onCTAClick = (0, import_react32.useCallback)(async (notification, cta) => {
15912
15985
  const result = await handleCTAClick(notification, cta);
15913
15986
  if (result === "acknowledged") {
15914
15987
  setNotifications((prev) => prev.map(
@@ -15952,28 +16025,28 @@ var NotificationBell = () => {
15952
16025
  };
15953
16026
 
15954
16027
  // src/RedactoPrivacyCenter/components/AppShell/UserMenu.tsx
15955
- var import_react34 = require("react");
16028
+ var import_react35 = require("react");
15956
16029
  var import_lucide_react6 = require("lucide-react");
15957
16030
  var import_react_i18next11 = require("react-i18next");
15958
16031
 
15959
16032
  // src/RedactoPrivacyCenter/context/ProfileSwitchContext.tsx
15960
- var import_react32 = require("react");
15961
- var ProfileSwitchContext = (0, import_react32.createContext)({
16033
+ var import_react33 = require("react");
16034
+ var ProfileSwitchContext = (0, import_react33.createContext)({
15962
16035
  canSwitch: false,
15963
16036
  switchProfile: () => {
15964
16037
  }
15965
16038
  });
15966
16039
  var ProfileSwitchProvider = ProfileSwitchContext.Provider;
15967
- var useProfileSwitch = () => (0, import_react32.useContext)(ProfileSwitchContext);
16040
+ var useProfileSwitch = () => (0, import_react33.useContext)(ProfileSwitchContext);
15968
16041
 
15969
16042
  // src/RedactoPrivacyCenter/components/AppShell/usePrivacyCenterExitAction.ts
15970
- var import_react33 = require("react");
16043
+ var import_react34 = require("react");
15971
16044
  var import_react_i18next10 = require("react-i18next");
15972
16045
  var import_lucide_react5 = require("lucide-react");
15973
16046
  function usePrivacyCenterExitAction(onBack) {
15974
16047
  const { t } = (0, import_react_i18next10.useTranslation)();
15975
16048
  const { emitSignOut } = usePrivacyCenterEvents();
15976
- const handleAction = (0, import_react33.useCallback)(() => {
16049
+ const handleAction = (0, import_react34.useCallback)(() => {
15977
16050
  if (onBack === "back") {
15978
16051
  window.history.back();
15979
16052
  } else if (onBack === "signout") {
@@ -16017,8 +16090,8 @@ function UserMenu({ onBack }) {
16017
16090
  const branding = useBranding();
16018
16091
  const { organization } = useOrganization();
16019
16092
  const { accessToken } = useAuth();
16020
- const [email, setEmail] = (0, import_react34.useState)("");
16021
- (0, import_react34.useEffect)(() => {
16093
+ const [email, setEmail] = (0, import_react35.useState)("");
16094
+ (0, import_react35.useEffect)(() => {
16022
16095
  setEmail(readEmail());
16023
16096
  }, []);
16024
16097
  const { handleAction, label: actionLabel, Icon: ActionIcon } = usePrivacyCenterExitAction(onBack);
@@ -16208,14 +16281,14 @@ function UserMenu({ onBack }) {
16208
16281
  }
16209
16282
 
16210
16283
  // src/RedactoPrivacyCenter/components/AppShell/CompactLanguageMenu.tsx
16211
- var import_react35 = require("react");
16284
+ var import_react36 = require("react");
16212
16285
  var import_lucide_react7 = require("lucide-react");
16213
16286
  var import_jsx_runtime36 = require("react/jsx-runtime");
16214
16287
  function CompactLanguageMenu({ locale, options, onChange }) {
16215
16288
  var _a, _b;
16216
- const containerRef = (0, import_react35.useRef)(null);
16217
- const [open, setOpen] = (0, import_react35.useState)(false);
16218
- (0, import_react35.useEffect)(() => {
16289
+ const containerRef = (0, import_react36.useRef)(null);
16290
+ const [open, setOpen] = (0, import_react36.useState)(false);
16291
+ (0, import_react36.useEffect)(() => {
16219
16292
  if (!open) return;
16220
16293
  const onDocMouseDown = (event) => {
16221
16294
  var _a2;
@@ -16346,7 +16419,7 @@ function CompactLanguageMenu({ locale, options, onChange }) {
16346
16419
  var import_jsx_runtime37 = require("react/jsx-runtime");
16347
16420
  var TOP_BAR_LOGO_HEIGHT = 32;
16348
16421
  var TOP_BAR_LOGO_MAX_HEIGHT = 40;
16349
- var TopAppBar = (0, import_react36.forwardRef)(function TopAppBar2({ onOpenMobileNav, showHamburger, locale, onLocaleChange, onBack, showNotifications = true }, hamburgerRef) {
16422
+ var TopAppBar = (0, import_react37.forwardRef)(function TopAppBar2({ onOpenMobileNav, showHamburger, locale, onLocaleChange, onBack, showNotifications = true }, hamburgerRef) {
16350
16423
  var _a, _b;
16351
16424
  const { t } = (0, import_react_i18next12.useTranslation)();
16352
16425
  const branding = useBranding();
@@ -16360,7 +16433,7 @@ var TopAppBar = (0, import_react36.forwardRef)(function TopAppBar2({ onOpenMobil
16360
16433
  const displayName = (branding == null ? void 0 : branding.brand_name) || (organization == null ? void 0 : organization.name) || "";
16361
16434
  const hasLogoImage = Boolean(branding == null ? void 0 : branding.logo_url);
16362
16435
  const logoHeight = brandingSettings.logo_height ? Math.min(brandingSettings.logo_height, TOP_BAR_LOGO_MAX_HEIGHT) : TOP_BAR_LOGO_HEIGHT;
16363
- const changeLanguage = (0, import_react36.useCallback)(
16436
+ const changeLanguage = (0, import_react37.useCallback)(
16364
16437
  (value) => {
16365
16438
  rememberLanguageChoice(value);
16366
16439
  void i18n_default.changeLanguage(value);
@@ -16368,7 +16441,7 @@ var TopAppBar = (0, import_react36.forwardRef)(function TopAppBar2({ onOpenMobil
16368
16441
  },
16369
16442
  [onLocaleChange]
16370
16443
  );
16371
- const handleLanguageChange = (0, import_react36.useCallback)(
16444
+ const handleLanguageChange = (0, import_react37.useCallback)(
16372
16445
  (value) => {
16373
16446
  const langValue = value;
16374
16447
  if (!langValue) return;
@@ -16519,7 +16592,7 @@ var TopAppBar = (0, import_react36.forwardRef)(function TopAppBar2({ onOpenMobil
16519
16592
  ` })
16520
16593
  ] });
16521
16594
  });
16522
- var HamburgerButton = (0, import_react36.forwardRef)(
16595
+ var HamburgerButton = (0, import_react37.forwardRef)(
16523
16596
  function HamburgerButton2({ onClick, label }, ref) {
16524
16597
  return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
16525
16598
  PCActionIcon,
@@ -16541,16 +16614,16 @@ var HamburgerButton = (0, import_react36.forwardRef)(
16541
16614
  );
16542
16615
 
16543
16616
  // src/RedactoPrivacyCenter/components/AppShell/SidebarNav.tsx
16544
- var import_react38 = require("react");
16617
+ var import_react39 = require("react");
16545
16618
  var import_react_i18next13 = require("react-i18next");
16546
16619
  var import_lucide_react9 = require("lucide-react");
16547
16620
 
16548
16621
  // src/RedactoPrivacyCenter/components/AppShell/NavItem.tsx
16549
- var import_react37 = require("react");
16622
+ var import_react38 = require("react");
16550
16623
  var import_jsx_runtime38 = require("react/jsx-runtime");
16551
16624
  function NavItem({ item, mode, onNavigate }) {
16552
16625
  const { currentPage, navigateTo } = useInternalNavigation();
16553
- const [hover, setHover] = (0, import_react37.useState)(false);
16626
+ const [hover, setHover] = (0, import_react38.useState)(false);
16554
16627
  const isCollapsed = mode === "collapsed";
16555
16628
  const isActive = item.href ? currentPage === item.href : false;
16556
16629
  const isDisabled = !!item.isComingSoon;
@@ -16721,7 +16794,7 @@ function SidebarNav({ isExpanded, onToggle, className }) {
16721
16794
  const { t } = (0, import_react_i18next13.useTranslation)();
16722
16795
  const menuItems = useMenuItemsPC();
16723
16796
  const mode = isExpanded ? "expanded" : "collapsed";
16724
- const asideStyle = (0, import_react38.useMemo)(
16797
+ const asideStyle = (0, import_react39.useMemo)(
16725
16798
  () => ({
16726
16799
  position: "sticky",
16727
16800
  top: TOP_BAR_HEIGHT,
@@ -16738,7 +16811,7 @@ function SidebarNav({ isExpanded, onToggle, className }) {
16738
16811
  }),
16739
16812
  [isExpanded]
16740
16813
  );
16741
- const flatNavItems = (0, import_react38.useMemo)(
16814
+ const flatNavItems = (0, import_react39.useMemo)(
16742
16815
  () => menuItems.filter((item) => Boolean(item.href)),
16743
16816
  [menuItems]
16744
16817
  );
@@ -16805,7 +16878,7 @@ function SidebarNav({ isExpanded, onToggle, className }) {
16805
16878
  }
16806
16879
 
16807
16880
  // src/RedactoPrivacyCenter/components/AppShell/MobileNavDrawer.tsx
16808
- var import_react39 = require("react");
16881
+ var import_react40 = require("react");
16809
16882
  var import_react_dom2 = require("react-dom");
16810
16883
  var import_react_i18next14 = require("react-i18next");
16811
16884
  var import_lucide_react10 = require("lucide-react");
@@ -16817,17 +16890,17 @@ function MobileNavDrawer({ isOpen, onClose, returnFocusRef }) {
16817
16890
  const branding = useBranding();
16818
16891
  const { organization } = useOrganization();
16819
16892
  const displayName = (branding == null ? void 0 : branding.brand_name) || (organization == null ? void 0 : organization.name) || "";
16820
- const drawerRef = (0, import_react39.useRef)(null);
16821
- const firstNavRef = (0, import_react39.useRef)(null);
16893
+ const drawerRef = (0, import_react40.useRef)(null);
16894
+ const firstNavRef = (0, import_react40.useRef)(null);
16822
16895
  const appearanceAttributes = useAppearanceAttributes();
16823
16896
  const scopeAttributes = usePrivacyCenterScopeAttributes();
16824
16897
  const isRtl = ((_a = usePrivacyCenterScope()) == null ? void 0 : _a.dir) === "rtl";
16825
16898
  const { sheetOverlays } = useAppearanceLayout();
16826
- const flatNavItems = (0, import_react39.useMemo)(
16899
+ const flatNavItems = (0, import_react40.useMemo)(
16827
16900
  () => menuItems.filter((item) => Boolean(item.href)),
16828
16901
  [menuItems]
16829
16902
  );
16830
- (0, import_react39.useEffect)(() => {
16903
+ (0, import_react40.useEffect)(() => {
16831
16904
  if (typeof document === "undefined") return;
16832
16905
  if (!isOpen) return;
16833
16906
  const previous = document.body.style.overflow;
@@ -16836,7 +16909,7 @@ function MobileNavDrawer({ isOpen, onClose, returnFocusRef }) {
16836
16909
  document.body.style.overflow = previous;
16837
16910
  };
16838
16911
  }, [isOpen]);
16839
- (0, import_react39.useEffect)(() => {
16912
+ (0, import_react40.useEffect)(() => {
16840
16913
  if (!isOpen || typeof window === "undefined") return;
16841
16914
  const onKey = (event) => {
16842
16915
  if (event.key === "Escape") {
@@ -16858,8 +16931,8 @@ function MobileNavDrawer({ isOpen, onClose, returnFocusRef }) {
16858
16931
  window.clearTimeout(focusTimer);
16859
16932
  };
16860
16933
  }, [isOpen, onClose]);
16861
- const wasOpenRef = (0, import_react39.useRef)(false);
16862
- (0, import_react39.useEffect)(() => {
16934
+ const wasOpenRef = (0, import_react40.useRef)(false);
16935
+ (0, import_react40.useEffect)(() => {
16863
16936
  if (isOpen) {
16864
16937
  wasOpenRef.current = true;
16865
16938
  return;
@@ -16872,7 +16945,7 @@ function MobileNavDrawer({ isOpen, onClose, returnFocusRef }) {
16872
16945
  const t2 = window.setTimeout(() => node.focus(), 0);
16873
16946
  return () => window.clearTimeout(t2);
16874
16947
  }, [isOpen, returnFocusRef]);
16875
- const handleNavigate = (0, import_react39.useCallback)(() => {
16948
+ const handleNavigate = (0, import_react40.useCallback)(() => {
16876
16949
  onClose();
16877
16950
  }, [onClose]);
16878
16951
  const overlayStyle = {
@@ -17051,25 +17124,25 @@ function MobileNavDrawer({ isOpen, onClose, returnFocusRef }) {
17051
17124
  var import_react_i18next15 = require("react-i18next");
17052
17125
 
17053
17126
  // src/RedactoPrivacyCenter/context/PageChromeContext.tsx
17054
- var import_react40 = require("react");
17127
+ var import_react41 = require("react");
17055
17128
  var import_jsx_runtime41 = require("react/jsx-runtime");
17056
- var PageChromeContext = (0, import_react40.createContext)(null);
17129
+ var PageChromeContext = (0, import_react41.createContext)(null);
17057
17130
  function PageChromeProvider({ children }) {
17058
- const [pageChromeOverride, setPageChromeOverrideState] = (0, import_react40.useState)(null);
17059
- const [headerStatus, setHeaderStatusState] = (0, import_react40.useState)(null);
17060
- const setPageChromeOverride = (0, import_react40.useCallback)(
17131
+ const [pageChromeOverride, setPageChromeOverrideState] = (0, import_react41.useState)(null);
17132
+ const [headerStatus, setHeaderStatusState] = (0, import_react41.useState)(null);
17133
+ const setPageChromeOverride = (0, import_react41.useCallback)(
17061
17134
  (override) => {
17062
17135
  setPageChromeOverrideState(override);
17063
17136
  },
17064
17137
  []
17065
17138
  );
17066
- const clearPageChromeOverride = (0, import_react40.useCallback)(() => {
17139
+ const clearPageChromeOverride = (0, import_react41.useCallback)(() => {
17067
17140
  setPageChromeOverrideState(null);
17068
17141
  }, []);
17069
- const setHeaderStatus = (0, import_react40.useCallback)((status) => {
17142
+ const setHeaderStatus = (0, import_react41.useCallback)((status) => {
17070
17143
  setHeaderStatusState(status);
17071
17144
  }, []);
17072
- const value = (0, import_react40.useMemo)(
17145
+ const value = (0, import_react41.useMemo)(
17073
17146
  () => ({
17074
17147
  pageChromeOverride,
17075
17148
  setPageChromeOverride,
@@ -17088,7 +17161,7 @@ function PageChromeProvider({ children }) {
17088
17161
  return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(PageChromeContext.Provider, { value, children });
17089
17162
  }
17090
17163
  function usePageChrome() {
17091
- const context = (0, import_react40.useContext)(PageChromeContext);
17164
+ const context = (0, import_react41.useContext)(PageChromeContext);
17092
17165
  if (!context) {
17093
17166
  throw new Error("usePageChrome must be used within a PageChromeProvider");
17094
17167
  }
@@ -17385,27 +17458,27 @@ function AppShell({
17385
17458
  }) {
17386
17459
  const { t } = (0, import_react_i18next18.useTranslation)();
17387
17460
  const sidebar = useSidebarState();
17388
- const [locale, setLocale] = (0, import_react41.useState)(i18n_default.language);
17389
- const [isMobileNavOpen, setMobileNavOpen] = (0, import_react41.useState)(false);
17390
- const hamburgerRef = (0, import_react41.useRef)(null);
17461
+ const [locale, setLocale] = (0, import_react42.useState)(i18n_default.language);
17462
+ const [isMobileNavOpen, setMobileNavOpen] = (0, import_react42.useState)(false);
17463
+ const hamburgerRef = (0, import_react42.useRef)(null);
17391
17464
  const appearanceAttributes = useAppearanceAttributes();
17392
17465
  const isMobile = useMediaQuery("(max-width: 639px)");
17393
17466
  const { status } = useDataAvailability();
17394
17467
  const hideNav = status !== "has-data";
17395
- (0, import_react41.useEffect)(() => {
17468
+ (0, import_react42.useEffect)(() => {
17396
17469
  if (!isMobile && isMobileNavOpen) setMobileNavOpen(false);
17397
17470
  }, [isMobile, isMobileNavOpen]);
17398
- (0, import_react41.useEffect)(() => {
17471
+ (0, import_react42.useEffect)(() => {
17399
17472
  const onChange = () => setLocale(i18n_default.language);
17400
17473
  i18n_default.on("languageChanged", onChange);
17401
17474
  return () => i18n_default.off("languageChanged", onChange);
17402
17475
  }, []);
17403
- const handleSidebarToggle = (0, import_react41.useCallback)(() => {
17476
+ const handleSidebarToggle = (0, import_react42.useCallback)(() => {
17404
17477
  sidebar.toggle();
17405
17478
  }, [sidebar]);
17406
17479
  useKeyboardShortcut(
17407
17480
  { key: "b", mod: true },
17408
- (0, import_react41.useCallback)(() => {
17481
+ (0, import_react42.useCallback)(() => {
17409
17482
  if (isMobile) setMobileNavOpen((prev) => !prev);
17410
17483
  else sidebar.toggle();
17411
17484
  }, [isMobile, sidebar])
@@ -17439,7 +17512,7 @@ function AppShell({
17439
17512
  boxSizing: "border-box"
17440
17513
  };
17441
17514
  return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(LocaleContext.Provider, { value: { locale, setLocale }, children: /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(
17442
- import_react41.Suspense,
17515
+ import_react42.Suspense,
17443
17516
  {
17444
17517
  fallback: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
17445
17518
  "div",
@@ -17599,7 +17672,7 @@ function AppShell({
17599
17672
  }
17600
17673
 
17601
17674
  // src/RedactoPrivacyCenter/components/SelectUserGate.tsx
17602
- var import_react42 = require("react");
17675
+ var import_react43 = require("react");
17603
17676
  var import_react_i18next20 = require("react-i18next");
17604
17677
 
17605
17678
  // src/RedactoPrivacyCenter/components/SelectUser.tsx
@@ -17661,12 +17734,12 @@ var SelectUserGate = ({ children }) => {
17661
17734
  const workspaceId = ((_b = (_a = organization == null ? void 0 : organization.workspaces) == null ? void 0 : _a[0]) == null ? void 0 : _b.uuid) || "";
17662
17735
  const { consentClient } = useBaseUrl();
17663
17736
  const { accessToken, updateTokens } = useAuth();
17664
- const [phase, setPhase] = (0, import_react42.useState)("checking");
17665
- const [candidates, setCandidates] = (0, import_react42.useState)([]);
17666
- const [busyOrgUserId, setBusyOrgUserId] = (0, import_react42.useState)(null);
17667
- const [selectError, setSelectError] = (0, import_react42.useState)(null);
17737
+ const [phase, setPhase] = (0, import_react43.useState)("checking");
17738
+ const [candidates, setCandidates] = (0, import_react43.useState)([]);
17739
+ const [busyOrgUserId, setBusyOrgUserId] = (0, import_react43.useState)(null);
17740
+ const [selectError, setSelectError] = (0, import_react43.useState)(null);
17668
17741
  const tokenOrgUserId = ((_d = (_c = decodeJwtToken(accessToken)) == null ? void 0 : _c.user_data) == null ? void 0 : _d.org_user_id) || "";
17669
- (0, import_react42.useEffect)(() => {
17742
+ (0, import_react43.useEffect)(() => {
17670
17743
  let cancelled = false;
17671
17744
  if (isSandboxMode()) {
17672
17745
  setPhase("resolved");
@@ -17740,7 +17813,7 @@ var SelectUserGate = ({ children }) => {
17740
17813
  setSelectError(t("couldNotSwitchProfile"));
17741
17814
  }
17742
17815
  };
17743
- const switchProfile = (0, import_react42.useCallback)(() => {
17816
+ const switchProfile = (0, import_react43.useCallback)(() => {
17744
17817
  if (typeof window !== "undefined") {
17745
17818
  sessionStorage.removeItem(PICKED_ORG_USER_KEY);
17746
17819
  }
@@ -17748,7 +17821,7 @@ var SelectUserGate = ({ children }) => {
17748
17821
  setBusyOrgUserId(null);
17749
17822
  setPhase("picking");
17750
17823
  }, []);
17751
- const switchValue = (0, import_react42.useMemo)(
17824
+ const switchValue = (0, import_react43.useMemo)(
17752
17825
  () => ({ canSwitch: candidates.length > 1, switchProfile }),
17753
17826
  [candidates.length, switchProfile]
17754
17827
  );
@@ -17772,7 +17845,7 @@ var SelectUserGate = ({ children }) => {
17772
17845
  };
17773
17846
 
17774
17847
  // src/RedactoPrivacyCenter/components/SignIn/PrivacyCenterSignIn.tsx
17775
- var import_react47 = require("react");
17848
+ var import_react48 = require("react");
17776
17849
  var import_react_i18next23 = require("react-i18next");
17777
17850
 
17778
17851
  // src/RedactoPrivacyCenter/utils/toast.ts
@@ -17936,7 +18009,7 @@ var maskPhone = (phone) => {
17936
18009
  };
17937
18010
 
17938
18011
  // src/RedactoPrivacyCenter/components/SignIn/ContactStep.tsx
17939
- var import_react43 = require("react");
18012
+ var import_react44 = require("react");
17940
18013
  var import_react_i18next21 = require("react-i18next");
17941
18014
 
17942
18015
  // src/RedactoPrivacyCenter/components/SignIn/SignInHeading.tsx
@@ -18007,8 +18080,8 @@ function ContactStep({
18007
18080
  const { sign_in: signIn } = usePrivacyCenterSettings();
18008
18081
  const branding = useBranding();
18009
18082
  const copy = useSettingsCopy();
18010
- const [value, setValue] = (0, import_react43.useState)(initialValue);
18011
- const [countryCode, setCountryCode] = (0, import_react43.useState)(initialCountryCode != null ? initialCountryCode : signIn.default_country_code);
18083
+ const [value, setValue] = (0, import_react44.useState)(initialValue);
18084
+ const [countryCode, setCountryCode] = (0, import_react44.useState)(initialCountryCode != null ? initialCountryCode : signIn.default_country_code);
18012
18085
  const channelCopy = CHANNEL_COPY_KEYS[signIn.channels];
18013
18086
  const label = signIn.field_label ? copy(signIn.field_label) : t(channelCopy.fieldLabel);
18014
18087
  const placeholder = signIn.placeholder ? copy(signIn.placeholder) : t(channelCopy.placeholder);
@@ -18103,7 +18176,7 @@ function ContactStep({
18103
18176
  }
18104
18177
 
18105
18178
  // src/RedactoPrivacyCenter/components/SignIn/OtpStep.tsx
18106
- var import_react44 = require("react");
18179
+ var import_react45 = require("react");
18107
18180
  var import_react_i18next22 = require("react-i18next");
18108
18181
  var import_jsx_runtime50 = require("react/jsx-runtime");
18109
18182
  var OTP_LENGTH = 6;
@@ -18147,8 +18220,8 @@ function OtpStep({
18147
18220
  const { t } = (0, import_react_i18next22.useTranslation)();
18148
18221
  const { sign_in: signIn } = usePrivacyCenterSettings();
18149
18222
  const copy = useSettingsCopy();
18150
- const [digits, setDigits] = (0, import_react44.useState)([...EMPTY_CODE]);
18151
- const inputs = (0, import_react44.useRef)([]);
18223
+ const [digits, setDigits] = (0, import_react45.useState)([...EMPTY_CODE]);
18224
+ const inputs = (0, import_react45.useRef)([]);
18152
18225
  const contactDisplay = channel === "sms" ? maskPhone(contact) : contact;
18153
18226
  const description = signIn.otp_description ? copy(signIn.otp_description, { contact: contactDisplay }) : t(channel === "sms" ? "otpDescriptionSms" : "otpDescriptionEmail");
18154
18227
  const focus = (index) => {
@@ -18308,10 +18381,10 @@ var otpErrorKey = (error) => {
18308
18381
  var import_lucide_react13 = require("lucide-react");
18309
18382
 
18310
18383
  // src/RedactoPrivacyCenter/components/SignIn/useLocaleState.ts
18311
- var import_react45 = require("react");
18384
+ var import_react46 = require("react");
18312
18385
  var useLocaleState = () => {
18313
18386
  const { currentLanguage } = useCurrentLanguage();
18314
- const changeLocale = (0, import_react45.useCallback)((code) => {
18387
+ const changeLocale = (0, import_react46.useCallback)((code) => {
18315
18388
  rememberLanguageChoice(code);
18316
18389
  void i18n_default.changeLanguage(code);
18317
18390
  }, []);
@@ -18601,17 +18674,17 @@ function SignInFrame({ children }) {
18601
18674
  }
18602
18675
 
18603
18676
  // src/RedactoPrivacyCenter/components/SignIn/useCountdown.ts
18604
- var import_react46 = require("react");
18677
+ var import_react47 = require("react");
18605
18678
  var useCountdown = () => {
18606
- const [remaining, setRemaining] = (0, import_react46.useState)(0);
18607
- (0, import_react46.useEffect)(() => {
18679
+ const [remaining, setRemaining] = (0, import_react47.useState)(0);
18680
+ (0, import_react47.useEffect)(() => {
18608
18681
  if (remaining <= 0) {
18609
18682
  return void 0;
18610
18683
  }
18611
18684
  const timer = setTimeout(() => setRemaining((value) => Math.max(0, value - 1)), 1e3);
18612
18685
  return () => clearTimeout(timer);
18613
18686
  }, [remaining]);
18614
- const start = (0, import_react46.useCallback)((seconds) => setRemaining(seconds), []);
18687
+ const start = (0, import_react47.useCallback)((seconds) => setRemaining(seconds), []);
18615
18688
  return { remaining, start };
18616
18689
  };
18617
18690
 
@@ -18623,9 +18696,8 @@ var INVALID_CONTACT_KEYS = {
18623
18696
  email: "signInInvalidContactEmail",
18624
18697
  sms: "signInInvalidContactSms"
18625
18698
  };
18626
- var seedSession = (slug, organisationUuid, workspaceUuid, sent) => {
18699
+ var seedSession = (organisationUuid, workspaceUuid, sent) => {
18627
18700
  try {
18628
- sessionStorage.setItem("pc_org_slug", slug);
18629
18701
  sessionStorage.setItem("pc_org_id", organisationUuid);
18630
18702
  sessionStorage.setItem("pc_workspace_id", workspaceUuid);
18631
18703
  if (sent.channel === "email") {
@@ -18634,23 +18706,22 @@ var seedSession = (slug, organisationUuid, workspaceUuid, sent) => {
18634
18706
  } catch {
18635
18707
  }
18636
18708
  };
18637
- function PrivacyCenterSignIn({ slug }) {
18709
+ function PrivacyCenterSignIn() {
18638
18710
  var _a;
18639
18711
  const { t } = (0, import_react_i18next23.useTranslation)();
18640
18712
  const { settings, organisation } = usePrivacyCenterSettingsContext();
18641
18713
  const { consentClient } = useBaseUrl();
18642
18714
  const { updateTokens } = useAuth();
18643
- const [sent, setSent] = (0, import_react47.useState)(null);
18644
- const [step, setStep] = (0, import_react47.useState)("contact");
18645
- const [typedContact, setTypedContact] = (0, import_react47.useState)("");
18646
- const [error, setError] = (0, import_react47.useState)(null);
18647
- const [busy, setBusy] = (0, import_react47.useState)(false);
18648
- const [resending, setResending] = (0, import_react47.useState)(false);
18715
+ const [sent, setSent] = (0, import_react48.useState)(null);
18716
+ const [step, setStep] = (0, import_react48.useState)("contact");
18717
+ const [typedContact, setTypedContact] = (0, import_react48.useState)("");
18718
+ const [error, setError] = (0, import_react48.useState)(null);
18719
+ const [busy, setBusy] = (0, import_react48.useState)(false);
18720
+ const [resending, setResending] = (0, import_react48.useState)(false);
18649
18721
  const countdown = useCountdown();
18650
18722
  const { organisationUuid, workspaceUuid } = organisation;
18651
18723
  const orgUnavailable = organisation.status === "failed";
18652
- const orgPending = organisation.status === "resolving";
18653
- const sendCode = (0, import_react47.useCallback)(
18724
+ const sendCode = (0, import_react48.useCallback)(
18654
18725
  async (contact, channel) => {
18655
18726
  const response = await consentClient.createOtp(
18656
18727
  organisationUuid != null ? organisationUuid : "",
@@ -18715,7 +18786,7 @@ function PrivacyCenterSignIn({ slug }) {
18715
18786
  setError(t("otpErrorFallback"));
18716
18787
  return;
18717
18788
  }
18718
- seedSession(slug, organisationUuid, workspaceUuid, sent);
18789
+ seedSession(organisationUuid, workspaceUuid, sent);
18719
18790
  updateTokens(accessToken, (_a2 = result == null ? void 0 : result.refresh_token) != null ? _a2 : void 0);
18720
18791
  } catch (verifyError) {
18721
18792
  setError(t(otpErrorKey(verifyError)));
@@ -18772,7 +18843,7 @@ function PrivacyCenterSignIn({ slug }) {
18772
18843
  {
18773
18844
  initialValue: typedContact,
18774
18845
  initialCountryCode: (_a = sent == null ? void 0 : sent.countryCode) != null ? _a : null,
18775
- busy: busy || orgPending,
18846
+ busy,
18776
18847
  disabled: orgUnavailable,
18777
18848
  error: error != null ? error : orgUnavailable ? t("signInOrgUnavailable") : null,
18778
18849
  onSubmit: (value, countryCode) => void handleContact(value, countryCode),
@@ -18782,7 +18853,7 @@ function PrivacyCenterSignIn({ slug }) {
18782
18853
  }
18783
18854
 
18784
18855
  // src/RedactoPrivacyCenter/lib/inactivityTimer.ts
18785
- var import_react48 = require("react");
18856
+ var import_react49 = require("react");
18786
18857
  var createInactivityTimer = ({
18787
18858
  timeoutMs,
18788
18859
  onTimeout,
@@ -18840,9 +18911,9 @@ var createInactivityTimer = ({
18840
18911
  var ACTIVITY_EVENTS = ["pointerdown", "pointermove", "keydown", "wheel", "touchstart", "scroll"];
18841
18912
  var MS_PER_MINUTE = 6e4;
18842
18913
  var useInactivityTimeout = (timeoutMinutes, enabled, onTimeout) => {
18843
- const latest = (0, import_react48.useRef)(onTimeout);
18914
+ const latest = (0, import_react49.useRef)(onTimeout);
18844
18915
  latest.current = onTimeout;
18845
- (0, import_react48.useEffect)(() => {
18916
+ (0, import_react49.useEffect)(() => {
18846
18917
  if (!enabled || !timeoutMinutes || typeof window === "undefined") {
18847
18918
  return void 0;
18848
18919
  }
@@ -18880,51 +18951,50 @@ function PrivacyCenterLayout({ settings, ...props }) {
18880
18951
  }
18881
18952
  function PrivacyCenterLayoutContent({
18882
18953
  children,
18883
- slug,
18954
+ slug = "",
18884
18955
  onBack
18885
18956
  }) {
18886
18957
  const { consentClient } = useBaseUrl();
18887
18958
  const { accessToken: authAccessToken, sessionExpired, expireSession } = useAuth();
18888
18959
  const { settings, builtInSignIn } = usePrivacyCenterSettingsContext();
18889
18960
  const { emitReady } = usePrivacyCenterEvents();
18890
- const [organization, setOrganization] = (0, import_react49.useState)(null);
18891
- const [isCheckingAuth, setIsCheckingAuth] = (0, import_react49.useState)(true);
18892
- const [isLoadingOrg, setIsLoadingOrg] = (0, import_react49.useState)(true);
18893
- const hasRedirectedRef = (0, import_react49.useRef)(false);
18894
- const authCheckInProgressRef = (0, import_react49.useRef)(false);
18895
- (0, import_react49.useEffect)(() => {
18961
+ const [organization, setOrganization] = (0, import_react50.useState)(null);
18962
+ const [isCheckingAuth, setIsCheckingAuth] = (0, import_react50.useState)(true);
18963
+ const [isLoadingOrg, setIsLoadingOrg] = (0, import_react50.useState)(true);
18964
+ const hasRedirectedRef = (0, import_react50.useRef)(false);
18965
+ const authCheckInProgressRef = (0, import_react50.useRef)(false);
18966
+ (0, import_react50.useEffect)(() => {
18967
+ if (slug) warnSlugDeprecated();
18968
+ }, [slug]);
18969
+ (0, import_react50.useEffect)(() => {
18896
18970
  if (typeof window === "undefined") return;
18897
18971
  let accessToken = sessionStorage.getItem("access_token");
18898
18972
  let orgId = sessionStorage.getItem("pc_org_id");
18899
18973
  let workspaceId = sessionStorage.getItem("pc_workspace_id");
18900
- let orgSlug = sessionStorage.getItem("pc_org_slug");
18901
- if (authAccessToken && (!accessToken || !orgId || !workspaceId || !orgSlug)) {
18974
+ if (authAccessToken && (!accessToken || !orgId || !workspaceId)) {
18902
18975
  const decoded = decodeJwtToken(authAccessToken);
18903
18976
  if (decoded) {
18904
18977
  accessToken = accessToken || authAccessToken;
18905
18978
  orgId = orgId || (typeof decoded.organisation_uuid === "string" ? decoded.organisation_uuid : null);
18906
18979
  workspaceId = workspaceId || (typeof decoded.workspace_uuid === "string" ? decoded.workspace_uuid : null);
18907
- orgSlug = orgSlug || (typeof decoded.organisation_slug === "string" ? decoded.organisation_slug : null);
18908
18980
  if (accessToken) sessionStorage.setItem("access_token", accessToken);
18909
18981
  if (orgId) sessionStorage.setItem("pc_org_id", orgId);
18910
18982
  if (workspaceId) sessionStorage.setItem("pc_workspace_id", workspaceId);
18911
- if (orgSlug) sessionStorage.setItem("pc_org_slug", orgSlug);
18912
18983
  const contact = resolveContactFromJwt(decoded);
18913
18984
  if (contact) {
18914
18985
  sessionStorage.setItem("email", contact);
18915
18986
  }
18916
18987
  }
18917
18988
  }
18918
- const effectiveSlug = slug || orgSlug || "";
18919
- if (accessToken && orgId && workspaceId && effectiveSlug) {
18989
+ if (accessToken && orgId && workspaceId) {
18920
18990
  const decoded = decodeJwtToken(accessToken);
18921
18991
  const orgNameFromJwt = decoded == null ? void 0 : decoded.organisation_name;
18922
- const orgName = typeof orgNameFromJwt === "string" && orgNameFromJwt.trim() !== "" ? orgNameFromJwt : effectiveSlug.split("-").map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()).join(" ");
18992
+ const orgName = typeof orgNameFromJwt === "string" && orgNameFromJwt.trim() !== "" ? orgNameFromJwt : "";
18923
18993
  setOrganization({
18924
18994
  uuid: orgId,
18925
18995
  suid: "",
18926
18996
  name: orgName,
18927
- slug: effectiveSlug,
18997
+ slug: "",
18928
18998
  description: "",
18929
18999
  domain: "",
18930
19000
  workspaces: [{
@@ -18945,8 +19015,8 @@ function PrivacyCenterLayoutContent({
18945
19015
  setOrganization(null);
18946
19016
  setIsLoadingOrg(false);
18947
19017
  }
18948
- }, [slug, authAccessToken]);
18949
- (0, import_react49.useEffect)(() => {
19018
+ }, [authAccessToken]);
19019
+ (0, import_react50.useEffect)(() => {
18950
19020
  if (isLoadingOrg || !organization) {
18951
19021
  return;
18952
19022
  }
@@ -18958,7 +19028,7 @@ function PrivacyCenterLayoutContent({
18958
19028
  authCheckInProgressRef.current = true;
18959
19029
  try {
18960
19030
  await checkAndRefreshAuth(
18961
- organization.slug || slug,
19031
+ "",
18962
19032
  organization == null ? void 0 : organization.uuid,
18963
19033
  (_a = organization == null ? void 0 : organization.workspaces[0]) == null ? void 0 : _a.uuid,
18964
19034
  consentClient
@@ -18972,10 +19042,10 @@ function PrivacyCenterLayoutContent({
18972
19042
  }
18973
19043
  };
18974
19044
  checkAuth();
18975
- }, [slug, organization, isLoadingOrg, consentClient, authAccessToken]);
19045
+ }, [organization, isLoadingOrg, consentClient, authAccessToken]);
18976
19046
  const showSignIn = builtInSignIn && !isLoadingOrg && !organization;
18977
19047
  const showPortal = Boolean(organization) && !isLoadingOrg && !isCheckingAuth;
18978
- (0, import_react49.useEffect)(() => {
19048
+ (0, import_react50.useEffect)(() => {
18979
19049
  if (showSignIn || showPortal) {
18980
19050
  emitReady({ signedIn: showPortal });
18981
19051
  }
@@ -18986,7 +19056,7 @@ function PrivacyCenterLayoutContent({
18986
19056
  () => expireSession("timeout")
18987
19057
  );
18988
19058
  if (showSignIn) {
18989
- return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(PrivacyCenterSignIn, { slug });
19059
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(PrivacyCenterSignIn, {});
18990
19060
  }
18991
19061
  if (isLoadingOrg || !organization || isCheckingAuth) {
18992
19062
  return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { style: {
@@ -19001,18 +19071,18 @@ function PrivacyCenterLayoutContent({
19001
19071
  }
19002
19072
 
19003
19073
  // src/RedactoPrivacyCenter/PrivacyCenterHomePage.tsx
19004
- var import_react77 = require("react");
19074
+ var import_react78 = require("react");
19005
19075
 
19006
19076
  // src/RedactoPrivacyCenter/PrivacyCenterConsentManagerPage.tsx
19007
- var import_react58 = require("react");
19077
+ var import_react59 = require("react");
19008
19078
 
19009
19079
  // src/RedactoPrivacyCenter/components/ConsentManager.tsx
19010
- var import_react57 = require("react");
19080
+ var import_react58 = require("react");
19011
19081
  var import_react_i18next33 = require("react-i18next");
19012
19082
  var import_lucide_react18 = require("lucide-react");
19013
19083
 
19014
19084
  // src/RedactoPrivacyCenter/table/AdvancedTable.tsx
19015
- var import_react50 = __toESM(require("react"));
19085
+ var import_react51 = __toESM(require("react"));
19016
19086
  var import_react_i18next24 = require("react-i18next");
19017
19087
  var import_react_table = require("@tanstack/react-table");
19018
19088
  var import_lodash = require("lodash");
@@ -19030,7 +19100,7 @@ function AdvancedTable({
19030
19100
  expandedComponent
19031
19101
  }) {
19032
19102
  const { t } = (0, import_react_i18next24.useTranslation)();
19033
- const [hoveredRowId, setHoveredRowId] = import_react50.default.useState(null);
19103
+ const [hoveredRowId, setHoveredRowId] = import_react51.default.useState(null);
19034
19104
  if (!table) return null;
19035
19105
  return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_jsx_runtime54.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
19036
19106
  "div",
@@ -19077,7 +19147,7 @@ function AdvancedTable({
19077
19147
  onRowClick(row.original, row);
19078
19148
  } : void 0;
19079
19149
  const rowExpandedComponent = expandedComponent || meta.expandedComponent;
19080
- return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react50.default.Fragment, { children: [
19150
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react51.default.Fragment, { children: [
19081
19151
  /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
19082
19152
  PCTable.Row,
19083
19153
  {
@@ -19779,7 +19849,7 @@ function AdvancedTablePagination({
19779
19849
  var import_react_table4 = require("@tanstack/react-table");
19780
19850
 
19781
19851
  // src/RedactoPrivacyCenter/lib/consent-manager/utils.tsx
19782
- var import_react51 = require("react");
19852
+ var import_react52 = require("react");
19783
19853
  var import_react_i18next26 = require("react-i18next");
19784
19854
 
19785
19855
  // src/RedactoPrivacyCenter/utils/date.ts
@@ -19807,7 +19877,7 @@ var CSV_FORMULA_TRIGGERS = ["=", "+", "-", "@", " ", "\r"];
19807
19877
  var UTF8_BOM = "\uFEFF";
19808
19878
  var useStatusOptions = () => {
19809
19879
  const { t } = (0, import_react_i18next26.useTranslation)();
19810
- return (0, import_react51.useMemo)(
19880
+ return (0, import_react52.useMemo)(
19811
19881
  () => [
19812
19882
  { label: t("statusActive"), value: "ACTIVE" /* ACTIVE */ },
19813
19883
  { label: t("statusWithdrawn"), value: "WITHDRAW" /* WITHDRAWN */ },
@@ -19972,7 +20042,7 @@ var ConsentManagerTableSkeleton = () => {
19972
20042
  };
19973
20043
 
19974
20044
  // src/RedactoPrivacyCenter/components/ModifyConsentModal.tsx
19975
- var import_react52 = require("react");
20045
+ var import_react53 = require("react");
19976
20046
  var import_react_i18next27 = require("react-i18next");
19977
20047
  var import_lucide_react14 = require("lucide-react");
19978
20048
  var import_pi3 = require("react-icons/pi");
@@ -19988,11 +20058,11 @@ var ModifyConsentModal = ({
19988
20058
  const { portal } = usePrivacyCenterSettings();
19989
20059
  const copy = useSettingsCopy();
19990
20060
  const withdrawWarning = copy(portal.withdraw_warning) || t("revokeConsentWarning");
19991
- const [isAccordionOpen, setIsAccordionOpen] = (0, import_react52.useState)(false);
19992
- const [selectedDataElementUuids, setSelectedDataElementUuids] = (0, import_react52.useState)([]);
20061
+ const [isAccordionOpen, setIsAccordionOpen] = (0, import_react53.useState)(false);
20062
+ const [selectedDataElementUuids, setSelectedDataElementUuids] = (0, import_react53.useState)([]);
19993
20063
  const nominatorInfo = selectedRecord == null ? void 0 : selectedRecord.nominator;
19994
20064
  const nominatorLabel = (nominatorInfo == null ? void 0 : nominatorInfo.name) || (nominatorInfo == null ? void 0 : nominatorInfo.email) || (nominatorInfo == null ? void 0 : nominatorInfo.org_user_id) || null;
19995
- const actionConfig = (0, import_react52.useMemo)(() => {
20065
+ const actionConfig = (0, import_react53.useMemo)(() => {
19996
20066
  if (!selectedRecord) return null;
19997
20067
  const status = selectedRecord.status;
19998
20068
  if (status === "ACTIVE" /* ACTIVE */) {
@@ -20025,24 +20095,24 @@ var ModifyConsentModal = ({
20025
20095
  return null;
20026
20096
  }, [selectedRecord, t, nominatorLabel, withdrawWarning]);
20027
20097
  const isRegrantAction = (actionConfig == null ? void 0 : actionConfig.action) === "regrant";
20028
- (0, import_react52.useEffect)(() => {
20098
+ (0, import_react53.useEffect)(() => {
20029
20099
  setIsAccordionOpen(isRegrantAction);
20030
20100
  }, [selectedRecord, isRegrantAction]);
20031
- const regrantEligibleDataElements = (0, import_react52.useMemo)(
20101
+ const regrantEligibleDataElements = (0, import_react53.useMemo)(
20032
20102
  () => ((selectedRecord == null ? void 0 : selectedRecord.data_elements) || []).filter(
20033
20103
  (element) => Boolean(element == null ? void 0 : element.uuid) && element.enabled
20034
20104
  ),
20035
20105
  [selectedRecord]
20036
20106
  );
20037
- const requiredDataElementUuids = (0, import_react52.useMemo)(
20107
+ const requiredDataElementUuids = (0, import_react53.useMemo)(
20038
20108
  () => regrantEligibleDataElements.filter((element) => element.required).map((element) => element.uuid),
20039
20109
  [regrantEligibleDataElements]
20040
20110
  );
20041
- const requiredDataElementUuidSet = (0, import_react52.useMemo)(
20111
+ const requiredDataElementUuidSet = (0, import_react53.useMemo)(
20042
20112
  () => new Set(requiredDataElementUuids),
20043
20113
  [requiredDataElementUuids]
20044
20114
  );
20045
- (0, import_react52.useEffect)(() => {
20115
+ (0, import_react53.useEffect)(() => {
20046
20116
  if (isRegrantAction) {
20047
20117
  setSelectedDataElementUuids(regrantEligibleDataElements.map((element) => element.uuid));
20048
20118
  return;
@@ -20239,7 +20309,7 @@ var ModifyConsentModal = ({
20239
20309
  };
20240
20310
 
20241
20311
  // src/RedactoPrivacyCenter/components/ConsentManagerGroupedColumns.tsx
20242
- var import_react53 = require("react");
20312
+ var import_react54 = require("react");
20243
20313
  var import_react_i18next28 = require("react-i18next");
20244
20314
  var import_lucide_react15 = require("lucide-react");
20245
20315
  var import_react_table2 = require("@tanstack/react-table");
@@ -20388,7 +20458,7 @@ var ProductAvatar = ({ name, seed }) => {
20388
20458
  var columnHelper = (0, import_react_table2.createColumnHelper)();
20389
20459
  var useConsentManagerGroupedColumns = () => {
20390
20460
  const { t } = (0, import_react_i18next28.useTranslation)();
20391
- return (0, import_react53.useMemo)(
20461
+ return (0, import_react54.useMemo)(
20392
20462
  () => [
20393
20463
  columnHelper.display({
20394
20464
  id: "expander",
@@ -20536,7 +20606,7 @@ var useConsentManagerGroupedColumns = () => {
20536
20606
  };
20537
20607
 
20538
20608
  // src/RedactoPrivacyCenter/components/ConsentManagerColumns.tsx
20539
- var import_react54 = require("react");
20609
+ var import_react55 = require("react");
20540
20610
  var import_react_i18next29 = require("react-i18next");
20541
20611
  var import_react_table3 = require("@tanstack/react-table");
20542
20612
 
@@ -20713,7 +20783,7 @@ var useConsentManagerColumns = ({
20713
20783
  onOpenModal
20714
20784
  }) => {
20715
20785
  const { t } = (0, import_react_i18next29.useTranslation)();
20716
- return (0, import_react54.useMemo)(
20786
+ return (0, import_react55.useMemo)(
20717
20787
  () => [
20718
20788
  columnHelper2.accessor("name", {
20719
20789
  id: "purpose",
@@ -20958,21 +21028,21 @@ var ConsentManagerExpandedRow = ({
20958
21028
  };
20959
21029
 
20960
21030
  // src/RedactoPrivacyCenter/components/ConsentManagerProductCards.tsx
20961
- var import_react56 = require("react");
21031
+ var import_react57 = require("react");
20962
21032
  var import_react_i18next31 = require("react-i18next");
20963
21033
  var import_dayjs4 = __toESM(require("dayjs"));
20964
21034
  var import_relativeTime3 = __toESM(require("dayjs/plugin/relativeTime"));
20965
21035
  var import_lucide_react17 = require("lucide-react");
20966
21036
 
20967
21037
  // src/shared/Collapse.tsx
20968
- var import_react55 = require("react");
21038
+ var import_react56 = require("react");
20969
21039
  var import_jsx_runtime62 = require("react/jsx-runtime");
20970
21040
  var Collapse = ({ open, id, children }) => {
20971
- const [mounted, setMounted] = (0, import_react55.useState)(open);
20972
- const [expanded, setExpanded] = (0, import_react55.useState)(open);
20973
- const frameRef = (0, import_react55.useRef)(null);
20974
- const rootRef = (0, import_react55.useRef)(null);
20975
- (0, import_react55.useEffect)(() => {
21041
+ const [mounted, setMounted] = (0, import_react56.useState)(open);
21042
+ const [expanded, setExpanded] = (0, import_react56.useState)(open);
21043
+ const frameRef = (0, import_react56.useRef)(null);
21044
+ const rootRef = (0, import_react56.useRef)(null);
21045
+ (0, import_react56.useEffect)(() => {
20976
21046
  if (open) {
20977
21047
  setMounted(true);
20978
21048
  frameRef.current = requestAnimationFrame(() => {
@@ -21105,11 +21175,11 @@ function ConsentManagerProductCards({
21105
21175
  cardKeyFor
21106
21176
  }) {
21107
21177
  const { t } = (0, import_react_i18next31.useTranslation)();
21108
- const [expandedCards, setExpandedCards] = (0, import_react56.useState)({});
21178
+ const [expandedCards, setExpandedCards] = (0, import_react57.useState)({});
21109
21179
  const handleToggle = (key) => {
21110
21180
  setExpandedCards((prev) => ({ ...prev, [key]: !prev[key] }));
21111
21181
  };
21112
- const getStatusItems = (0, import_react56.useMemo)(
21182
+ const getStatusItems = (0, import_react57.useMemo)(
21113
21183
  () => (group) => {
21114
21184
  const items = [];
21115
21185
  if (group.active_purposes > 0) {
@@ -21354,69 +21424,69 @@ function ConsentManager({ variant }) {
21354
21424
  const organizationId = organization == null ? void 0 : organization.uuid;
21355
21425
  const workspaceId = (_a = organization == null ? void 0 : organization.workspaces[0]) == null ? void 0 : _a.uuid;
21356
21426
  const contact = sessionStorage.getItem("email") || "";
21357
- const authContext = (0, import_react57.useMemo)(() => ({
21427
+ const authContext = (0, import_react58.useMemo)(() => ({
21358
21428
  accessToken,
21359
21429
  refreshToken,
21360
21430
  onError,
21361
21431
  updateTokens
21362
21432
  }), [accessToken, refreshToken, onError, updateTokens]);
21363
21433
  const { langParam } = useCurrentLanguage();
21364
- const [activeTab, setActiveTab] = (0, import_react57.useState)("direct");
21365
- const [viewMode, setViewMode] = (0, import_react57.useState)("product");
21366
- const [consentDetail, setConsentDetail] = (0, import_react57.useState)(null);
21367
- const [consentGroups, setConsentGroups] = (0, import_react57.useState)([]);
21368
- const [consentRows, setConsentRows] = (0, import_react57.useState)([]);
21369
- const [isLoading, setIsLoading] = (0, import_react57.useState)(true);
21370
- const [searchQuery, setSearchQuery] = (0, import_react57.useState)("");
21371
- const [debouncedSearch, setDebouncedSearch] = (0, import_react57.useState)("");
21372
- const [statusFilter, setStatusFilter] = (0, import_react57.useState)(
21434
+ const [activeTab, setActiveTab] = (0, import_react58.useState)("direct");
21435
+ const [viewMode, setViewMode] = (0, import_react58.useState)("product");
21436
+ const [consentDetail, setConsentDetail] = (0, import_react58.useState)(null);
21437
+ const [consentGroups, setConsentGroups] = (0, import_react58.useState)([]);
21438
+ const [consentRows, setConsentRows] = (0, import_react58.useState)([]);
21439
+ const [isLoading, setIsLoading] = (0, import_react58.useState)(true);
21440
+ const [searchQuery, setSearchQuery] = (0, import_react58.useState)("");
21441
+ const [debouncedSearch, setDebouncedSearch] = (0, import_react58.useState)("");
21442
+ const [statusFilter, setStatusFilter] = (0, import_react58.useState)(
21373
21443
  null
21374
21444
  );
21375
- const [productFilter, setProductFilter] = (0, import_react57.useState)(null);
21376
- const [productOptions, setProductOptions] = (0, import_react57.useState)(
21445
+ const [productFilter, setProductFilter] = (0, import_react58.useState)(null);
21446
+ const [productOptions, setProductOptions] = (0, import_react58.useState)(
21377
21447
  []
21378
21448
  );
21379
- const [isModalOpen, setIsModalOpen] = (0, import_react57.useState)(false);
21380
- const [selectedRecord, setSelectedRecord] = (0, import_react57.useState)(
21449
+ const [isModalOpen, setIsModalOpen] = (0, import_react58.useState)(false);
21450
+ const [selectedRecord, setSelectedRecord] = (0, import_react58.useState)(
21381
21451
  null
21382
21452
  );
21383
- const [exportModal, setExportModal] = (0, import_react57.useState)(false);
21384
- const [isManageLoading, setIsManageLoading] = (0, import_react57.useState)(false);
21385
- const [currentPage, setCurrentPage] = (0, import_react57.useState)(DEFAULT_PAGE);
21386
- const [pageSize, setPageSize] = (0, import_react57.useState)(DEFAULT_PAGE_SIZE);
21387
- const [expanded, setExpanded] = (0, import_react57.useState)({});
21388
- const [extraPurposesByKey, setExtraPurposesByKey] = (0, import_react57.useState)({});
21389
- const [hasMoreByKey, setHasMoreByKey] = (0, import_react57.useState)({});
21390
- const [loadingMoreByKey, setLoadingMoreByKey] = (0, import_react57.useState)({});
21391
- const composedSearchPlaceholder = (0, import_react57.useMemo)(
21453
+ const [exportModal, setExportModal] = (0, import_react58.useState)(false);
21454
+ const [isManageLoading, setIsManageLoading] = (0, import_react58.useState)(false);
21455
+ const [currentPage, setCurrentPage] = (0, import_react58.useState)(DEFAULT_PAGE);
21456
+ const [pageSize, setPageSize] = (0, import_react58.useState)(DEFAULT_PAGE_SIZE);
21457
+ const [expanded, setExpanded] = (0, import_react58.useState)({});
21458
+ const [extraPurposesByKey, setExtraPurposesByKey] = (0, import_react58.useState)({});
21459
+ const [hasMoreByKey, setHasMoreByKey] = (0, import_react58.useState)({});
21460
+ const [loadingMoreByKey, setLoadingMoreByKey] = (0, import_react58.useState)({});
21461
+ const composedSearchPlaceholder = (0, import_react58.useMemo)(
21392
21462
  () => `${t("search")} ${t("consent")}, ${t("product")}, ${t("purpose")}...`,
21393
21463
  [t]
21394
21464
  );
21395
- const allStatusOption = (0, import_react57.useMemo)(
21465
+ const allStatusOption = (0, import_react58.useMemo)(
21396
21466
  () => ({
21397
21467
  label: `${t("all")} ${t("status")}`,
21398
21468
  value: "__all__"
21399
21469
  }),
21400
21470
  [t]
21401
21471
  );
21402
- const allProductOption = (0, import_react57.useMemo)(
21472
+ const allProductOption = (0, import_react58.useMemo)(
21403
21473
  () => ({
21404
21474
  label: `${t("all")} ${t("product")}`,
21405
21475
  value: "__all__"
21406
21476
  }),
21407
21477
  [t]
21408
21478
  );
21409
- const statusFilterOptions = (0, import_react57.useMemo)(
21479
+ const statusFilterOptions = (0, import_react58.useMemo)(
21410
21480
  () => [allStatusOption, ...statusOptions],
21411
21481
  [allStatusOption, statusOptions]
21412
21482
  );
21413
- const productFilterOptions = (0, import_react57.useMemo)(
21483
+ const productFilterOptions = (0, import_react58.useMemo)(
21414
21484
  () => [allProductOption, ...productOptions],
21415
21485
  [allProductOption, productOptions]
21416
21486
  );
21417
21487
  const statusSelectValue = statusFilter != null ? statusFilter : allStatusOption;
21418
21488
  const productSelectValue = productFilter != null ? productFilter : allProductOption;
21419
- (0, import_react57.useEffect)(() => {
21489
+ (0, import_react58.useEffect)(() => {
21420
21490
  if (statusFilter) {
21421
21491
  const updated = statusOptions.find((opt) => opt.value === statusFilter.value);
21422
21492
  if (updated && updated.label !== statusFilter.label) {
@@ -21424,7 +21494,7 @@ function ConsentManager({ variant }) {
21424
21494
  }
21425
21495
  }
21426
21496
  }, [statusOptions, statusFilter]);
21427
- (0, import_react57.useEffect)(() => {
21497
+ (0, import_react58.useEffect)(() => {
21428
21498
  if (productFilter) {
21429
21499
  const updated = productOptions.find((opt) => opt.value === productFilter.value);
21430
21500
  if (updated && updated.label !== productFilter.label) {
@@ -21432,7 +21502,7 @@ function ConsentManager({ variant }) {
21432
21502
  }
21433
21503
  }
21434
21504
  }, [productOptions, productFilter]);
21435
- (0, import_react57.useEffect)(() => {
21505
+ (0, import_react58.useEffect)(() => {
21436
21506
  const status = consentDetail == null ? void 0 : consentDetail.user_status;
21437
21507
  if (status === "TRANSFERRED") {
21438
21508
  setHeaderStatus({ label: t("statusTransferred"), variant: "warning" });
@@ -21443,25 +21513,25 @@ function ConsentManager({ variant }) {
21443
21513
  }
21444
21514
  return () => setHeaderStatus(null);
21445
21515
  }, [consentDetail == null ? void 0 : consentDetail.user_status, setHeaderStatus, t]);
21446
- (0, import_react57.useEffect)(() => {
21516
+ (0, import_react58.useEffect)(() => {
21447
21517
  const timer = setTimeout(() => {
21448
21518
  setDebouncedSearch(searchQuery);
21449
21519
  }, SEARCH_DEBOUNCE_DELAY);
21450
21520
  return () => clearTimeout(timer);
21451
21521
  }, [searchQuery]);
21452
- const handleOpenModal = (0, import_react57.useCallback)((record) => {
21522
+ const handleOpenModal = (0, import_react58.useCallback)((record) => {
21453
21523
  setSelectedRecord(record);
21454
21524
  setIsModalOpen(true);
21455
21525
  }, []);
21456
- const getCardKey = (0, import_react57.useCallback)(
21526
+ const getCardKey = (0, import_react58.useCallback)(
21457
21527
  (group) => group.nominator ? `nominated:${group.nominator.uuid}:${group.product_uuid}` : `direct:${group.product_uuid}`,
21458
21528
  []
21459
21529
  );
21460
- const handleCloseModal = (0, import_react57.useCallback)(() => {
21530
+ const handleCloseModal = (0, import_react58.useCallback)(() => {
21461
21531
  setIsModalOpen(false);
21462
21532
  setSelectedRecord(null);
21463
21533
  }, []);
21464
- const matchesPurpose = (0, import_react57.useCallback)(
21534
+ const matchesPurpose = (0, import_react58.useCallback)(
21465
21535
  (purpose, group, normalizedSearch, statusValue) => {
21466
21536
  var _a2;
21467
21537
  const matchesSearch = !normalizedSearch || [
@@ -21477,7 +21547,7 @@ function ConsentManager({ variant }) {
21477
21547
  },
21478
21548
  []
21479
21549
  );
21480
- const buildDisplayGroups = (0, import_react57.useCallback)(
21550
+ const buildDisplayGroups = (0, import_react58.useCallback)(
21481
21551
  (groups, search, statusValue, productUuid) => {
21482
21552
  if (!groups || groups.length === 0) return [];
21483
21553
  const normalizedSearch = search.trim().toLowerCase();
@@ -21534,7 +21604,7 @@ function ConsentManager({ variant }) {
21534
21604
  },
21535
21605
  [matchesPurpose]
21536
21606
  );
21537
- const flattenProductGroups = (0, import_react57.useCallback)(
21607
+ const flattenProductGroups = (0, import_react58.useCallback)(
21538
21608
  (groups) => {
21539
21609
  if (!groups || groups.length === 0) return [];
21540
21610
  return groups.flatMap(
@@ -21549,7 +21619,7 @@ function ConsentManager({ variant }) {
21549
21619
  },
21550
21620
  []
21551
21621
  );
21552
- const filterConsentRows = (0, import_react57.useCallback)(
21622
+ const filterConsentRows = (0, import_react58.useCallback)(
21553
21623
  (rows, search, statusValue, productUuid) => {
21554
21624
  const normalizedSearch = search.trim().toLowerCase();
21555
21625
  return rows.filter((row) => {
@@ -21571,7 +21641,7 @@ function ConsentManager({ variant }) {
21571
21641
  },
21572
21642
  []
21573
21643
  );
21574
- const buildProductOptionsFromGroups = (0, import_react57.useCallback)(
21644
+ const buildProductOptionsFromGroups = (0, import_react58.useCallback)(
21575
21645
  (groups) => {
21576
21646
  if (!groups || groups.length === 0) return [];
21577
21647
  const productMap = /* @__PURE__ */ new Map();
@@ -21591,7 +21661,7 @@ function ConsentManager({ variant }) {
21591
21661
  const purposeColumns = useConsentManagerColumns({
21592
21662
  onOpenModal: handleOpenModal
21593
21663
  });
21594
- const groupedTableClassNames = (0, import_react57.useMemo)(
21664
+ const groupedTableClassNames = (0, import_react58.useMemo)(
21595
21665
  () => ({
21596
21666
  container: "pc-consent-table-container",
21597
21667
  tableClassName: "pc-consent-table",
@@ -21605,7 +21675,7 @@ function ConsentManager({ variant }) {
21605
21675
  }),
21606
21676
  []
21607
21677
  );
21608
- const purposeTableClassNames = (0, import_react57.useMemo)(
21678
+ const purposeTableClassNames = (0, import_react58.useMemo)(
21609
21679
  () => ({
21610
21680
  container: "pc-consent-table-container",
21611
21681
  tableClassName: "pc-consent-table pc-consent-table-purpose",
@@ -21617,7 +21687,7 @@ function ConsentManager({ variant }) {
21617
21687
  }),
21618
21688
  []
21619
21689
  );
21620
- const fetchData = (0, import_react57.useCallback)(async () => {
21690
+ const fetchData = (0, import_react58.useCallback)(async () => {
21621
21691
  if (!organizationId || !workspaceId) {
21622
21692
  return;
21623
21693
  }
@@ -21702,15 +21772,15 @@ function ConsentManager({ variant }) {
21702
21772
  buildProductOptionsFromGroups,
21703
21773
  t
21704
21774
  ]);
21705
- (0, import_react57.useEffect)(() => {
21775
+ (0, import_react58.useEffect)(() => {
21706
21776
  fetchData();
21707
21777
  }, [fetchData]);
21708
- const groupedPurposeCount = (0, import_react57.useMemo)(
21778
+ const groupedPurposeCount = (0, import_react58.useMemo)(
21709
21779
  () => consentGroups.reduce((sum, group) => sum + group.purposes.length, 0),
21710
21780
  [consentGroups]
21711
21781
  );
21712
21782
  const visibleConsentCount = viewMode === "product" ? groupedPurposeCount : consentRows.length;
21713
- const visibleProductCount = (0, import_react57.useMemo)(() => {
21783
+ const visibleProductCount = (0, import_react58.useMemo)(() => {
21714
21784
  if (viewMode === "product") {
21715
21785
  return consentGroups.length;
21716
21786
  }
@@ -21720,13 +21790,13 @@ function ConsentManager({ variant }) {
21720
21790
  productIds.delete("");
21721
21791
  return productIds.size;
21722
21792
  }, [viewMode, consentGroups, consentRows]);
21723
- const tableTotalCount = (0, import_react57.useMemo)(() => {
21793
+ const tableTotalCount = (0, import_react58.useMemo)(() => {
21724
21794
  var _a2;
21725
21795
  const pagination = activeTab === "direct" ? consentDetail == null ? void 0 : consentDetail.direct_pagination : consentDetail == null ? void 0 : consentDetail.nominated_pagination;
21726
21796
  return (_a2 = pagination == null ? void 0 : pagination.total_count) != null ? _a2 : 0;
21727
21797
  }, [activeTab, consentDetail]);
21728
21798
  const tablePageCount = Math.ceil(tableTotalCount / pageSize) || 0;
21729
- const handlePaginationChange = (0, import_react57.useCallback)(
21799
+ const handlePaginationChange = (0, import_react58.useCallback)(
21730
21800
  (updater) => {
21731
21801
  const next = typeof updater === "function" ? updater({ pageIndex: currentPage - 1, pageSize }) : updater;
21732
21802
  const nextPage = next.pageIndex + 1;
@@ -21826,7 +21896,7 @@ function ConsentManager({ variant }) {
21826
21896
  setCurrentPage(DEFAULT_PAGE);
21827
21897
  setExpanded({});
21828
21898
  };
21829
- const handleExport = (0, import_react57.useCallback)(() => {
21899
+ const handleExport = (0, import_react58.useCallback)(() => {
21830
21900
  const toRow = (purpose, productName) => {
21831
21901
  var _a2, _b2;
21832
21902
  return {
@@ -21847,7 +21917,7 @@ function ConsentManager({ variant }) {
21847
21917
  exportTableToCSV(rows);
21848
21918
  setExportModal(false);
21849
21919
  }, [viewMode, productTable, purposeTable, t]);
21850
- const handleLoadMorePurposes = (0, import_react57.useCallback)(
21920
+ const handleLoadMorePurposes = (0, import_react58.useCallback)(
21851
21921
  async (group) => {
21852
21922
  var _a2, _b2, _c2;
21853
21923
  if (!organizationId || !workspaceId) return;
@@ -21907,7 +21977,7 @@ function ConsentManager({ variant }) {
21907
21977
  t
21908
21978
  ]
21909
21979
  );
21910
- const handleManageConsent = (0, import_react57.useCallback)(
21980
+ const handleManageConsent = (0, import_react58.useCallback)(
21911
21981
  async (purposeId, action, nominatorContact, dataElementUuids, productUuid, nominatorUuid) => {
21912
21982
  var _a2, _b2, _c2;
21913
21983
  if (!organizationId || !workspaceId || !contact) {
@@ -22439,7 +22509,7 @@ function WelcomeBanner() {
22439
22509
  // src/RedactoPrivacyCenter/PrivacyCenterConsentManagerPage.tsx
22440
22510
  var import_jsx_runtime67 = require("react/jsx-runtime");
22441
22511
  function PrivacyCenterConsentManagerPage() {
22442
- (0, import_react58.useEffect)(() => {
22512
+ (0, import_react59.useEffect)(() => {
22443
22513
  if (!i18n_default.language) {
22444
22514
  i18n_default.changeLanguage("en");
22445
22515
  }
@@ -22451,7 +22521,7 @@ function PrivacyCenterConsentManagerPage() {
22451
22521
  }
22452
22522
 
22453
22523
  // src/RedactoPrivacyCenter/PrivacyCenterFormPage.tsx
22454
- var import_react65 = require("react");
22524
+ var import_react66 = require("react");
22455
22525
  var import_react_i18next45 = require("react-i18next");
22456
22526
  var import_io55 = require("react-icons/io5");
22457
22527
 
@@ -22571,7 +22641,7 @@ function FormBlockWrapper({
22571
22641
 
22572
22642
  // src/RedactoPrivacyCenter/components/Form.tsx
22573
22643
  var import_react_query = require("@tanstack/react-query");
22574
- var import_react61 = require("react");
22644
+ var import_react62 = require("react");
22575
22645
  var import_react_i18next40 = require("react-i18next");
22576
22646
  var import_ai = require("react-icons/ai");
22577
22647
  var import_pi4 = require("react-icons/pi");
@@ -22976,7 +23046,7 @@ function NominationDataSection({
22976
23046
  }
22977
23047
 
22978
23048
  // src/RedactoPrivacyCenter/components/DataRequest/ProductSelectionSection.tsx
22979
- var import_react59 = require("react");
23049
+ var import_react60 = require("react");
22980
23050
  var import_react_i18next37 = require("react-i18next");
22981
23051
  var import_jsx_runtime72 = require("react/jsx-runtime");
22982
23052
  var getVar18 = (varName) => `var(${varName})`;
@@ -23055,7 +23125,7 @@ function ProductSelectionSection({
23055
23125
  const totalGroups = directGroups.length + nominatedGroups.length;
23056
23126
  const isSingleGroup = totalGroups === 1;
23057
23127
  const singleGroup = isSingleGroup ? (_b = (_a = directGroups[0]) != null ? _a : nominatedGroups[0]) != null ? _b : null : null;
23058
- (0, import_react59.useEffect)(() => {
23128
+ (0, import_react60.useEffect)(() => {
23059
23129
  if (!singleGroup) {
23060
23130
  return;
23061
23131
  }
@@ -23150,7 +23220,7 @@ function ProductSelectionSection({
23150
23220
  // src/RedactoPrivacyCenter/components/DataRequest/PurposeSelectionSection.tsx
23151
23221
  var import_lucide_react19 = require("lucide-react");
23152
23222
  var import_react_i18next38 = require("react-i18next");
23153
- var import_react60 = require("react");
23223
+ var import_react61 = require("react");
23154
23224
  var import_jsx_runtime73 = require("react/jsx-runtime");
23155
23225
  var getVar19 = (varName) => `var(${varName})`;
23156
23226
  function PurposeSelectionSection({
@@ -23161,9 +23231,9 @@ function PurposeSelectionSection({
23161
23231
  }) {
23162
23232
  const isAccess = requestType === "ACCESS" /* ACCESS */;
23163
23233
  const isErasure = requestType === "erasure" /* ERASURE */;
23164
- const [selectAllChecked, setSelectAllChecked] = (0, import_react60.useState)(false);
23165
- const [openIndexes, setOpenIndexes] = (0, import_react60.useState)([]);
23166
- (0, import_react60.useEffect)(() => {
23234
+ const [selectAllChecked, setSelectAllChecked] = (0, import_react61.useState)(false);
23235
+ const [openIndexes, setOpenIndexes] = (0, import_react61.useState)([]);
23236
+ (0, import_react61.useEffect)(() => {
23167
23237
  setSelectAllChecked(false);
23168
23238
  setOpenIndexes([]);
23169
23239
  }, [requestType]);
@@ -23180,7 +23250,7 @@ function PurposeSelectionSection({
23180
23250
  }));
23181
23251
  setPurposes(updated);
23182
23252
  };
23183
- (0, import_react60.useEffect)(() => {
23253
+ (0, import_react61.useEffect)(() => {
23184
23254
  const allSelected = purposes.every(
23185
23255
  (p) => p.data_elements.every((de) => de.selected)
23186
23256
  );
@@ -23790,24 +23860,23 @@ function Form({
23790
23860
  const queryClient = (0, import_react_query.useQueryClient)();
23791
23861
  const timePeriodOptions = useTimePeriodOptions();
23792
23862
  const { organization } = useOrganization();
23793
- const orgSlug = (organization == null ? void 0 : organization.slug) || (organization == null ? void 0 : organization.name) || "";
23794
23863
  const isCaseManagementContext = typeof window !== "undefined" && window.location.pathname.includes("/case-management");
23795
- const [requestType, setRequestType] = (0, import_react61.useState)(null);
23796
- const [timePeriod, setTimePeriod] = (0, import_react61.useState)("");
23797
- const [isSubmitted, setIsSubmitted] = (0, import_react61.useState)(false);
23864
+ const [requestType, setRequestType] = (0, import_react62.useState)(null);
23865
+ const [timePeriod, setTimePeriod] = (0, import_react62.useState)("");
23866
+ const [isSubmitted, setIsSubmitted] = (0, import_react62.useState)(false);
23798
23867
  const { t } = (0, import_react_i18next40.useTranslation)();
23799
23868
  const { accessToken, refreshToken, onError, updateTokens } = useAuth();
23800
23869
  const { consentClient, baseUrl } = useBaseUrl();
23801
23870
  const organizationId = organization == null ? void 0 : organization.uuid;
23802
23871
  const workspaceId = (_a = organization == null ? void 0 : organization.workspaces[0]) == null ? void 0 : _a.uuid;
23803
- const authContext = (0, import_react61.useMemo)(() => ({
23872
+ const authContext = (0, import_react62.useMemo)(() => ({
23804
23873
  accessToken,
23805
23874
  refreshToken,
23806
23875
  onError,
23807
23876
  updateTokens
23808
23877
  }), [accessToken, refreshToken, onError, updateTokens]);
23809
- const [data, setData] = (0, import_react61.useState)(null);
23810
- const [formData, setFormData] = (0, import_react61.useState)({
23878
+ const [data, setData] = (0, import_react62.useState)(null);
23879
+ const [formData, setFormData] = (0, import_react62.useState)({
23811
23880
  uuid: "",
23812
23881
  case_id: "",
23813
23882
  name: "",
@@ -23818,38 +23887,38 @@ function Form({
23818
23887
  additionalNote: "",
23819
23888
  confirmCheckBox: false
23820
23889
  });
23821
- const [selectedProductKey, setSelectedProductKey] = (0, import_react61.useState)(
23890
+ const [selectedProductKey, setSelectedProductKey] = (0, import_react62.useState)(
23822
23891
  null
23823
23892
  );
23824
- const [selectedPurposes, setSelectedPurposes] = (0, import_react61.useState)([]);
23825
- const [selectedCorrectionElements, setSelectedCorrectionElements] = (0, import_react61.useState)([]);
23826
- const [correctionValues, setCorrectionValues] = (0, import_react61.useState)({});
23827
- const [submittedCase, setSubmittedCase] = (0, import_react61.useState)(
23893
+ const [selectedPurposes, setSelectedPurposes] = (0, import_react62.useState)([]);
23894
+ const [selectedCorrectionElements, setSelectedCorrectionElements] = (0, import_react62.useState)([]);
23895
+ const [correctionValues, setCorrectionValues] = (0, import_react62.useState)({});
23896
+ const [submittedCase, setSubmittedCase] = (0, import_react62.useState)(
23828
23897
  null
23829
23898
  );
23830
- const fileInputRef = (0, import_react61.useRef)(null);
23831
- const englishDataRef = (0, import_react61.useRef)(null);
23832
- const [uploadedDocumentId, setUploadedDocumentId] = (0, import_react61.useState)([]);
23833
- const [uploadedDocuments, setUploadedDocuments] = (0, import_react61.useState)([]);
23834
- const [isDocumentUploading, setIsDocumentUploading] = (0, import_react61.useState)(false);
23835
- const [isDocument, setIsDocument] = (0, import_react61.useState)(false);
23836
- const [isPopupFormEnabled, setIsPopupFormEnabled] = (0, import_react61.useState)(!isPopup);
23837
- const [isVerifyingContact, setIsVerifyingContact] = (0, import_react61.useState)(false);
23899
+ const fileInputRef = (0, import_react62.useRef)(null);
23900
+ const englishDataRef = (0, import_react62.useRef)(null);
23901
+ const [uploadedDocumentId, setUploadedDocumentId] = (0, import_react62.useState)([]);
23902
+ const [uploadedDocuments, setUploadedDocuments] = (0, import_react62.useState)([]);
23903
+ const [isDocumentUploading, setIsDocumentUploading] = (0, import_react62.useState)(false);
23904
+ const [isDocument, setIsDocument] = (0, import_react62.useState)(false);
23905
+ const [isPopupFormEnabled, setIsPopupFormEnabled] = (0, import_react62.useState)(!isPopup);
23906
+ const [isVerifyingContact, setIsVerifyingContact] = (0, import_react62.useState)(false);
23838
23907
  const requestTypeLabels = useRequestTypeLabels();
23839
23908
  const {
23840
23909
  settings: { portal },
23841
23910
  isCustomised
23842
23911
  } = usePrivacyCenterSettingsContext();
23843
23912
  const { emitRequestSubmit } = usePrivacyCenterEvents();
23844
- const [serverRequestTypes, setServerRequestTypes] = (0, import_react61.useState)(null);
23845
- const [rawGrievanceOptions, setGrievanceOptions] = (0, import_react61.useState)(
23913
+ const [serverRequestTypes, setServerRequestTypes] = (0, import_react62.useState)(null);
23914
+ const [rawGrievanceOptions, setGrievanceOptions] = (0, import_react62.useState)(
23846
23915
  []
23847
23916
  );
23848
- const grievanceOptions = (0, import_react61.useMemo)(
23917
+ const grievanceOptions = (0, import_react62.useMemo)(
23849
23918
  () => filterGrievanceOptions(rawGrievanceOptions, portal.grievance_categories),
23850
23919
  [rawGrievanceOptions, portal.grievance_categories]
23851
23920
  );
23852
- const requestTypeSelectOptions = (0, import_react61.useMemo)(
23921
+ const requestTypeSelectOptions = (0, import_react62.useMemo)(
23853
23922
  () => requestTypeOptions(portal.request_types, serverRequestTypes, !isCustomised).map((option2) => {
23854
23923
  var _a2;
23855
23924
  return {
@@ -23859,27 +23928,27 @@ function Form({
23859
23928
  }),
23860
23929
  [portal.request_types, serverRequestTypes, isCustomised, requestTypeLabels]
23861
23930
  );
23862
- (0, import_react61.useEffect)(() => {
23931
+ (0, import_react62.useEffect)(() => {
23863
23932
  if (requestType && !requestTypeSelectOptions.some((option2) => option2.value === requestType)) {
23864
23933
  setRequestType(null);
23865
23934
  }
23866
23935
  }, [requestType, requestTypeSelectOptions]);
23867
- const [selectedGrievances, setSelectedGrievances] = (0, import_react61.useState)({});
23868
- const [nominationData, setNominationData] = (0, import_react61.useState)({
23936
+ const [selectedGrievances, setSelectedGrievances] = (0, import_react62.useState)({});
23937
+ const [nominationData, setNominationData] = (0, import_react62.useState)({
23869
23938
  nominee_email: "",
23870
23939
  nominee_mobile: ""
23871
23940
  });
23872
- const [isLoading, setIsLoading] = (0, import_react61.useState)(false);
23873
- const [isTranslating, setIsTranslating] = (0, import_react61.useState)(false);
23874
- const [isRequestDetailsExpanded, setIsRequestDetailsExpanded] = (0, import_react61.useState)(true);
23875
- const [isErasureConsentModalOpen, setIsErasureConsentModalOpen] = (0, import_react61.useState)(false);
23876
- const [revokeConsentOnFulfilment, setRevokeConsentOnFulfilment] = (0, import_react61.useState)(false);
23941
+ const [isLoading, setIsLoading] = (0, import_react62.useState)(false);
23942
+ const [isTranslating, setIsTranslating] = (0, import_react62.useState)(false);
23943
+ const [isRequestDetailsExpanded, setIsRequestDetailsExpanded] = (0, import_react62.useState)(true);
23944
+ const [isErasureConsentModalOpen, setIsErasureConsentModalOpen] = (0, import_react62.useState)(false);
23945
+ const [revokeConsentOnFulfilment, setRevokeConsentOnFulfilment] = (0, import_react62.useState)(false);
23877
23946
  const resetFileInput = () => {
23878
23947
  if (fileInputRef.current) {
23879
23948
  fileInputRef.current.value = "";
23880
23949
  }
23881
23950
  };
23882
- const allGroups = (0, import_react61.useMemo)(() => {
23951
+ const allGroups = (0, import_react62.useMemo)(() => {
23883
23952
  var _a2, _b2;
23884
23953
  if (!data) {
23885
23954
  return [];
@@ -23898,7 +23967,7 @@ function Form({
23898
23967
  return [flatGroup];
23899
23968
  }, [data, t]);
23900
23969
  const skipProductStep = allGroups.length === 1;
23901
- const selectedGroup = (0, import_react61.useMemo)(() => {
23970
+ const selectedGroup = (0, import_react62.useMemo)(() => {
23902
23971
  var _a2, _b2;
23903
23972
  if (selectedProductKey) {
23904
23973
  return (_a2 = allGroups.find((g) => productGroupKey(g) === selectedProductKey)) != null ? _a2 : null;
@@ -23908,13 +23977,13 @@ function Form({
23908
23977
  }
23909
23978
  return null;
23910
23979
  }, [allGroups, selectedProductKey, skipProductStep]);
23911
- const handleProductSelect = (0, import_react61.useCallback)(
23980
+ const handleProductSelect = (0, import_react62.useCallback)(
23912
23981
  (key, _group) => {
23913
23982
  setSelectedProductKey(key);
23914
23983
  },
23915
23984
  []
23916
23985
  );
23917
- const withUserConsentPickerGroups = (0, import_react61.useCallback)(
23986
+ const withUserConsentPickerGroups = (0, import_react62.useCallback)(
23918
23987
  async (form, language) => {
23919
23988
  var _a2, _b2;
23920
23989
  if (isPopup || isCaseManagementContext || !organizationId || !workspaceId) {
@@ -23952,7 +24021,7 @@ function Form({
23952
24021
  consentClient
23953
24022
  ]
23954
24023
  );
23955
- const fetchAndApplyTranslations = (0, import_react61.useCallback)(async (langValue) => {
24024
+ const fetchAndApplyTranslations = (0, import_react62.useCallback)(async (langValue) => {
23956
24025
  if (!organizationId || !workspaceId || !data) {
23957
24026
  return;
23958
24027
  }
@@ -24000,7 +24069,7 @@ function Form({
24000
24069
  setIsTranslating(false);
24001
24070
  }
24002
24071
  }, [organizationId, workspaceId, data, formData.contact, isPopup, isCaseManagementContext, authContext, consentClient, selectedGrievances, t, withUserConsentPickerGroups, portal.grievance_categories]);
24003
- (0, import_react61.useEffect)(() => {
24072
+ (0, import_react62.useEffect)(() => {
24004
24073
  if (!skipProductStep) {
24005
24074
  setSelectedProductKey(null);
24006
24075
  }
@@ -24016,7 +24085,7 @@ function Form({
24016
24085
  setSelectedGrievances(resetGrievances);
24017
24086
  }
24018
24087
  }, [requestType, grievanceOptions, skipProductStep]);
24019
- (0, import_react61.useEffect)(() => {
24088
+ (0, import_react62.useEffect)(() => {
24020
24089
  if (!skipProductStep) {
24021
24090
  return;
24022
24091
  }
@@ -24027,7 +24096,7 @@ function Form({
24027
24096
  const key = productGroupKey(onlyGroup);
24028
24097
  setSelectedProductKey((prev) => prev === key ? prev : key);
24029
24098
  }, [skipProductStep, allGroups, requestType]);
24030
- (0, import_react61.useEffect)(() => {
24099
+ (0, import_react62.useEffect)(() => {
24031
24100
  if (!selectedGroup || !isProductScopedRequestType(requestType)) {
24032
24101
  setSelectedPurposes([]);
24033
24102
  setSelectedCorrectionElements([]);
@@ -24038,7 +24107,7 @@ function Form({
24038
24107
  setSelectedCorrectionElements([]);
24039
24108
  setCorrectionValues({});
24040
24109
  }, [selectedGroup, requestType]);
24041
- (0, import_react61.useEffect)(() => {
24110
+ (0, import_react62.useEffect)(() => {
24042
24111
  const handleLanguageChanged = () => {
24043
24112
  const lang = i18n_default.language;
24044
24113
  if (organizationId && workspaceId && data) {
@@ -24053,7 +24122,7 @@ function Form({
24053
24122
  i18n_default.off("languageChanged", handleLanguageChanged);
24054
24123
  };
24055
24124
  }, [organizationId, workspaceId, data, formData.contact, fetchAndApplyTranslations]);
24056
- (0, import_react61.useEffect)(() => {
24125
+ (0, import_react62.useEffect)(() => {
24057
24126
  const initializePrivacyCenterForm = async () => {
24058
24127
  if (isPopup) {
24059
24128
  return;
@@ -24136,7 +24205,7 @@ function Form({
24136
24205
  };
24137
24206
  void initializePrivacyCenterForm();
24138
24207
  }, [organizationId, workspaceId, isPopup, authContext, consentClient, withUserConsentPickerGroups]);
24139
- const getEnglishDataElementName = (0, import_react61.useCallback)((translatedName) => {
24208
+ const getEnglishDataElementName = (0, import_react62.useCallback)((translatedName) => {
24140
24209
  var _a2, _b2, _c2;
24141
24210
  if (!((_a2 = englishDataRef.current) == null ? void 0 : _a2.purposes)) {
24142
24211
  return translatedName;
@@ -24162,11 +24231,11 @@ function Form({
24162
24231
  }
24163
24232
  return translatedName;
24164
24233
  }, [data]);
24165
- const selectedErasurePurposeList = (0, import_react61.useMemo)(
24234
+ const selectedErasurePurposeList = (0, import_react62.useMemo)(
24166
24235
  () => selectedPurposes.filter((p) => p.selected || p.data_elements.some((de) => de.selected)).map((p) => p.name).filter(Boolean),
24167
24236
  [selectedPurposes]
24168
24237
  );
24169
- const selectedErasurePurposeNames = (0, import_react61.useMemo)(() => {
24238
+ const selectedErasurePurposeNames = (0, import_react62.useMemo)(() => {
24170
24239
  if (selectedErasurePurposeList.length === 0 || selectedErasurePurposeList.length > MAX_DISPLAYED_PURPOSE_NAMES_IN_ERASURE_MODAL) {
24171
24240
  return t("revokeConsentModalYourPurposes");
24172
24241
  }
@@ -24301,7 +24370,7 @@ function Form({
24301
24370
  setIsLoading(false);
24302
24371
  }
24303
24372
  };
24304
- const isRequestDetailsValid = (0, import_react61.useCallback)(() => {
24373
+ const isRequestDetailsValid = (0, import_react62.useCallback)(() => {
24305
24374
  var _a2, _b2;
24306
24375
  if (!requestType) {
24307
24376
  return false;
@@ -24348,7 +24417,7 @@ function Form({
24348
24417
  grievanceOptions,
24349
24418
  nominationData
24350
24419
  ]);
24351
- const isFormValid = (0, import_react61.useMemo)(() => {
24420
+ const isFormValid = (0, import_react62.useMemo)(() => {
24352
24421
  var _a2;
24353
24422
  return (!isPopup || isPopupFormEnabled) && !!((_a2 = formData.contact) == null ? void 0 : _a2.trim()) && !!requestType && isRequestDetailsValid() && formData.confirmCheckBox;
24354
24423
  }, [
@@ -24381,7 +24450,7 @@ function Form({
24381
24450
  if (!organizationId || !workspaceId) {
24382
24451
  throw new Error("Organization ID and Workspace ID are required for file upload");
24383
24452
  }
24384
- const authToken = await ensureValidToken(organizationId, workspaceId, orgSlug, authContext, consentClient);
24453
+ const authToken = await ensureValidToken(organizationId, workspaceId, void 0, authContext, consentClient);
24385
24454
  if (!authToken) {
24386
24455
  throw new Error("Authentication token is required for file upload");
24387
24456
  }
@@ -25228,7 +25297,7 @@ function Form({
25228
25297
  }
25229
25298
 
25230
25299
  // src/RedactoPrivacyCenter/components/CaseHistory.tsx
25231
- var import_react64 = require("react");
25300
+ var import_react65 = require("react");
25232
25301
  var import_react_i18next44 = require("react-i18next");
25233
25302
  var import_fi3 = require("react-icons/fi");
25234
25303
  var import_io54 = require("react-icons/io5");
@@ -25328,7 +25397,7 @@ var useSubmitDocumentForRequest = (organizationId, workspaceId, caseUuid, authCo
25328
25397
  var import_react_table7 = require("@tanstack/react-table");
25329
25398
 
25330
25399
  // src/RedactoPrivacyCenter/components/caseHistoryColumns.tsx
25331
- var import_react62 = require("react");
25400
+ var import_react63 = require("react");
25332
25401
  var import_react_i18next41 = require("react-i18next");
25333
25402
  var import_fi2 = require("react-icons/fi");
25334
25403
  var import_react_table5 = require("@tanstack/react-table");
@@ -25351,7 +25420,7 @@ var getCaseStatusVariant = (status) => {
25351
25420
  var formatCaseStatus = (s) => s.replace(/_/g, " ").replace(/\b\w/g, (c) => c.toUpperCase());
25352
25421
  var useCaseHistoryColumns = () => {
25353
25422
  const { t } = (0, import_react_i18next41.useTranslation)();
25354
- return (0, import_react62.useMemo)(
25423
+ return (0, import_react63.useMemo)(
25355
25424
  () => [
25356
25425
  columnHelper3.accessor("case_id", {
25357
25426
  id: "case_id",
@@ -25475,7 +25544,7 @@ var useCaseHistoryColumns = () => {
25475
25544
  };
25476
25545
 
25477
25546
  // src/RedactoPrivacyCenter/components/GrievanceTable.tsx
25478
- var import_react63 = require("react");
25547
+ var import_react64 = require("react");
25479
25548
  var import_react_i18next42 = require("react-i18next");
25480
25549
  var import_react_table6 = require("@tanstack/react-table");
25481
25550
  var import_jsx_runtime77 = require("react/jsx-runtime");
@@ -25491,7 +25560,7 @@ function GrievanceTable({
25491
25560
  if (!table) return null;
25492
25561
  const rowModel = table.getRowModel();
25493
25562
  const allRows = rowModel.rows;
25494
- const paginatedRows = (0, import_react63.useMemo)(() => {
25563
+ const paginatedRows = (0, import_react64.useMemo)(() => {
25495
25564
  const start = pageIndex * pageSize;
25496
25565
  const end = start + pageSize;
25497
25566
  return allRows.slice(start, end);
@@ -25943,19 +26012,19 @@ function CaseHistory({ onCreateRequest }) {
25943
26012
  const { navigateTo, setSelectedCase } = useInternalNavigation();
25944
26013
  const grievanceTabs = useGrievanceTabs();
25945
26014
  const requestTypeLabels = useRequestTypeLabels();
25946
- const [activeTab, setActiveTab] = (0, import_react64.useState)(GRIEVANCE_TAB_IDS.ALL);
25947
- const [searchQuery, setSearchQuery] = (0, import_react64.useState)("");
25948
- const [selectedRequestTypes, setSelectedRequestTypes] = (0, import_react64.useState)(
26015
+ const [activeTab, setActiveTab] = (0, import_react65.useState)(GRIEVANCE_TAB_IDS.ALL);
26016
+ const [searchQuery, setSearchQuery] = (0, import_react65.useState)("");
26017
+ const [selectedRequestTypes, setSelectedRequestTypes] = (0, import_react65.useState)(
25949
26018
  Object.values(RequestTypeEnum)
25950
26019
  );
25951
- const [pageIndex, setPageIndex] = (0, import_react64.useState)(0);
25952
- const [pageSize, setPageSize] = (0, import_react64.useState)(10);
26020
+ const [pageIndex, setPageIndex] = (0, import_react65.useState)(0);
26021
+ const [pageSize, setPageSize] = (0, import_react65.useState)(10);
25953
26022
  const { organization } = useOrganization();
25954
26023
  const { accessToken, refreshToken, onError, updateTokens } = useAuth();
25955
26024
  const organizationId = organization == null ? void 0 : organization.uuid;
25956
26025
  const workspaceId = (_a = organization == null ? void 0 : organization.workspaces[0]) == null ? void 0 : _a.uuid;
25957
26026
  const contact = typeof window !== "undefined" ? sessionStorage.getItem("email") || "" : "";
25958
- const authContext = (0, import_react64.useMemo)(() => ({
26027
+ const authContext = (0, import_react65.useMemo)(() => ({
25959
26028
  accessToken,
25960
26029
  refreshToken,
25961
26030
  onError,
@@ -25967,7 +26036,7 @@ function CaseHistory({ onCreateRequest }) {
25967
26036
  error,
25968
26037
  isError
25969
26038
  } = useCaseHistory(organizationId, workspaceId, contact, authContext);
25970
- const filteredCases = (0, import_react64.useMemo)(() => {
26039
+ const filteredCases = (0, import_react65.useMemo)(() => {
25971
26040
  return (cases || []).filter((item) => {
25972
26041
  var _a2, _b, _c, _d, _e, _f, _g, _h;
25973
26042
  const statusLower = item.status.toLowerCase();
@@ -26001,12 +26070,12 @@ function CaseHistory({ onCreateRequest }) {
26001
26070
  return true;
26002
26071
  });
26003
26072
  }, [cases, activeTab, selectedRequestTypes, searchQuery]);
26004
- const handleViewDetails = (0, import_react64.useCallback)((caseRequest) => {
26073
+ const handleViewDetails = (0, import_react65.useCallback)((caseRequest) => {
26005
26074
  setSelectedCase(caseRequest);
26006
26075
  navigateTo("case-details");
26007
26076
  }, [navigateTo, setSelectedCase]);
26008
26077
  const columns = useCaseHistoryColumns();
26009
- (0, import_react64.useEffect)(() => {
26078
+ (0, import_react65.useEffect)(() => {
26010
26079
  setPageIndex(0);
26011
26080
  }, [activeTab, searchQuery, selectedRequestTypes]);
26012
26081
  const table = (0, import_react_table7.useReactTable)({
@@ -26285,7 +26354,7 @@ var import_jsx_runtime80 = require("react/jsx-runtime");
26285
26354
  var getVar25 = (varName) => `var(${varName})`;
26286
26355
  function PrivacyCenterFormPage() {
26287
26356
  const { t } = (0, import_react_i18next45.useTranslation)();
26288
- const [showForm, setShowForm] = (0, import_react65.useState)(() => {
26357
+ const [showForm, setShowForm] = (0, import_react66.useState)(() => {
26289
26358
  try {
26290
26359
  return sessionStorage.getItem("pc_grievance_view") === "form";
26291
26360
  } catch {
@@ -26293,18 +26362,18 @@ function PrivacyCenterFormPage() {
26293
26362
  }
26294
26363
  });
26295
26364
  const { setPageChromeOverride, clearPageChromeOverride } = usePageChrome();
26296
- (0, import_react65.useEffect)(() => {
26365
+ (0, import_react66.useEffect)(() => {
26297
26366
  if (!i18n_default.language) {
26298
26367
  i18n_default.changeLanguage("en");
26299
26368
  }
26300
26369
  }, []);
26301
- (0, import_react65.useEffect)(() => {
26370
+ (0, import_react66.useEffect)(() => {
26302
26371
  try {
26303
26372
  sessionStorage.setItem("pc_grievance_view", showForm ? "form" : "list");
26304
26373
  } catch {
26305
26374
  }
26306
26375
  }, [showForm]);
26307
- (0, import_react65.useEffect)(() => {
26376
+ (0, import_react66.useEffect)(() => {
26308
26377
  if (showForm) {
26309
26378
  setPageChromeOverride({
26310
26379
  titleKey: "yourPrivacyCenter",
@@ -26336,15 +26405,15 @@ function PrivacyCenterFormPage() {
26336
26405
  }
26337
26406
 
26338
26407
  // src/RedactoPrivacyCenter/PrivacyCenterActivityPage.tsx
26339
- var import_react68 = require("react");
26408
+ var import_react69 = require("react");
26340
26409
 
26341
26410
  // src/RedactoPrivacyCenter/components/ActivitiesList.tsx
26342
- var import_react67 = require("react");
26411
+ var import_react68 = require("react");
26343
26412
  var import_react_i18next47 = require("react-i18next");
26344
26413
  var import_lucide_react22 = require("lucide-react");
26345
26414
 
26346
26415
  // src/RedactoPrivacyCenter/components/ActivityTimeline.tsx
26347
- var import_react66 = require("react");
26416
+ var import_react67 = require("react");
26348
26417
  var import_react_i18next46 = require("react-i18next");
26349
26418
  var import_dayjs5 = __toESM(require("dayjs"));
26350
26419
  var import_lucide_react21 = require("lucide-react");
@@ -26361,7 +26430,7 @@ function ActivityTimeline({
26361
26430
  activities
26362
26431
  }) {
26363
26432
  const { t } = (0, import_react_i18next46.useTranslation)();
26364
- const groups = (0, import_react66.useMemo)(() => {
26433
+ const groups = (0, import_react67.useMemo)(() => {
26365
26434
  const ordered = [];
26366
26435
  const byKey = /* @__PURE__ */ new Map();
26367
26436
  for (const activity of activities) {
@@ -26554,26 +26623,26 @@ function ActivitiesList() {
26554
26623
  const { consentClient } = useBaseUrl();
26555
26624
  const organizationId = organization == null ? void 0 : organization.uuid;
26556
26625
  const workspaceId = (_a = organization == null ? void 0 : organization.workspaces[0]) == null ? void 0 : _a.uuid;
26557
- const authContext = (0, import_react67.useMemo)(() => ({
26626
+ const authContext = (0, import_react68.useMemo)(() => ({
26558
26627
  accessToken,
26559
26628
  refreshToken,
26560
26629
  onError,
26561
26630
  updateTokens
26562
26631
  }), [accessToken, refreshToken, onError, updateTokens]);
26563
26632
  const { langParam } = useCurrentLanguage();
26564
- const [activities, setActivities] = (0, import_react67.useState)([]);
26565
- const [totalCount, setTotalCount] = (0, import_react67.useState)(0);
26566
- const [isLoadingInitial, setIsLoadingInitial] = (0, import_react67.useState)(true);
26567
- const [isLoadingMore, setIsLoadingMore] = (0, import_react67.useState)(false);
26633
+ const [activities, setActivities] = (0, import_react68.useState)([]);
26634
+ const [totalCount, setTotalCount] = (0, import_react68.useState)(0);
26635
+ const [isLoadingInitial, setIsLoadingInitial] = (0, import_react68.useState)(true);
26636
+ const [isLoadingMore, setIsLoadingMore] = (0, import_react68.useState)(false);
26568
26637
  const hasMore = activities.length < totalCount;
26569
- const isFetchingRef = (0, import_react67.useRef)(false);
26570
- const requestVersionRef = (0, import_react67.useRef)(0);
26571
- const hasMoreRef = (0, import_react67.useRef)(hasMore);
26638
+ const isFetchingRef = (0, import_react68.useRef)(false);
26639
+ const requestVersionRef = (0, import_react68.useRef)(0);
26640
+ const hasMoreRef = (0, import_react68.useRef)(hasMore);
26572
26641
  hasMoreRef.current = hasMore;
26573
- const countRef = (0, import_react67.useRef)(0);
26642
+ const countRef = (0, import_react68.useRef)(0);
26574
26643
  countRef.current = activities.length;
26575
- const sentinelRef = (0, import_react67.useRef)(null);
26576
- const fetchPage = (0, import_react67.useCallback)(
26644
+ const sentinelRef = (0, import_react68.useRef)(null);
26645
+ const fetchPage = (0, import_react68.useCallback)(
26577
26646
  async (offset) => {
26578
26647
  if (!organizationId || !workspaceId) return null;
26579
26648
  return fetchActivities(
@@ -26588,7 +26657,7 @@ function ActivitiesList() {
26588
26657
  },
26589
26658
  [organizationId, workspaceId, authContext, consentClient, langParam]
26590
26659
  );
26591
- (0, import_react67.useEffect)(() => {
26660
+ (0, import_react68.useEffect)(() => {
26592
26661
  let cancelled = false;
26593
26662
  const requestVersion = ++requestVersionRef.current;
26594
26663
  isFetchingRef.current = false;
@@ -26625,7 +26694,7 @@ function ActivitiesList() {
26625
26694
  cancelled = true;
26626
26695
  };
26627
26696
  }, [fetchPage, organizationId, workspaceId, t]);
26628
- const loadMore = (0, import_react67.useCallback)(async () => {
26697
+ const loadMore = (0, import_react68.useCallback)(async () => {
26629
26698
  if (isFetchingRef.current || !hasMoreRef.current) {
26630
26699
  return;
26631
26700
  }
@@ -26661,7 +26730,7 @@ function ActivitiesList() {
26661
26730
  }
26662
26731
  }
26663
26732
  }, [fetchPage, t]);
26664
- (0, import_react67.useEffect)(() => {
26733
+ (0, import_react68.useEffect)(() => {
26665
26734
  const node = sentinelRef.current;
26666
26735
  if (!node || isLoadingInitial) {
26667
26736
  return;
@@ -26757,7 +26826,7 @@ function ActivityTimelineSkeleton() {
26757
26826
  // src/RedactoPrivacyCenter/PrivacyCenterActivityPage.tsx
26758
26827
  var import_jsx_runtime83 = require("react/jsx-runtime");
26759
26828
  function PrivacyCenterActivityPage() {
26760
- (0, import_react68.useEffect)(() => {
26829
+ (0, import_react69.useEffect)(() => {
26761
26830
  if (!i18n_default.language) {
26762
26831
  i18n_default.changeLanguage("en");
26763
26832
  }
@@ -26766,17 +26835,17 @@ function PrivacyCenterActivityPage() {
26766
26835
  }
26767
26836
 
26768
26837
  // src/RedactoPrivacyCenter/PrivacyCenterMyReceiptPage.tsx
26769
- var import_react71 = require("react");
26838
+ var import_react72 = require("react");
26770
26839
 
26771
26840
  // src/RedactoPrivacyCenter/components/ReceiptsList.tsx
26772
- var import_react70 = require("react");
26841
+ var import_react71 = require("react");
26773
26842
  var import_react_i18next49 = require("react-i18next");
26774
26843
  var import_react_table9 = require("@tanstack/react-table");
26775
26844
  var import_dayjs7 = __toESM(require("dayjs"));
26776
26845
  var import_lucide_react24 = require("lucide-react");
26777
26846
 
26778
26847
  // src/RedactoPrivacyCenter/components/receiptColumns.tsx
26779
- var import_react69 = require("react");
26848
+ var import_react70 = require("react");
26780
26849
  var import_react_i18next48 = require("react-i18next");
26781
26850
  var import_react_table8 = require("@tanstack/react-table");
26782
26851
  var import_dayjs6 = __toESM(require("dayjs"));
@@ -26812,7 +26881,7 @@ var useReceiptColumns = ({
26812
26881
  downloadingUuid
26813
26882
  }) => {
26814
26883
  const { t } = (0, import_react_i18next48.useTranslation)();
26815
- return (0, import_react69.useMemo)(
26884
+ return (0, import_react70.useMemo)(
26816
26885
  () => [
26817
26886
  columnHelper4.accessor("event_type", {
26818
26887
  id: "event",
@@ -26991,23 +27060,23 @@ function ReceiptsList() {
26991
27060
  const { langParam } = useCurrentLanguage();
26992
27061
  const organizationId = organization == null ? void 0 : organization.uuid;
26993
27062
  const workspaceId = (_a = organization == null ? void 0 : organization.workspaces[0]) == null ? void 0 : _a.uuid;
26994
- const authContext = (0, import_react70.useMemo)(
27063
+ const authContext = (0, import_react71.useMemo)(
26995
27064
  () => ({ accessToken, refreshToken, onError, updateTokens }),
26996
27065
  [accessToken, refreshToken, onError, updateTokens]
26997
27066
  );
26998
- const [receipts, setReceipts] = (0, import_react70.useState)([]);
26999
- const [totalCount, setTotalCount] = (0, import_react70.useState)(0);
27000
- const [isLoading, setIsLoading] = (0, import_react70.useState)(false);
27001
- const [currentPage, setCurrentPage] = (0, import_react70.useState)(1);
27002
- const [pageSize, setPageSize] = (0, import_react70.useState)(10);
27003
- const [downloadingUuid, setDownloadingUuid] = (0, import_react70.useState)(null);
27004
- const [previousData, setPreviousData] = (0, import_react70.useState)([]);
27005
- const [previousTotalCount, setPreviousTotalCount] = (0, import_react70.useState)(0);
27006
- const [eventType, setEventType] = (0, import_react70.useState)("");
27007
- const [datePreset, setDatePreset] = (0, import_react70.useState)("");
27008
- const [customFrom, setCustomFrom] = (0, import_react70.useState)("");
27009
- const [customTo, setCustomTo] = (0, import_react70.useState)("");
27010
- const eventTypeOptions = (0, import_react70.useMemo)(
27067
+ const [receipts, setReceipts] = (0, import_react71.useState)([]);
27068
+ const [totalCount, setTotalCount] = (0, import_react71.useState)(0);
27069
+ const [isLoading, setIsLoading] = (0, import_react71.useState)(false);
27070
+ const [currentPage, setCurrentPage] = (0, import_react71.useState)(1);
27071
+ const [pageSize, setPageSize] = (0, import_react71.useState)(10);
27072
+ const [downloadingUuid, setDownloadingUuid] = (0, import_react71.useState)(null);
27073
+ const [previousData, setPreviousData] = (0, import_react71.useState)([]);
27074
+ const [previousTotalCount, setPreviousTotalCount] = (0, import_react71.useState)(0);
27075
+ const [eventType, setEventType] = (0, import_react71.useState)("");
27076
+ const [datePreset, setDatePreset] = (0, import_react71.useState)("");
27077
+ const [customFrom, setCustomFrom] = (0, import_react71.useState)("");
27078
+ const [customTo, setCustomTo] = (0, import_react71.useState)("");
27079
+ const eventTypeOptions = (0, import_react71.useMemo)(
27011
27080
  () => [
27012
27081
  { value: "", label: t("all") },
27013
27082
  { value: "GRANTED", label: t("consentGranted") },
@@ -27017,7 +27086,7 @@ function ReceiptsList() {
27017
27086
  ],
27018
27087
  [t]
27019
27088
  );
27020
- const dateOptions = (0, import_react70.useMemo)(
27089
+ const dateOptions = (0, import_react71.useMemo)(
27021
27090
  () => [
27022
27091
  { value: "", label: t("allTime") },
27023
27092
  { value: "1", label: t("today") },
@@ -27031,11 +27100,11 @@ function ReceiptsList() {
27031
27100
  const eventValue = (_b = eventTypeOptions.find((o) => o.value === eventType)) != null ? _b : null;
27032
27101
  const dateValue = (_c = dateOptions.find((o) => o.value === datePreset)) != null ? _c : null;
27033
27102
  const hasActiveFilters = Boolean(eventType || datePreset);
27034
- const isCustomRangeInvalid = (0, import_react70.useMemo)(
27103
+ const isCustomRangeInvalid = (0, import_react71.useMemo)(
27035
27104
  () => datePreset === "custom" && Boolean(customFrom && customTo && (0, import_dayjs7.default)(customFrom).isAfter((0, import_dayjs7.default)(customTo), "day")),
27036
27105
  [datePreset, customFrom, customTo]
27037
27106
  );
27038
- const activeFilterLabels = (0, import_react70.useMemo)(() => {
27107
+ const activeFilterLabels = (0, import_react71.useMemo)(() => {
27039
27108
  const filters = [];
27040
27109
  if (eventType && (eventValue == null ? void 0 : eventValue.label)) {
27041
27110
  filters.push({ id: "event", label: t("event"), value: eventValue.label });
@@ -27071,7 +27140,7 @@ function ReceiptsList() {
27071
27140
  setCustomTo("");
27072
27141
  setCurrentPage(1);
27073
27142
  };
27074
- const handleGetReceipts = (0, import_react70.useCallback)(
27143
+ const handleGetReceipts = (0, import_react71.useCallback)(
27075
27144
  async (page = currentPage, size = pageSize) => {
27076
27145
  if (!organizationId || !workspaceId) return;
27077
27146
  if (isCustomRangeInvalid) return;
@@ -27125,7 +27194,7 @@ function ReceiptsList() {
27125
27194
  t
27126
27195
  ]
27127
27196
  );
27128
- const handleDownload = (0, import_react70.useCallback)(
27197
+ const handleDownload = (0, import_react71.useCallback)(
27129
27198
  async (receipt) => {
27130
27199
  if (!organizationId || !workspaceId || !receipt.uuid) return;
27131
27200
  setDownloadingUuid(receipt.uuid);
@@ -27156,13 +27225,13 @@ function ReceiptsList() {
27156
27225
  [organizationId, workspaceId, authContext, consentClient, t]
27157
27226
  );
27158
27227
  const columns = useReceiptColumns({ onDownload: handleDownload, downloadingUuid });
27159
- (0, import_react70.useEffect)(() => {
27228
+ (0, import_react71.useEffect)(() => {
27160
27229
  if (receipts.length > 0) {
27161
27230
  setPreviousData(receipts);
27162
27231
  setPreviousTotalCount(totalCount);
27163
27232
  }
27164
27233
  }, [receipts, totalCount]);
27165
- (0, import_react70.useEffect)(() => {
27234
+ (0, import_react71.useEffect)(() => {
27166
27235
  void handleGetReceipts();
27167
27236
  }, [organizationId, workspaceId, handleGetReceipts]);
27168
27237
  const displayData = isLoading && receipts.length === 0 ? previousData : receipts;
@@ -27349,7 +27418,7 @@ function ReceiptsList() {
27349
27418
  // src/RedactoPrivacyCenter/PrivacyCenterMyReceiptPage.tsx
27350
27419
  var import_jsx_runtime86 = require("react/jsx-runtime");
27351
27420
  function PrivacyCenterMyReceiptPage() {
27352
- (0, import_react71.useEffect)(() => {
27421
+ (0, import_react72.useEffect)(() => {
27353
27422
  if (!i18n_default.language) {
27354
27423
  i18n_default.changeLanguage("en");
27355
27424
  }
@@ -27369,7 +27438,7 @@ function PrivacyCenterMyReceiptPage() {
27369
27438
  }
27370
27439
 
27371
27440
  // src/RedactoPrivacyCenter/PrivacyCenterCaseDetailsPage.tsx
27372
- var import_react75 = require("react");
27441
+ var import_react76 = require("react");
27373
27442
  var import_react_i18next56 = require("react-i18next");
27374
27443
  var import_io511 = require("react-icons/io5");
27375
27444
 
@@ -27430,7 +27499,7 @@ function getUploadErrorMessage(error) {
27430
27499
  }
27431
27500
 
27432
27501
  // src/RedactoPrivacyCenter/components/CaseDetails/MessagesTab.tsx
27433
- var import_react74 = require("react");
27502
+ var import_react75 = require("react");
27434
27503
  var import_react_i18next54 = require("react-i18next");
27435
27504
  var import_io510 = require("react-icons/io5");
27436
27505
 
@@ -27782,47 +27851,47 @@ var MessageComposer = ({
27782
27851
  };
27783
27852
 
27784
27853
  // src/RedactoPrivacyCenter/components/CaseDetails/useMessagePolling.ts
27785
- var import_react72 = require("react");
27854
+ var import_react73 = require("react");
27786
27855
  function useMessagePolling(refetch, messages, isPaused) {
27787
- const scrollContainerRef = (0, import_react72.useRef)(null);
27788
- const isNearBottomRef = (0, import_react72.useRef)(true);
27789
- const shouldAutoScrollRef = (0, import_react72.useRef)(true);
27790
- const isPausedRef = (0, import_react72.useRef)(isPaused);
27856
+ const scrollContainerRef = (0, import_react73.useRef)(null);
27857
+ const isNearBottomRef = (0, import_react73.useRef)(true);
27858
+ const shouldAutoScrollRef = (0, import_react73.useRef)(true);
27859
+ const isPausedRef = (0, import_react73.useRef)(isPaused);
27791
27860
  isPausedRef.current = isPaused;
27792
- (0, import_react72.useEffect)(() => {
27861
+ (0, import_react73.useEffect)(() => {
27793
27862
  const interval = setInterval(() => {
27794
27863
  var _a;
27795
27864
  if (!((_a = isPausedRef.current) == null ? void 0 : _a.call(isPausedRef))) refetch();
27796
27865
  }, 3e4);
27797
27866
  return () => clearInterval(interval);
27798
27867
  }, [refetch]);
27799
- const handleScroll = (0, import_react72.useCallback)(() => {
27868
+ const handleScroll = (0, import_react73.useCallback)(() => {
27800
27869
  const el = scrollContainerRef.current;
27801
27870
  if (!el) return;
27802
27871
  isNearBottomRef.current = el.scrollHeight - el.scrollTop - el.clientHeight < 100;
27803
27872
  }, []);
27804
- (0, import_react72.useLayoutEffect)(() => {
27873
+ (0, import_react73.useLayoutEffect)(() => {
27805
27874
  const el = scrollContainerRef.current;
27806
27875
  if (el && (isNearBottomRef.current || shouldAutoScrollRef.current)) {
27807
27876
  el.scrollTop = el.scrollHeight;
27808
27877
  shouldAutoScrollRef.current = false;
27809
27878
  }
27810
27879
  }, [messages]);
27811
- const scrollToBottom = (0, import_react72.useCallback)(() => {
27880
+ const scrollToBottom = (0, import_react73.useCallback)(() => {
27812
27881
  shouldAutoScrollRef.current = true;
27813
27882
  }, []);
27814
27883
  return { scrollContainerRef, handleScroll, scrollToBottom };
27815
27884
  }
27816
27885
 
27817
27886
  // src/RedactoPrivacyCenter/components/CaseDetails/useFileUpload.ts
27818
- var import_react73 = require("react");
27887
+ var import_react74 = require("react");
27819
27888
  function useFileUpload(uploadMutation, submitMutation, refetch, scrollToBottom) {
27820
- const [pendingUpload, setPendingUpload] = (0, import_react73.useState)(null);
27821
- const [submittingForRequest, setSubmittingForRequest] = (0, import_react73.useState)(null);
27822
- const attachInputRef = (0, import_react73.useRef)(null);
27823
- const submitInputRef = (0, import_react73.useRef)(null);
27824
- const pendingRequestRef = (0, import_react73.useRef)(null);
27825
- const handleAttachFile = (0, import_react73.useCallback)((e) => {
27889
+ const [pendingUpload, setPendingUpload] = (0, import_react74.useState)(null);
27890
+ const [submittingForRequest, setSubmittingForRequest] = (0, import_react74.useState)(null);
27891
+ const attachInputRef = (0, import_react74.useRef)(null);
27892
+ const submitInputRef = (0, import_react74.useRef)(null);
27893
+ const pendingRequestRef = (0, import_react74.useRef)(null);
27894
+ const handleAttachFile = (0, import_react74.useCallback)((e) => {
27826
27895
  var _a;
27827
27896
  const file = (_a = e.target.files) == null ? void 0 : _a[0];
27828
27897
  if (!file) return;
@@ -27846,7 +27915,7 @@ function useFileUpload(uploadMutation, submitMutation, refetch, scrollToBottom)
27846
27915
  }
27847
27916
  });
27848
27917
  }, [uploadMutation]);
27849
- const handleSubmitForRequest = (0, import_react73.useCallback)((requestEventUuid, file) => {
27918
+ const handleSubmitForRequest = (0, import_react74.useCallback)((requestEventUuid, file) => {
27850
27919
  const validationError = validateUploadFile(file);
27851
27920
  if (validationError) {
27852
27921
  toast.error(validationError);
@@ -27882,7 +27951,7 @@ function useFileUpload(uploadMutation, submitMutation, refetch, scrollToBottom)
27882
27951
  }
27883
27952
  });
27884
27953
  }, [uploadMutation, submitMutation, refetch, scrollToBottom]);
27885
- const handleSubmitInputChange = (0, import_react73.useCallback)((e) => {
27954
+ const handleSubmitInputChange = (0, import_react74.useCallback)((e) => {
27886
27955
  var _a;
27887
27956
  const file = (_a = e.target.files) == null ? void 0 : _a[0];
27888
27957
  e.target.value = "";
@@ -27892,7 +27961,7 @@ function useFileUpload(uploadMutation, submitMutation, refetch, scrollToBottom)
27892
27961
  handleSubmitForRequest(requestUuid, file);
27893
27962
  }
27894
27963
  }, [handleSubmitForRequest]);
27895
- const triggerUploadForRequest = (0, import_react73.useCallback)((requestEventUuid) => {
27964
+ const triggerUploadForRequest = (0, import_react74.useCallback)((requestEventUuid) => {
27896
27965
  var _a;
27897
27966
  pendingRequestRef.current = requestEventUuid;
27898
27967
  (_a = submitInputRef.current) == null ? void 0 : _a.click();
@@ -27918,7 +27987,7 @@ var MessagesTab = ({ caseUuid, caseStatus }) => {
27918
27987
  const caseFinalizedTooltip = useCaseFinalizedTooltip();
27919
27988
  const { organization } = useOrganization();
27920
27989
  const { accessToken, refreshToken, onError, updateTokens } = useAuth();
27921
- const authContext = (0, import_react74.useMemo)(
27990
+ const authContext = (0, import_react75.useMemo)(
27922
27991
  () => ({ accessToken, refreshToken, onError, updateTokens }),
27923
27992
  [accessToken, refreshToken, onError, updateTokens]
27924
27993
  );
@@ -27933,7 +28002,7 @@ var MessagesTab = ({ caseUuid, caseStatus }) => {
27933
28002
  const sendMutation = useSendCaseMessage(organizationId, workspaceId, caseUuid, authContext);
27934
28003
  const uploadMutation = useUploadCaseDocument(organizationId, workspaceId, caseUuid, authContext);
27935
28004
  const submitMutation = useSubmitDocumentForRequest(organizationId, workspaceId, caseUuid, authContext);
27936
- const isPollingPaused = (0, import_react74.useCallback)(() => isRefreshBlocked(authContext), [authContext]);
28005
+ const isPollingPaused = (0, import_react75.useCallback)(() => isRefreshBlocked(authContext), [authContext]);
27937
28006
  const { scrollContainerRef, handleScroll, scrollToBottom } = useMessagePolling(refetch, messages, isPollingPaused);
27938
28007
  const {
27939
28008
  pendingUpload,
@@ -27945,8 +28014,8 @@ var MessagesTab = ({ caseUuid, caseStatus }) => {
27945
28014
  handleSubmitInputChange,
27946
28015
  triggerUploadForRequest
27947
28016
  } = useFileUpload(uploadMutation, submitMutation, refetch, scrollToBottom);
27948
- const [messageText, setMessageText] = (0, import_react74.useState)("");
27949
- const handleSend = (0, import_react74.useCallback)(() => {
28017
+ const [messageText, setMessageText] = (0, import_react75.useState)("");
28018
+ const handleSend = (0, import_react75.useCallback)(() => {
27950
28019
  if (sendMutation.isPending || uploadMutation.isPending) return;
27951
28020
  const trimmedBody = messageText.trim();
27952
28021
  if (!trimmedBody && !pendingUpload) return;
@@ -28133,13 +28202,13 @@ var PrivacyCenterCaseDetailsPage = () => {
28133
28202
  var _a, _b;
28134
28203
  const { t } = (0, import_react_i18next56.useTranslation)();
28135
28204
  const { navigateTo, selectedCase, setSelectedCase, pendingCaseUuid } = useInternalNavigation();
28136
- const [activeTab, setActiveTab] = (0, import_react75.useState)("request-details");
28205
+ const [activeTab, setActiveTab] = (0, import_react76.useState)("request-details");
28137
28206
  const { organization } = useOrganization();
28138
28207
  const { accessToken, refreshToken, onError, updateTokens } = useAuth();
28139
28208
  const organizationId = organization == null ? void 0 : organization.uuid;
28140
28209
  const workspaceId = (_a = organization == null ? void 0 : organization.workspaces[0]) == null ? void 0 : _a.uuid;
28141
28210
  const contact = typeof window !== "undefined" ? sessionStorage.getItem("email") || "" : "";
28142
- const authContext = (0, import_react75.useMemo)(() => ({
28211
+ const authContext = (0, import_react76.useMemo)(() => ({
28143
28212
  accessToken,
28144
28213
  refreshToken,
28145
28214
  onError,
@@ -28152,7 +28221,7 @@ var PrivacyCenterCaseDetailsPage = () => {
28152
28221
  contact,
28153
28222
  authContext
28154
28223
  );
28155
- (0, import_react75.useEffect)(() => {
28224
+ (0, import_react76.useEffect)(() => {
28156
28225
  if (!cases) return;
28157
28226
  if (cases.length === 0) {
28158
28227
  navigateTo("form");
@@ -28166,13 +28235,13 @@ var PrivacyCenterCaseDetailsPage = () => {
28166
28235
  navigateTo("form");
28167
28236
  }
28168
28237
  }, [cases, targetUuid, setSelectedCase, navigateTo]);
28169
- (0, import_react75.useEffect)(() => {
28238
+ (0, import_react76.useEffect)(() => {
28170
28239
  if (!targetUuid || isLoading || cases !== void 0) return;
28171
28240
  if (!organizationId || !workspaceId || !contact) {
28172
28241
  navigateTo("form");
28173
28242
  }
28174
28243
  }, [targetUuid, organizationId, workspaceId, contact, cases, isLoading, navigateTo]);
28175
- (0, import_react75.useEffect)(() => {
28244
+ (0, import_react76.useEffect)(() => {
28176
28245
  if (!selectedCase && !targetUuid && !isLoading) {
28177
28246
  navigateTo("form");
28178
28247
  }
@@ -28239,7 +28308,7 @@ var PrivacyCenterCaseDetailsPage = () => {
28239
28308
  };
28240
28309
 
28241
28310
  // src/RedactoPrivacyCenter/NotificationsPage.tsx
28242
- var import_react76 = require("react");
28311
+ var import_react77 = require("react");
28243
28312
  var import_io512 = require("react-icons/io5");
28244
28313
  var import_react_i18next59 = require("react-i18next");
28245
28314
 
@@ -28406,20 +28475,20 @@ var NotificationsPage = () => {
28406
28475
  handleAcknowledge,
28407
28476
  handleCTAClick
28408
28477
  } = useNotificationActions();
28409
- const [notifications, setNotifications] = (0, import_react76.useState)([]);
28410
- const [summary, setSummary] = (0, import_react76.useState)({ total: 0, unread: 0, action_needed: 0, acknowledged: 0 });
28411
- const [activeTab, setActiveTab] = (0, import_react76.useState)("all");
28412
- const [isLoading, setIsLoading] = (0, import_react76.useState)(true);
28413
- const [isRefreshing2, setIsRefreshing] = (0, import_react76.useState)(false);
28414
- const [totalCount, setTotalCount] = (0, import_react76.useState)(0);
28415
- const [skip, setSkip] = (0, import_react76.useState)(0);
28416
- const pollRef = (0, import_react76.useRef)(null);
28417
- const loadNotificationsRef = (0, import_react76.useRef)();
28418
- (0, import_react76.useEffect)(() => {
28478
+ const [notifications, setNotifications] = (0, import_react77.useState)([]);
28479
+ const [summary, setSummary] = (0, import_react77.useState)({ total: 0, unread: 0, action_needed: 0, acknowledged: 0 });
28480
+ const [activeTab, setActiveTab] = (0, import_react77.useState)("all");
28481
+ const [isLoading, setIsLoading] = (0, import_react77.useState)(true);
28482
+ const [isRefreshing2, setIsRefreshing] = (0, import_react77.useState)(false);
28483
+ const [totalCount, setTotalCount] = (0, import_react77.useState)(0);
28484
+ const [skip, setSkip] = (0, import_react77.useState)(0);
28485
+ const pollRef = (0, import_react77.useRef)(null);
28486
+ const loadNotificationsRef = (0, import_react77.useRef)();
28487
+ (0, import_react77.useEffect)(() => {
28419
28488
  setPageChromeOverride({ titleKey: "notificationHub", descriptionKey: "notificationHubSubtitle" });
28420
28489
  return () => clearPageChromeOverride();
28421
28490
  }, [setPageChromeOverride, clearPageChromeOverride]);
28422
- const loadNotifications = (0, import_react76.useCallback)(async (includeSummary = false, silent = false) => {
28491
+ const loadNotifications = (0, import_react77.useCallback)(async (includeSummary = false, silent = false) => {
28423
28492
  if (!organizationId || !workspaceId) {
28424
28493
  return;
28425
28494
  }
@@ -28450,13 +28519,13 @@ var NotificationsPage = () => {
28450
28519
  setIsRefreshing(false);
28451
28520
  }
28452
28521
  }, [organizationId, workspaceId, activeTab, skip, authContext, consentClient, langParam]);
28453
- (0, import_react76.useEffect)(() => {
28522
+ (0, import_react77.useEffect)(() => {
28454
28523
  loadNotifications(true);
28455
28524
  }, [loadNotifications]);
28456
- (0, import_react76.useEffect)(() => {
28525
+ (0, import_react77.useEffect)(() => {
28457
28526
  loadNotificationsRef.current = loadNotifications;
28458
28527
  }, [loadNotifications]);
28459
- (0, import_react76.useEffect)(() => {
28528
+ (0, import_react77.useEffect)(() => {
28460
28529
  pollRef.current = setInterval(() => {
28461
28530
  var _a;
28462
28531
  (_a = loadNotificationsRef.current) == null ? void 0 : _a.call(loadNotificationsRef, false, true);
@@ -28467,10 +28536,10 @@ var NotificationsPage = () => {
28467
28536
  }
28468
28537
  };
28469
28538
  }, []);
28470
- (0, import_react76.useEffect)(() => {
28539
+ (0, import_react77.useEffect)(() => {
28471
28540
  setSkip(0);
28472
28541
  }, [activeTab]);
28473
- const onNotificationClick = (0, import_react76.useCallback)(async (notification) => {
28542
+ const onNotificationClick = (0, import_react77.useCallback)(async (notification) => {
28474
28543
  if (!organizationId || !workspaceId) {
28475
28544
  return;
28476
28545
  }
@@ -28493,7 +28562,7 @@ var NotificationsPage = () => {
28493
28562
  acknowledged: prev.acknowledged + (acknowledged && !notification.is_acknowledged ? 1 : 0)
28494
28563
  }));
28495
28564
  }, [organizationId, workspaceId, hasAcknowledgeCTA, handleMarkRead, handleAcknowledge]);
28496
- const onCTAClick = (0, import_react76.useCallback)(async (notification, cta) => {
28565
+ const onCTAClick = (0, import_react77.useCallback)(async (notification, cta) => {
28497
28566
  const result = await handleCTAClick(notification, cta);
28498
28567
  if (result === "acknowledged") {
28499
28568
  setNotifications((prev) => prev.map(
@@ -28508,7 +28577,7 @@ var NotificationsPage = () => {
28508
28577
  onNotificationClick(notification);
28509
28578
  }
28510
28579
  }, [handleCTAClick, onNotificationClick]);
28511
- const onMarkAllRead = (0, import_react76.useCallback)(async () => {
28580
+ const onMarkAllRead = (0, import_react77.useCallback)(async () => {
28512
28581
  const ok = await handleMarkAllRead();
28513
28582
  if (!ok) {
28514
28583
  return;
@@ -28516,11 +28585,11 @@ var NotificationsPage = () => {
28516
28585
  setNotifications((prev) => prev.map((n) => ({ ...n, is_read: true })));
28517
28586
  setSummary((prev) => ({ ...prev, unread: 0 }));
28518
28587
  }, [handleMarkAllRead]);
28519
- const onRefresh = (0, import_react76.useCallback)(() => {
28588
+ const onRefresh = (0, import_react77.useCallback)(() => {
28520
28589
  setIsRefreshing(true);
28521
28590
  loadNotifications(true);
28522
28591
  }, [loadNotifications]);
28523
- const onBack = (0, import_react76.useCallback)(() => navigateTo("consent-manager"), [navigateTo]);
28592
+ const onBack = (0, import_react77.useCallback)(() => navigateTo("consent-manager"), [navigateTo]);
28524
28593
  return /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("div", { className: "pc-notification-page", children: [
28525
28594
  /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("button", { type: "button", onClick: onBack, className: "pc-notification-back-btn", children: [
28526
28595
  /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(import_io512.IoChevronBackOutline, { size: 14 }),
@@ -28556,7 +28625,7 @@ var NotificationsPage = () => {
28556
28625
  var import_jsx_runtime101 = require("react/jsx-runtime");
28557
28626
  function PrivacyCenterHomePage() {
28558
28627
  const { currentPage } = useInternalNavigation();
28559
- (0, import_react77.useEffect)(() => {
28628
+ (0, import_react78.useEffect)(() => {
28560
28629
  if (!i18n_default.language) {
28561
28630
  i18n_default.changeLanguage("en");
28562
28631
  }
@@ -28580,47 +28649,23 @@ function PrivacyCenterHomePage() {
28580
28649
  }
28581
28650
 
28582
28651
  // src/RedactoPrivacyCenter/context/PrivacyCenterSettingsContext.tsx
28583
- var import_react78 = require("react");
28584
-
28585
- // src/RedactoPrivacyCenter/api/organizationLookup.ts
28586
- var cache = /* @__PURE__ */ new Map();
28587
- var isOrganisation = (value) => typeof value === "object" && value !== null && typeof value.uuid === "string";
28588
- var fetchOrganisationBySlug = (slug, consentBaseUrl) => {
28589
- const url = `${userServiceBaseUrl(consentBaseUrl)}/organizations/exists?slug=${encodeURIComponent(slug)}`;
28590
- const cached = cache.get(url);
28591
- if (cached) {
28592
- return cached;
28593
- }
28594
- const request = apiFetch(url, { method: "GET" }).then((body) => {
28595
- if (isOrganisation(body)) {
28596
- return body;
28597
- }
28598
- cache.delete(url);
28599
- return null;
28600
- }).catch((error) => {
28601
- cache.delete(url);
28602
- console.warn("[RedactoPrivacyCenter] organisation lookup failed:", error);
28603
- return null;
28604
- });
28605
- cache.set(url, request);
28606
- return request;
28607
- };
28652
+ var import_react79 = require("react");
28608
28653
 
28609
28654
  // src/RedactoPrivacyCenter/settings/api.ts
28610
- var cache2 = /* @__PURE__ */ new Map();
28655
+ var cache = /* @__PURE__ */ new Map();
28611
28656
  var freshEntry = (url) => {
28612
- const entry = cache2.get(url);
28657
+ const entry = cache.get(url);
28613
28658
  if (!entry) {
28614
28659
  return null;
28615
28660
  }
28616
28661
  if (Date.now() >= entry.expiresAt) {
28617
- cache2.delete(url);
28662
+ cache.delete(url);
28618
28663
  return null;
28619
28664
  }
28620
28665
  return entry;
28621
28666
  };
28622
28667
  var trimTrailingSlash = (url) => url.replace(/\/+$/, "");
28623
- var privacyCenterSettingsUrl = (baseUrl, organisationUuid, language) => `${trimTrailingSlash(baseUrl)}/public/organisations/${encodeURIComponent(
28668
+ var privacyCenterSettingsUrl = (baseUrl, organisationUuid, language) => `${trimTrailingSlash(resolveEndpoints(baseUrl).baseUrl)}/public/organisations/${encodeURIComponent(
28624
28669
  organisationUuid
28625
28670
  )}/privacy-center-settings/?${SETTINGS_LANG_PARAM}=${encodeURIComponent(language)}`;
28626
28671
  var isSettingsResponse = (value) => typeof value === "object" && value !== null && "settings" in value && typeof value.settings === "object" && value.settings !== null;
@@ -28632,8 +28677,8 @@ var fetchPublicPrivacyCenterSettings = (baseUrl, organisationUuid, language) =>
28632
28677
  }
28633
28678
  const forget = () => {
28634
28679
  var _a;
28635
- if (((_a = cache2.get(url)) == null ? void 0 : _a.request) === request) {
28636
- cache2.delete(url);
28680
+ if (((_a = cache.get(url)) == null ? void 0 : _a.request) === request) {
28681
+ cache.delete(url);
28637
28682
  }
28638
28683
  };
28639
28684
  const request = apiFetch(url, {
@@ -28651,7 +28696,7 @@ var fetchPublicPrivacyCenterSettings = (baseUrl, organisationUuid, language) =>
28651
28696
  }
28652
28697
  return null;
28653
28698
  });
28654
- cache2.set(url, { request, expiresAt: Date.now() + SETTINGS_CACHE_TTL_MS });
28699
+ cache.set(url, { request, expiresAt: Date.now() + SETTINGS_CACHE_TTL_MS });
28655
28700
  return request;
28656
28701
  };
28657
28702
  var hasCachedPrivacyCenterSettings = (baseUrl, organisationUuid, language) => freshEntry(privacyCenterSettingsUrl(baseUrl, organisationUuid, language)) !== null;
@@ -28668,15 +28713,15 @@ var readSession = (key) => {
28668
28713
  var resolveOrganisationIds = ({
28669
28714
  organisationUuid,
28670
28715
  workspaceUuid,
28671
- accessToken,
28672
- slug
28716
+ accessToken
28673
28717
  }) => {
28674
28718
  var _a, _b, _c, _d;
28675
28719
  const claims = accessToken ? decodeJwtToken(accessToken) : null;
28676
- const storedSlug = readSession("pc_org_slug");
28677
- const sessionMatches = !slug || !storedSlug || storedSlug === slug;
28720
+ const storedOrganisation = readSession("pc_org_id");
28721
+ const organisation = (_b = (_a = clean(organisationUuid)) != null ? _a : clean(claims == null ? void 0 : claims.organisation_uuid)) != null ? _b : storedOrganisation;
28722
+ const sessionMatches = organisation !== null && organisation === storedOrganisation;
28678
28723
  return {
28679
- organisationUuid: (_b = (_a = clean(organisationUuid)) != null ? _a : clean(claims == null ? void 0 : claims.organisation_uuid)) != null ? _b : sessionMatches ? readSession("pc_org_id") : null,
28724
+ organisationUuid: organisation,
28680
28725
  workspaceUuid: (_d = (_c = clean(workspaceUuid)) != null ? _c : clean(claims == null ? void 0 : claims.workspace_uuid)) != null ? _d : sessionMatches ? readSession("pc_workspace_id") : null
28681
28726
  };
28682
28727
  };
@@ -28935,55 +28980,9 @@ var resolveBrandContact = (raw) => {
28935
28980
  // src/RedactoPrivacyCenter/context/PrivacyCenterSettingsContext.tsx
28936
28981
  var import_jsx_runtime102 = require("react/jsx-runtime");
28937
28982
  var requestLanguageFor = (language) => LANGUAGE_CODES.includes(language) ? language : "en";
28938
- var useResolvedOrganisation = (baseUrl, slug, known, canLookUp) => {
28939
- const needsLookup = canLookUp && Boolean(slug) && (!known.organisationUuid || !known.workspaceUuid);
28940
- const lookupKey = `${baseUrl}|${slug}`;
28941
- const [lookup, setLookup] = (0, import_react78.useState)(null);
28942
- (0, import_react78.useEffect)(() => {
28943
- if (!needsLookup) {
28944
- return void 0;
28945
- }
28946
- let cancelled = false;
28947
- void fetchOrganisationBySlug(slug, baseUrl).then((organisation) => {
28948
- var _a, _b, _c;
28949
- if (cancelled) {
28950
- return;
28951
- }
28952
- setLookup({
28953
- key: lookupKey,
28954
- ids: organisation ? {
28955
- organisationUuid: organisation.uuid,
28956
- workspaceUuid: (_c = (_b = (_a = organisation.workspaces) == null ? void 0 : _a[0]) == null ? void 0 : _b.uuid) != null ? _c : null
28957
- } : null
28958
- });
28959
- });
28960
- return () => {
28961
- cancelled = true;
28962
- };
28963
- }, [needsLookup, slug, baseUrl, lookupKey]);
28964
- return (0, import_react78.useMemo)(() => {
28965
- var _a, _b, _c, _d;
28966
- if (!needsLookup) {
28967
- return { ...known, status: "resolved" };
28968
- }
28969
- if ((lookup == null ? void 0 : lookup.key) !== lookupKey) {
28970
- return { ...known, status: "resolving" };
28971
- }
28972
- const found = lookup.ids;
28973
- const sameOrganisation = !known.organisationUuid || known.organisationUuid === (found == null ? void 0 : found.organisationUuid);
28974
- const organisationUuid = (_b = (_a = known.organisationUuid) != null ? _a : found == null ? void 0 : found.organisationUuid) != null ? _b : null;
28975
- const workspaceUuid = (_d = known.workspaceUuid) != null ? _d : sameOrganisation ? (_c = found == null ? void 0 : found.workspaceUuid) != null ? _c : null : null;
28976
- return {
28977
- organisationUuid,
28978
- workspaceUuid,
28979
- status: organisationUuid && workspaceUuid ? "resolved" : "failed"
28980
- };
28981
- }, [needsLookup, known, lookup, lookupKey]);
28982
- };
28983
28983
  var PrivacyCenterSettingsProvider = ({
28984
28984
  children,
28985
28985
  baseUrl,
28986
- slug,
28987
28986
  accessToken,
28988
28987
  organisationUuid,
28989
28988
  workspaceUuid,
@@ -28991,16 +28990,18 @@ var PrivacyCenterSettingsProvider = ({
28991
28990
  builtInSignIn = false
28992
28991
  }) => {
28993
28992
  const { currentLanguage } = useCurrentLanguage();
28994
- const known = (0, import_react78.useMemo)(
28995
- () => resolveOrganisationIds({ organisationUuid, workspaceUuid, accessToken, slug }),
28996
- [organisationUuid, workspaceUuid, accessToken, slug]
28997
- );
28998
- const organisation = useResolvedOrganisation(baseUrl, slug, known, builtInSignIn);
28993
+ const organisation = (0, import_react79.useMemo)(() => {
28994
+ const known = resolveOrganisationIds({ organisationUuid, workspaceUuid, accessToken });
28995
+ return {
28996
+ ...known,
28997
+ status: known.organisationUuid && known.workspaceUuid ? "resolved" : "failed"
28998
+ };
28999
+ }, [organisationUuid, workspaceUuid, accessToken]);
28999
29000
  const orgUuid = organisation.organisationUuid;
29000
29001
  const requestLanguage = requestLanguageFor(currentLanguage);
29001
- const [remote, setRemote] = (0, import_react78.useState)(null);
29002
- const [status, setStatus] = (0, import_react78.useState)("idle");
29003
- (0, import_react78.useEffect)(() => {
29002
+ const [remote, setRemote] = (0, import_react79.useState)(null);
29003
+ const [status, setStatus] = (0, import_react79.useState)("idle");
29004
+ (0, import_react79.useEffect)(() => {
29004
29005
  if (!orgUuid) {
29005
29006
  return void 0;
29006
29007
  }
@@ -29025,12 +29026,12 @@ var PrivacyCenterSettingsProvider = ({
29025
29026
  }, [baseUrl, orgUuid, requestLanguage]);
29026
29027
  const overridesKey = JSON.stringify(overrides != null ? overrides : null);
29027
29028
  const activeRemote = remote && remote.organisationUuid === orgUuid ? remote.response : null;
29028
- const settings = (0, import_react78.useMemo)(
29029
+ const settings = (0, import_react79.useMemo)(
29029
29030
  () => resolvePrivacyCenterSettings(activeRemote == null ? void 0 : activeRemote.settings, overrides),
29030
29031
  // eslint-disable-next-line react-hooks/exhaustive-deps
29031
29032
  [activeRemote, overridesKey]
29032
29033
  );
29033
- const brandContact = (0, import_react78.useMemo)(
29034
+ const brandContact = (0, import_react79.useMemo)(
29034
29035
  () => resolveBrandContact(activeRemote == null ? void 0 : activeRemote.brand_contact),
29035
29036
  [activeRemote]
29036
29037
  );
@@ -29039,16 +29040,16 @@ var PrivacyCenterSettingsProvider = ({
29039
29040
  );
29040
29041
  const isCustomised = isPublished || hasHostOverrides(overrides);
29041
29042
  useLanguagePolicy(settings, isCustomised);
29042
- const value = (0, import_react78.useMemo)(
29043
- () => ({ settings, status, isCustomised, organisation, slug, builtInSignIn, brandContact }),
29044
- [settings, status, isCustomised, organisation, slug, builtInSignIn, brandContact]
29043
+ const value = (0, import_react79.useMemo)(
29044
+ () => ({ settings, status, isCustomised, organisation, builtInSignIn, brandContact }),
29045
+ [settings, status, isCustomised, organisation, builtInSignIn, brandContact]
29045
29046
  );
29046
29047
  return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(PrivacyCenterSettingsContext.Provider, { value, children });
29047
29048
  };
29048
29049
  var languagePolicyOwner = null;
29049
29050
  var useLanguagePolicy = (settings, isCustomised) => {
29050
- const [ownerId] = (0, import_react78.useState)(() => /* @__PURE__ */ Symbol("language-policy"));
29051
- (0, import_react78.useEffect)(() => {
29051
+ const [ownerId] = (0, import_react79.useState)(() => /* @__PURE__ */ Symbol("language-policy"));
29052
+ (0, import_react79.useEffect)(() => {
29052
29053
  if (languagePolicyOwner === null) {
29053
29054
  languagePolicyOwner = ownerId;
29054
29055
  }
@@ -29059,7 +29060,7 @@ var useLanguagePolicy = (settings, isCustomised) => {
29059
29060
  };
29060
29061
  }, [ownerId]);
29061
29062
  const policyKey = isCustomised ? JSON.stringify(settings.languages) : "";
29062
- (0, import_react78.useEffect)(() => {
29063
+ (0, import_react79.useEffect)(() => {
29063
29064
  if (!policyKey || languagePolicyOwner !== ownerId) {
29064
29065
  return;
29065
29066
  }
@@ -29072,7 +29073,7 @@ var useLanguagePolicy = (settings, isCustomised) => {
29072
29073
 
29073
29074
  // src/RedactoPrivacyCenter/context/PrivacyCenterScopeContext.tsx
29074
29075
  var React3 = __toESM(require("react"));
29075
- var import_react79 = require("react");
29076
+ var import_react80 = require("react");
29076
29077
 
29077
29078
  // src/shared/appearance/scopedCss.ts
29078
29079
  var escapesScope = (style) => {
@@ -29110,7 +29111,7 @@ var PC_CUSTOM_CSS_ATTRIBUTE = "data-redacto-pc-css";
29110
29111
  var fallbackScopeCounter = 0;
29111
29112
  var useScopeId = () => {
29112
29113
  const reactUseId = React3.useId;
29113
- const [fallback] = (0, import_react79.useState)(() => {
29114
+ const [fallback] = (0, import_react80.useState)(() => {
29114
29115
  fallbackScopeCounter += 1;
29115
29116
  return `pc-${fallbackScopeCounter}`;
29116
29117
  });
@@ -29135,7 +29136,7 @@ var PrivacyCenterRoot = ({ children }) => {
29135
29136
  css: customCss
29136
29137
  });
29137
29138
  }, [customCss, id]);
29138
- const value = (0, import_react79.useMemo)(() => ({ id, dir }), [id, dir]);
29139
+ const value = (0, import_react80.useMemo)(() => ({ id, dir }), [id, dir]);
29139
29140
  return /* @__PURE__ */ (0, import_jsx_runtime103.jsx)(ScopeContext.Provider, { value, children: /* @__PURE__ */ (0, import_jsx_runtime103.jsx)("div", { ...{ [PC_SCOPE_ATTRIBUTE]: id }, dir, style: { display: "contents" }, children }) });
29140
29141
  };
29141
29142
 
@@ -32270,7 +32271,7 @@ function SettingsAppearance({ children }) {
32270
32271
  function RedactoPrivacyCenter({
32271
32272
  baseUrl,
32272
32273
  ledgerBaseUrl,
32273
- slug,
32274
+ slug = "",
32274
32275
  accessToken,
32275
32276
  refreshToken,
32276
32277
  token,
@@ -32297,13 +32298,12 @@ function RedactoPrivacyCenter({
32297
32298
  PrivacyCenterSettingsProvider,
32298
32299
  {
32299
32300
  baseUrl,
32300
- slug,
32301
32301
  accessToken,
32302
32302
  organisationUuid,
32303
32303
  workspaceUuid,
32304
32304
  overrides: settings,
32305
32305
  builtInSignIn: builtInSignIn && !token,
32306
- children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(PrivacyCenterRoot, { children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(SettingsAppearance, { children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(BrandingProvider, { slug, baseUrl, children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(BaseUrlProvider, { baseUrl, ledgerBaseUrl, children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
32306
+ children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(PrivacyCenterRoot, { children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(SettingsAppearance, { children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(BrandingProvider, { baseUrl, children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(BaseUrlProvider, { baseUrl, ledgerBaseUrl, children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(
32307
32307
  AuthProvider,
32308
32308
  {
32309
32309
  accessToken,
@@ -32314,7 +32314,6 @@ function RedactoPrivacyCenter({
32314
32314
  sandboxMobile: mobile,
32315
32315
  organisationUuid,
32316
32316
  workspaceUuid,
32317
- slug,
32318
32317
  onError,
32319
32318
  children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(NavigationProvider, { initialPage, children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(PageChromeProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(PrivacyCenterLayout, { slug, onBack, children: /* @__PURE__ */ (0, import_jsx_runtime104.jsx)(PrivacyCenterHomePage, {}) }) }) })
32320
32319
  }