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

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,iVBORw0KGgoAAAANSUhEUgAABBYAAAFXCAYAAAAWHs3EAAAMTWlDQ1BJQ0MgUHJvZmlsZQAASImVVwdYU8kWnltSIQQIREBK6E0QkRJASggt9I4gKiEJEEqMCUHFjiyu4NpFBMuKrlIU2wrIYkNddWVR7H2xoKKsi+tiV96EALrsK9+b75s7//3nzD/nnDtz7x0A6F18qTQX1QQgT5Iviw32Z01OTmGRegAKCIAG1IAVXyCXcqKjwwEsw+3fy+trAFG2lx2UWv/s/69FSyiSCwBAoiFOF8oFeRD/CADeKpDK8gEgSiFvPitfqsTrINaRQQchrlHiTBVuVeJ0Fb44aBMfy4X4EQBkdT5flgmARh/kWQWCTKhDh9ECJ4lQLIHYD2KfvLwZQogXQWwDbeCcdKU+O/0rncy/aaaPaPL5mSNYFctgIQeI5dJc/pz/Mx3/u+TlKobnsIZVPUsWEquMGebtUc6MMCVWh/itJD0yCmJtAFBcLBy0V2JmliIkQWWP2gjkXJgzwIR4kjw3jjfExwr5AWEQG0KcIcmNDB+yKcoQByltYP7QCnE+Lx5iPYhrRPLAuCGb47IZscPzXsuQcTlD/FO+bNAHpf5nRU4CR6WPaWeJeEP6mGNhVnwSxFSIAwrEiZEQa0AcKc+JCxuySS3M4kYO28gUscpYLCCWiSTB/ip9rDxDFhQ7ZF+XJx+OHTueJeZFDuFL+VnxIapcYY8E/EH/YSxYn0jCSRjWEcknhw/HIhQFBKpix8kiSUKcisf1pPn+saqxuJ00N3rIHvcX5QYreTOI4+UFccNjC/Lh4lTp4yXS/Oh4lZ94ZTY/NFrlD74PhAMuCAAsoIA1HcwA2UDc0dvUC+9UPUGAD2QgE4iAwxAzPCJpsEcCr3GgEPwOkQjIR8b5D/aKQAHkP41ilZx4hFNdHUDGUJ9SJQc8hjgPhIFceK8YVJKMeJAIHkFG/A+P+LAKYAy5sCr7/z0/zH5hOJAJH2IUwzOy6MOWxEBiADGEGES0xQ1wH9wLD4dXP1idcTbuMRzHF3vCY0In4QHhKqGLcHO6uEg2yssI0AX1g4byk/51fnArqOmK++PeUB0q40zcADjgLnAeDu4LZ3aFLHfIb2VWWKO0/xbBV09oyI7iREEpYyh+FJvRIzXsNFxHVJS5/jo/Kl/TR/LNHekZPT/3q+wLYRs22hL7FjuIncFOYOewVqwJsLBjWDPWjh1R4pEV92hwxQ3PFjvoTw7UGb1mvjxZZSblTvVOPU4fVX35otn5ys3InSGdIxNnZuWzOPCLIWLxJALHcSxnJ2dXAJTfH9Xr7VXM4HcFYbZ/4Zb8BoD3sYGBgZ++cKHHANjvDl8Jh79wNmz4aVED4OxhgUJWoOJw5YUA3xx0uPv0gTEwBzYwHmfgBryAHwgEoSAKxINkMA16nwXXuQzMAvPAYlACysAqsB5Ugq1gO6gBe8AB0ARawQnwMzgPLoKr4DZcPd3gOegDr8EHBEFICA1hIPqICWKJ2CPOCBvxQQKRcCQWSUbSkExEgiiQecgSpAxZg1Qi25BaZD9yGDmBnEM6kZvIfaQH+RN5j2KoOqqDGqFW6HiUjXLQMDQenYpmojPRQrQYXYFWoNXobrQRPYGeR6+iXehztB8DmBrGxEwxB4yNcbEoLAXLwGTYAqwUK8eqsQasBT7ny1gX1ou9w4k4A2fhDnAFh+AJuACfiS/Al+OVeA3eiJ/CL+P38T78M4FGMCTYEzwJPMJkQiZhFqGEUE7YSThEOA33UjfhNZFIZBKtie5wLyYTs4lzicuJm4l7iceJncSHxH4SiaRPsid5k6JIfFI+qYS0kbSbdIx0idRNektWI5uQnclB5BSyhFxELifXkY+SL5GfkD9QNCmWFE9KFEVImUNZSdlBaaFcoHRTPlC1qNZUb2o8NZu6mFpBbaCept6hvlJTUzNT81CLUROrLVKrUNundlbtvto7dW11O3Wueqq6Qn2F+i714+o31V/RaDQrmh8thZZPW0GrpZ2k3aO91WBoOGrwNIQaCzWqNBo1Lmm8oFPolnQOfRq9kF5OP0i/QO/VpGhaaXI1+ZoLNKs0D2te1+zXYmhN0IrSytNarlWndU7rqTZJ20o7UFuoXay9Xfuk9kMGxjBncBkCxhLGDsZpRrcOUcdah6eTrVOms0enQ6dPV1vXRTdRd7Zule4R3S4mxrRi8pi5zJXMA8xrzPdjjMZwxojGLBvTMObSmDd6Y/X89ER6pXp79a7qvddn6Qfq5+iv1m/Sv2uAG9gZxBjMMthicNqgd6zOWK+xgrGlYw+MvWWIGtoZxhrONdxu2G7Yb2RsFGwkNdpodNKo15hp7GecbbzO+KhxjwnDxMdEbLLO5JjJM5Yui8PKZVWwTrH6TA1NQ0wVpttMO0w/mFmbJZgVme01u2tONWebZ5ivM28z77MwsYiwmGdRb3HLkmLJtsyy3GB5xvKNlbVVktVSqyarp9Z61jzrQut66zs2NBtfm5k21TZXbIm2bNsc2822F+1QO1e7LLsquwv2qL2bvdh+s33nOMI4j3GScdXjrjuoO3AcChzqHe47Mh3DHYscmxxfjLcYnzJ+9fgz4z87uTrlOu1wuj1Be0LohKIJLRP+dLZzFjhXOV+ZSJsYNHHhxOaJL13sXUQuW1xuuDJcI1yXura5fnJzd5O5Nbj1uFu4p7lvcr/O1mFHs5ezz3oQPPw9Fnq0erzzdPPM9zzg+YeXg1eOV53X00nWk0STdkx66G3mzffe5t3lw/JJ8/nep8vX1JfvW+37wM/cT+i30+8Jx5aTzdnNeeHv5C/zP+T/huvJnc89HoAFBAeUBnQEagcmBFYG3gsyC8oMqg/qC3YNnht8PIQQEhayOuQ6z4gn4NXy+kLdQ+eHngpTD4sLqwx7EG4XLgtviUAjQiPWRtyJtIyURDZFgShe1Nqou9HW0TOjf4ohxkTHVMU8jp0QOy/2TBwjbnpcXdzreP/4lfG3E2wSFAltifTE1MTaxDdJAUlrkromj588f/L5ZINkcXJzCiklMWVnSv+UwCnrp3SnuqaWpF6baj119tRz0wym5U47Mp0+nT/9YBohLSmtLu0jP4pfze9P56VvSu8TcAUbBM+FfsJ1wh6Rt2iN6EmGd8aajKeZ3plrM3uyfLPKs3rFXHGl+GV2SPbW7Dc5UTm7cgZyk3L35pHz0vIOS7QlOZJTM4xnzJ7RKbWXlki7ZnrOXD+zTxYm2ylH5FPlzfk68Ee/XWGj+EZxv8CnoKrg7azEWQdna82WzG6fYzdn2ZwnhUGFP8zF5wrmts0znbd43v35nPnbFiAL0he0LTRfWLywe1HwoprF1MU5i38tcipaU/TXkqQlLcVGxYuKH34T/E19iUaJrOT6Uq+lW7/FvxV/27Fs4rKNyz6XCkt/KXMqKy/7uFyw/JfvJnxX8d3AiowVHSvdVm5ZRVwlWXVtte/qmjVaawrXPFwbsbZxHWtd6bq/1k9ff67cpXzrBuoGxYauivCK5o0WG1dt/FiZVXm1yr9q7ybDTcs2vdks3Hxpi9+Whq1GW8u2vv9e/P2NbcHbGqutqsu3E7cXbH+8I3HHmR/YP9TuNNhZtvPTLsmurprYmlO17rW1dYZ1K+vRekV9z+7U3Rf3BOxpbnBo2LaXubdsH9in2Pdsf9r+awfCDrQdZB9s+NHyx02HGIdKG5HGOY19TVlNXc3JzZ2HQw+3tXi1HPrJ8addraatVUd0j6w8Sj1afHTgWOGx/uPS470nMk88bJvedvvk5JNXTsWc6jgddvrsz0E/nzzDOXPsrPfZ1nOe5w7/wv6l6bzb+cZ21/ZDv7r+eqjDraPxgvuF5oseF1s6J3UeveR76cTlgMs/X+FdOX818mrntYRrN66nXu+6Ibzx9GbuzZe3Cm59uL3oDuFO6V3Nu+X3DO9V/2b7294ut64j9wPutz+Ie3D7oeDh80fyRx+7ix/THpc/MXlS+9T5aWtPUM/FZ1OedT+XPv/QW/K71u+bXti8+PEPvz/a+yb3db+UvRz4c/kr/Ve7/nL5q60/uv/e67zXH96UvtV/W/OO/e7M+6T3Tz7M+kj6WPHJ9lPL57DPdwbyBgakfBl/8FcAA8qjTQYAf+4CgJYMAAOeG6lTVOfDwYKozrSDCPwnrDpDDhY3ABrgP31ML/y7uQ7Avh0AWEF9eioA0TQA4j0AOnHiSB0+yw2eO5WFCM8G3wd+Ss9LB/+mqM6kX/k9ugVKVRcwuv0X5iOC7u4vU/0AAACWZVhJZk1NACoAAAAIAAUBEgADAAAAAQABAAABGgAFAAAAAQAAAEoBGwAFAAAAAQAAAFIBKAADAAAAAQACAACHaQAEAAAAAQAAAFoAAAAAAAAAkAAAAAEAAACQAAAAAQADkoYABwAAABIAAACEoAIABAAAAAEAAAQWoAMABAAAAAEAAAFXAAAAAEFTQ0lJAAAAU2NyZWVuc2hvdCMABKgAAAAJcEhZcwAAFiUAABYlAUlSJPAAAALYaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA2LjAuMCI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+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;
@@ -14786,6 +14859,7 @@ var LANGUAGE_CODES = [
14786
14859
  ];
14787
14860
  var RTL_LANGUAGES = /* @__PURE__ */ new Set(["ur", "sd", "ks"]);
14788
14861
  var COUNTRY_CODES = ["+91", "+971", "+65", "+44", "+1"];
14862
+ var LOGO_ALIGNMENTS = ["auto", "left", "center", "right"];
14789
14863
  var FONT_FAMILIES = [
14790
14864
  "Inter",
14791
14865
  "Montserrat",
@@ -14838,6 +14912,7 @@ var DEFAULT_PRIVACY_CENTER_SETTINGS = {
14838
14912
  display_name: null,
14839
14913
  logo_url: null,
14840
14914
  logo_height: null,
14915
+ logo_align: "auto",
14841
14916
  inherit_colors: true,
14842
14917
  primary_color: null,
14843
14918
  accent_color: null,
@@ -14940,17 +15015,16 @@ var DEFAULT_CONTEXT = {
14940
15015
  status: "idle",
14941
15016
  isCustomised: false,
14942
15017
  organisation: { organisationUuid: null, workspaceUuid: null, status: "failed" },
14943
- slug: "",
14944
15018
  builtInSignIn: false,
14945
15019
  brandContact: EMPTY_BRAND_CONTACT
14946
15020
  };
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;
15021
+ var PrivacyCenterSettingsContext = (0, import_react23.createContext)(DEFAULT_CONTEXT);
15022
+ var usePrivacyCenterSettingsContext = () => (0, import_react23.useContext)(PrivacyCenterSettingsContext);
15023
+ var usePrivacyCenterSettings = () => (0, import_react23.useContext)(PrivacyCenterSettingsContext).settings;
14950
15024
 
14951
15025
  // src/RedactoPrivacyCenter/context/BrandingContext.tsx
14952
15026
  var import_jsx_runtime25 = require("react/jsx-runtime");
14953
- var BrandingContext = (0, import_react23.createContext)(null);
15027
+ var BrandingContext = (0, import_react24.createContext)(null);
14954
15028
  var withIdentityOverride = (branding, settings) => {
14955
15029
  var _a;
14956
15030
  if (settings.inherit_identity) {
@@ -14967,18 +15041,20 @@ var withIdentityOverride = (branding, settings) => {
14967
15041
  };
14968
15042
  var BrandingProvider = ({
14969
15043
  children,
14970
- slug,
14971
15044
  baseUrl
14972
15045
  }) => {
14973
15046
  var _a;
14974
- const [branding, setBranding] = (0, import_react23.useState)(null);
14975
- const { branding: brandingSettings } = usePrivacyCenterSettings();
15047
+ const [branding, setBranding] = (0, import_react24.useState)(null);
15048
+ const { settings, organisation } = usePrivacyCenterSettingsContext();
15049
+ const brandingSettings = settings.branding;
15050
+ const organisationUuid = organisation.organisationUuid;
14976
15051
  const scope = usePrivacyCenterScope();
14977
15052
  const scopeId = (_a = scope == null ? void 0 : scope.id) != null ? _a : null;
14978
- (0, import_react23.useEffect)(() => {
14979
- if (!slug) return;
15053
+ (0, import_react24.useEffect)(() => {
15054
+ setBranding(null);
15055
+ if (!organisationUuid) return;
14980
15056
  let cancelled = false;
14981
- fetchOrgBranding(slug, baseUrl).then((data) => {
15057
+ fetchOrgBrandingForOrganisation(organisationUuid, baseUrl).then((data) => {
14982
15058
  if (!cancelled) setBranding(data);
14983
15059
  }).catch((error) => {
14984
15060
  console.warn("[RedactoPrivacyCenter] org branding fetch failed:", error);
@@ -14986,8 +15062,8 @@ var BrandingProvider = ({
14986
15062
  return () => {
14987
15063
  cancelled = true;
14988
15064
  };
14989
- }, [slug, baseUrl]);
14990
- const themeVars = (0, import_react23.useMemo)(
15065
+ }, [organisationUuid, baseUrl]);
15066
+ const themeVars = (0, import_react24.useMemo)(
14991
15067
  () => ({
14992
15068
  ...(branding == null ? void 0 : branding.theme) ? brandingThemeVars(branding.theme) : {},
14993
15069
  ...settingsThemeVars(brandingSettings)
@@ -14995,7 +15071,7 @@ var BrandingProvider = ({
14995
15071
  [branding, brandingSettings]
14996
15072
  );
14997
15073
  const themeKey = JSON.stringify(themeVars);
14998
- (0, import_react23.useEffect)(() => {
15074
+ (0, import_react24.useEffect)(() => {
14999
15075
  if (scopeId) {
15000
15076
  return applyScopedTheme(PC_SCOPE_ATTRIBUTE, scopeId, themeVars);
15001
15077
  }
@@ -15005,7 +15081,7 @@ var BrandingProvider = ({
15005
15081
  applyBrandingTheme(branding.theme);
15006
15082
  return clearBrandingTheme;
15007
15083
  }, [scopeId, themeKey]);
15008
- const value = (0, import_react23.useMemo)(
15084
+ const value = (0, import_react24.useMemo)(
15009
15085
  () => ({ branding: withIdentityOverride(branding, brandingSettings) }),
15010
15086
  [branding, brandingSettings]
15011
15087
  );
@@ -15013,12 +15089,12 @@ var BrandingProvider = ({
15013
15089
  };
15014
15090
  var useBranding = () => {
15015
15091
  var _a;
15016
- const ctx = (0, import_react23.useContext)(BrandingContext);
15092
+ const ctx = (0, import_react24.useContext)(BrandingContext);
15017
15093
  return (_a = ctx == null ? void 0 : ctx.branding) != null ? _a : null;
15018
15094
  };
15019
15095
 
15020
15096
  // src/RedactoPrivacyCenter/settings/copy.ts
15021
- var import_react24 = require("react");
15097
+ var import_react25 = require("react");
15022
15098
  var import_react_i18next3 = require("react-i18next");
15023
15099
 
15024
15100
  // src/RedactoPrivacyCenter/settings/placeholders.ts
@@ -15046,20 +15122,19 @@ var resolvePlaceholders = (text2, context) => {
15046
15122
  };
15047
15123
 
15048
15124
  // 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
15125
  var usePlaceholderContext = () => {
15051
15126
  var _a, _b;
15052
15127
  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);
15128
+ const { brandContact } = usePrivacyCenterSettingsContext();
15129
+ const organizationName = (_b = (_a = (0, import_react25.useContext)(OrganizationContext)) == null ? void 0 : _a.organization) == null ? void 0 : _b.name;
15130
+ const brand = (branding == null ? void 0 : branding.brand_name) || organizationName || "";
15056
15131
  const legal = brandContact.legal_entity_name || (branding == null ? void 0 : branding.legal_name) || null;
15057
- return (0, import_react24.useMemo)(() => ({ brand, legal }), [brand, legal]);
15132
+ return (0, import_react25.useMemo)(() => ({ brand, legal }), [brand, legal]);
15058
15133
  };
15059
15134
  var useSettingsCopy = () => {
15060
15135
  const { t } = (0, import_react_i18next3.useTranslation)();
15061
15136
  const context = usePlaceholderContext();
15062
- return (0, import_react24.useCallback)(
15137
+ return (0, import_react25.useCallback)(
15063
15138
  (value, extra) => {
15064
15139
  if (!value) {
15065
15140
  return "";
@@ -15208,11 +15283,11 @@ function Footer() {
15208
15283
  }
15209
15284
 
15210
15285
  // src/RedactoNoticeConsent/useMediaQuery.ts
15211
- var import_react25 = require("react");
15286
+ var import_react26 = require("react");
15212
15287
  var useMediaQuery = (query) => {
15213
15288
  const getMatches = () => typeof window !== "undefined" ? window.matchMedia(query).matches : false;
15214
- const [matches, setMatches] = (0, import_react25.useState)(getMatches);
15215
- (0, import_react25.useEffect)(() => {
15289
+ const [matches, setMatches] = (0, import_react26.useState)(getMatches);
15290
+ (0, import_react26.useEffect)(() => {
15216
15291
  if (typeof window === "undefined") return;
15217
15292
  const media = window.matchMedia(query);
15218
15293
  const listener = (e) => {
@@ -15235,7 +15310,7 @@ var useMediaQuery = (query) => {
15235
15310
  };
15236
15311
 
15237
15312
  // src/RedactoPrivacyCenter/components/AppShell/hooks/useSidebarState.ts
15238
- var import_react26 = require("react");
15313
+ var import_react27 = require("react");
15239
15314
  var STORAGE_KEY = "redacto-pc-sidebar-state";
15240
15315
  var EXPAND_MIN_WIDTH = "(min-width: 1024px)";
15241
15316
  function getDefaultState() {
@@ -15263,18 +15338,18 @@ function writeStored(value) {
15263
15338
  }
15264
15339
  }
15265
15340
  function useSidebarState() {
15266
- const [state, setStateRaw] = (0, import_react26.useState)(void 0);
15267
- (0, import_react26.useEffect)(() => {
15341
+ const [state, setStateRaw] = (0, import_react27.useState)(void 0);
15342
+ (0, import_react27.useEffect)(() => {
15268
15343
  var _a;
15269
15344
  setStateRaw((_a = readStored()) != null ? _a : getDefaultState());
15270
15345
  }, []);
15271
- (0, import_react26.useEffect)(() => {
15346
+ (0, import_react27.useEffect)(() => {
15272
15347
  if (state) writeStored(state);
15273
15348
  }, [state]);
15274
- const setState = (0, import_react26.useCallback)((next) => {
15349
+ const setState = (0, import_react27.useCallback)((next) => {
15275
15350
  setStateRaw(next);
15276
15351
  }, []);
15277
- const toggle = (0, import_react26.useCallback)(() => {
15352
+ const toggle = (0, import_react27.useCallback)(() => {
15278
15353
  setStateRaw((prev) => prev === "expanded" ? "collapsed" : "expanded");
15279
15354
  }, []);
15280
15355
  return {
@@ -15287,7 +15362,7 @@ function useSidebarState() {
15287
15362
  }
15288
15363
 
15289
15364
  // src/RedactoPrivacyCenter/components/AppShell/hooks/useKeyboardShortcut.ts
15290
- var import_react27 = require("react");
15365
+ var import_react28 = require("react");
15291
15366
  function isEditableTarget(target) {
15292
15367
  if (!target || !(target instanceof HTMLElement)) return false;
15293
15368
  const tag = target.tagName;
@@ -15296,7 +15371,7 @@ function isEditableTarget(target) {
15296
15371
  return false;
15297
15372
  }
15298
15373
  function useKeyboardShortcut(combo, handler) {
15299
- (0, import_react27.useEffect)(() => {
15374
+ (0, import_react28.useEffect)(() => {
15300
15375
  if (typeof window === "undefined") return;
15301
15376
  const onKey = (event) => {
15302
15377
  if (event.key.toLowerCase() !== combo.key.toLowerCase()) return;
@@ -15316,12 +15391,12 @@ function useKeyboardShortcut(combo, handler) {
15316
15391
  }
15317
15392
 
15318
15393
  // src/RedactoPrivacyCenter/components/AppShell/TopAppBar.tsx
15319
- var import_react36 = require("react");
15394
+ var import_react37 = require("react");
15320
15395
  var import_react_i18next12 = require("react-i18next");
15321
15396
  var import_lucide_react8 = require("lucide-react");
15322
15397
 
15323
15398
  // src/RedactoPrivacyCenter/context/NavigationContext.tsx
15324
- var import_react28 = require("react");
15399
+ var import_react29 = require("react");
15325
15400
  var import_jsx_runtime27 = require("react/jsx-runtime");
15326
15401
  var NAV_STORAGE_KEY = "pc_current_page";
15327
15402
  var CASE_UUID_STORAGE_KEY = "pc_selected_case_uuid";
@@ -15352,18 +15427,18 @@ function getStoredCaseUuid() {
15352
15427
  return null;
15353
15428
  }
15354
15429
  }
15355
- var NavigationContext = (0, import_react28.createContext)(null);
15430
+ var NavigationContext = (0, import_react29.createContext)(null);
15356
15431
  var NavigationProvider = ({
15357
15432
  children,
15358
15433
  initialPage = "consent-manager"
15359
15434
  }) => {
15360
15435
  var _a;
15361
- const [currentPage, setCurrentPage] = (0, import_react28.useState)(
15436
+ const [currentPage, setCurrentPage] = (0, import_react29.useState)(
15362
15437
  () => getStoredPage(initialPage)
15363
15438
  );
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) => {
15439
+ const [selectedCase, setSelectedCaseState] = (0, import_react29.useState)(null);
15440
+ const [pendingCaseUuid] = (0, import_react29.useState)(() => getStoredCaseUuid());
15441
+ const setSelectedCase = (0, import_react29.useCallback)((c) => {
15367
15442
  setSelectedCaseState(c);
15368
15443
  try {
15369
15444
  if (c == null ? void 0 : c.uuid) {
@@ -15375,16 +15450,16 @@ var NavigationProvider = ({
15375
15450
  }
15376
15451
  }, []);
15377
15452
  const { portal } = usePrivacyCenterSettings();
15378
- const enabledPages = (0, import_react28.useMemo)(
15453
+ const enabledPages = (0, import_react29.useMemo)(
15379
15454
  () => portal.sections.filter((section) => section.enabled).map((section) => section.key),
15380
15455
  [portal.sections]
15381
15456
  );
15382
- const isPageAllowed = (0, import_react28.useCallback)(
15457
+ const isPageAllowed = (0, import_react29.useCallback)(
15383
15458
  (page) => page === "case-details" || enabledPages.includes(page),
15384
15459
  [enabledPages]
15385
15460
  );
15386
15461
  const effectivePage = isPageAllowed(currentPage) ? currentPage : (_a = enabledPages[0]) != null ? _a : "consent-manager";
15387
- const navigateTo = (0, import_react28.useCallback)((page) => {
15462
+ const navigateTo = (0, import_react29.useCallback)((page) => {
15388
15463
  if (!isPageAllowed(page)) {
15389
15464
  return;
15390
15465
  }
@@ -15400,7 +15475,7 @@ var NavigationProvider = ({
15400
15475
  return /* @__PURE__ */ (0, import_jsx_runtime27.jsx)(NavigationContext.Provider, { value: { currentPage: effectivePage, navigateTo, selectedCase, setSelectedCase, pendingCaseUuid }, children });
15401
15476
  };
15402
15477
  var useInternalNavigation = () => {
15403
- const context = (0, import_react28.useContext)(NavigationContext);
15478
+ const context = (0, import_react29.useContext)(NavigationContext);
15404
15479
  if (!context) {
15405
15480
  throw new Error("useInternalNavigation must be used within a NavigationProvider");
15406
15481
  }
@@ -15434,7 +15509,7 @@ var rememberLanguageChoice = (code) => {
15434
15509
  };
15435
15510
 
15436
15511
  // src/RedactoPrivacyCenter/settings/hooks.ts
15437
- var import_react29 = require("react");
15512
+ var import_react30 = require("react");
15438
15513
  var import_react_i18next5 = require("react-i18next");
15439
15514
 
15440
15515
  // src/RedactoPrivacyCenter/components/SideMenuBarPC/constants.tsx
@@ -15466,7 +15541,7 @@ var menuItemsPC = [
15466
15541
  // src/RedactoPrivacyCenter/settings/hooks.ts
15467
15542
  var useIsSectionEnabled = () => {
15468
15543
  const { portal } = usePrivacyCenterSettings();
15469
- return (0, import_react29.useCallback)(
15544
+ return (0, import_react30.useCallback)(
15470
15545
  (key) => {
15471
15546
  var _a, _b;
15472
15547
  return (_b = (_a = portal.sections.find((section) => section.key === key)) == null ? void 0 : _a.enabled) != null ? _b : true;
@@ -15477,7 +15552,7 @@ var useIsSectionEnabled = () => {
15477
15552
  var useMenuItemsPC = () => {
15478
15553
  const { t } = (0, import_react_i18next5.useTranslation)();
15479
15554
  const { portal } = usePrivacyCenterSettings();
15480
- return (0, import_react29.useMemo)(
15555
+ return (0, import_react30.useMemo)(
15481
15556
  () => portal.sections.filter((section) => section.enabled).flatMap((section) => {
15482
15557
  var _a;
15483
15558
  const item = menuItemsPC.find((candidate) => candidate.href === section.key);
@@ -15488,14 +15563,14 @@ var useMenuItemsPC = () => {
15488
15563
  };
15489
15564
  var useLanguageOptions = () => {
15490
15565
  const { languages } = usePrivacyCenterSettings();
15491
- return (0, import_react29.useMemo)(() => {
15566
+ return (0, import_react30.useMemo)(() => {
15492
15567
  const options = languageOptions.filter((option2) => languages.enabled.includes(option2.value));
15493
15568
  return { options, showSwitcher: languages.show_switcher && options.length >= 2 };
15494
15569
  }, [languages]);
15495
15570
  };
15496
15571
 
15497
15572
  // src/RedactoPrivacyCenter/components/NotificationHub/NotificationBell.tsx
15498
- var import_react31 = require("react");
15573
+ var import_react32 = require("react");
15499
15574
  var import_react_i18next9 = require("react-i18next");
15500
15575
  var import_io53 = require("react-icons/io5");
15501
15576
 
@@ -15708,7 +15783,7 @@ var NotificationDropdown = ({
15708
15783
  };
15709
15784
 
15710
15785
  // src/RedactoPrivacyCenter/components/NotificationHub/useNotificationActions.ts
15711
- var import_react30 = require("react");
15786
+ var import_react31 = require("react");
15712
15787
  var useNotificationActions = () => {
15713
15788
  var _a;
15714
15789
  const { navigateTo, setSelectedCase } = useInternalNavigation();
@@ -15718,38 +15793,38 @@ var useNotificationActions = () => {
15718
15793
  const { langParam } = useCurrentLanguage();
15719
15794
  const organizationId = organization == null ? void 0 : organization.uuid;
15720
15795
  const workspaceId = (_a = organization == null ? void 0 : organization.workspaces[0]) == null ? void 0 : _a.uuid;
15721
- const authContext = (0, import_react30.useMemo)(() => ({
15796
+ const authContext = (0, import_react31.useMemo)(() => ({
15722
15797
  accessToken,
15723
15798
  refreshToken,
15724
15799
  onError,
15725
15800
  updateTokens
15726
15801
  }), [accessToken, refreshToken, onError, updateTokens]);
15727
- const hasAcknowledgeCTA = (0, import_react30.useCallback)((notification) => {
15802
+ const hasAcknowledgeCTA = (0, import_react31.useCallback)((notification) => {
15728
15803
  var _a2, _b;
15729
15804
  return (_b = (_a2 = notification.ctas) == null ? void 0 : _a2.some((cta) => cta.action_type === "acknowledge")) != null ? _b : false;
15730
15805
  }, []);
15731
- const handleMarkRead = (0, import_react30.useCallback)(async (notificationUuid) => {
15806
+ const handleMarkRead = (0, import_react31.useCallback)(async (notificationUuid) => {
15732
15807
  if (!organizationId || !workspaceId) {
15733
15808
  return false;
15734
15809
  }
15735
15810
  const result = await markNotificationRead(organizationId, workspaceId, notificationUuid, authContext, consentClient);
15736
15811
  return result !== null;
15737
15812
  }, [organizationId, workspaceId, authContext, consentClient]);
15738
- const handleMarkAllRead = (0, import_react30.useCallback)(async () => {
15813
+ const handleMarkAllRead = (0, import_react31.useCallback)(async () => {
15739
15814
  if (!organizationId || !workspaceId) {
15740
15815
  return false;
15741
15816
  }
15742
15817
  const result = await markAllRead(organizationId, workspaceId, authContext, consentClient);
15743
15818
  return result !== null;
15744
15819
  }, [organizationId, workspaceId, authContext, consentClient]);
15745
- const handleAcknowledge = (0, import_react30.useCallback)(async (notificationUuid) => {
15820
+ const handleAcknowledge = (0, import_react31.useCallback)(async (notificationUuid) => {
15746
15821
  if (!organizationId || !workspaceId) {
15747
15822
  return false;
15748
15823
  }
15749
15824
  const result = await acknowledgeNotification(organizationId, workspaceId, notificationUuid, authContext, consentClient);
15750
15825
  return result !== null;
15751
15826
  }, [organizationId, workspaceId, authContext, consentClient]);
15752
- const handleCTAClick = (0, import_react30.useCallback)(async (notification, cta) => {
15827
+ const handleCTAClick = (0, import_react31.useCallback)(async (notification, cta) => {
15753
15828
  var _a2;
15754
15829
  if (cta.action_type === "acknowledge") {
15755
15830
  const ok = await handleAcknowledge(notification.uuid);
@@ -15807,11 +15882,11 @@ var import_jsx_runtime34 = require("react/jsx-runtime");
15807
15882
  var NotificationBell = () => {
15808
15883
  const { t } = (0, import_react_i18next9.useTranslation)();
15809
15884
  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);
15885
+ const [notifications, setNotifications] = (0, import_react32.useState)([]);
15886
+ const [unreadCount, setUnreadCount] = (0, import_react32.useState)(0);
15887
+ const [isRefreshing2, setIsRefreshing] = (0, import_react32.useState)(false);
15888
+ const pollRef = (0, import_react32.useRef)(null);
15889
+ const tenantRequestRef = (0, import_react32.useRef)(0);
15815
15890
  const {
15816
15891
  organizationId,
15817
15892
  workspaceId,
@@ -15822,7 +15897,7 @@ var NotificationBell = () => {
15822
15897
  handleMarkAllRead,
15823
15898
  handleCTAClick
15824
15899
  } = useNotificationActions();
15825
- const pollUnreadCount = (0, import_react31.useCallback)(async () => {
15900
+ const pollUnreadCount = (0, import_react32.useCallback)(async () => {
15826
15901
  if (!organizationId || !workspaceId) {
15827
15902
  return;
15828
15903
  }
@@ -15838,7 +15913,7 @@ var NotificationBell = () => {
15838
15913
  setUnreadCount(result.count);
15839
15914
  }
15840
15915
  }, [organizationId, workspaceId, authContext, consentClient]);
15841
- const loadDropdownNotifications = (0, import_react31.useCallback)(async () => {
15916
+ const loadDropdownNotifications = (0, import_react32.useCallback)(async () => {
15842
15917
  if (!organizationId || !workspaceId) {
15843
15918
  return;
15844
15919
  }
@@ -15854,7 +15929,7 @@ var NotificationBell = () => {
15854
15929
  }
15855
15930
  }
15856
15931
  }, [organizationId, workspaceId, authContext, consentClient, langParam]);
15857
- (0, import_react31.useEffect)(() => {
15932
+ (0, import_react32.useEffect)(() => {
15858
15933
  tenantRequestRef.current += 1;
15859
15934
  setNotifications([]);
15860
15935
  setUnreadCount(0);
@@ -15862,11 +15937,11 @@ var NotificationBell = () => {
15862
15937
  tenantRequestRef.current += 1;
15863
15938
  };
15864
15939
  }, [organizationId, workspaceId]);
15865
- const pollUnreadCountRef = (0, import_react31.useRef)(pollUnreadCount);
15866
- (0, import_react31.useEffect)(() => {
15940
+ const pollUnreadCountRef = (0, import_react32.useRef)(pollUnreadCount);
15941
+ (0, import_react32.useEffect)(() => {
15867
15942
  pollUnreadCountRef.current = pollUnreadCount;
15868
15943
  }, [pollUnreadCount]);
15869
- (0, import_react31.useEffect)(() => {
15944
+ (0, import_react32.useEffect)(() => {
15870
15945
  if (!organizationId || !workspaceId) {
15871
15946
  if (pollRef.current) {
15872
15947
  clearInterval(pollRef.current);
@@ -15882,7 +15957,7 @@ var NotificationBell = () => {
15882
15957
  }
15883
15958
  };
15884
15959
  }, [organizationId, workspaceId]);
15885
- const onRefresh = (0, import_react31.useCallback)(async () => {
15960
+ const onRefresh = (0, import_react32.useCallback)(async () => {
15886
15961
  setIsRefreshing(true);
15887
15962
  try {
15888
15963
  await loadDropdownNotifications();
@@ -15890,7 +15965,7 @@ var NotificationBell = () => {
15890
15965
  setIsRefreshing(false);
15891
15966
  }
15892
15967
  }, [loadDropdownNotifications]);
15893
- const onMarkAllRead = (0, import_react31.useCallback)(async () => {
15968
+ const onMarkAllRead = (0, import_react32.useCallback)(async () => {
15894
15969
  const ok = await handleMarkAllRead();
15895
15970
  if (!ok) {
15896
15971
  return;
@@ -15898,7 +15973,7 @@ var NotificationBell = () => {
15898
15973
  setNotifications((prev) => prev.map((n) => ({ ...n, is_read: true })));
15899
15974
  setUnreadCount(0);
15900
15975
  }, [handleMarkAllRead]);
15901
- const onNotificationClick = (0, import_react31.useCallback)(async (notification) => {
15976
+ const onNotificationClick = (0, import_react32.useCallback)(async (notification) => {
15902
15977
  if (!notification.is_read) {
15903
15978
  const ok = await handleMarkRead(notification.uuid);
15904
15979
  if (!ok) {
@@ -15908,7 +15983,7 @@ var NotificationBell = () => {
15908
15983
  setUnreadCount((prev) => Math.max(0, prev - 1));
15909
15984
  }
15910
15985
  }, [handleMarkRead]);
15911
- const onCTAClick = (0, import_react31.useCallback)(async (notification, cta) => {
15986
+ const onCTAClick = (0, import_react32.useCallback)(async (notification, cta) => {
15912
15987
  const result = await handleCTAClick(notification, cta);
15913
15988
  if (result === "acknowledged") {
15914
15989
  setNotifications((prev) => prev.map(
@@ -15952,28 +16027,28 @@ var NotificationBell = () => {
15952
16027
  };
15953
16028
 
15954
16029
  // src/RedactoPrivacyCenter/components/AppShell/UserMenu.tsx
15955
- var import_react34 = require("react");
16030
+ var import_react35 = require("react");
15956
16031
  var import_lucide_react6 = require("lucide-react");
15957
16032
  var import_react_i18next11 = require("react-i18next");
15958
16033
 
15959
16034
  // src/RedactoPrivacyCenter/context/ProfileSwitchContext.tsx
15960
- var import_react32 = require("react");
15961
- var ProfileSwitchContext = (0, import_react32.createContext)({
16035
+ var import_react33 = require("react");
16036
+ var ProfileSwitchContext = (0, import_react33.createContext)({
15962
16037
  canSwitch: false,
15963
16038
  switchProfile: () => {
15964
16039
  }
15965
16040
  });
15966
16041
  var ProfileSwitchProvider = ProfileSwitchContext.Provider;
15967
- var useProfileSwitch = () => (0, import_react32.useContext)(ProfileSwitchContext);
16042
+ var useProfileSwitch = () => (0, import_react33.useContext)(ProfileSwitchContext);
15968
16043
 
15969
16044
  // src/RedactoPrivacyCenter/components/AppShell/usePrivacyCenterExitAction.ts
15970
- var import_react33 = require("react");
16045
+ var import_react34 = require("react");
15971
16046
  var import_react_i18next10 = require("react-i18next");
15972
16047
  var import_lucide_react5 = require("lucide-react");
15973
16048
  function usePrivacyCenterExitAction(onBack) {
15974
16049
  const { t } = (0, import_react_i18next10.useTranslation)();
15975
16050
  const { emitSignOut } = usePrivacyCenterEvents();
15976
- const handleAction = (0, import_react33.useCallback)(() => {
16051
+ const handleAction = (0, import_react34.useCallback)(() => {
15977
16052
  if (onBack === "back") {
15978
16053
  window.history.back();
15979
16054
  } else if (onBack === "signout") {
@@ -16017,8 +16092,8 @@ function UserMenu({ onBack }) {
16017
16092
  const branding = useBranding();
16018
16093
  const { organization } = useOrganization();
16019
16094
  const { accessToken } = useAuth();
16020
- const [email, setEmail] = (0, import_react34.useState)("");
16021
- (0, import_react34.useEffect)(() => {
16095
+ const [email, setEmail] = (0, import_react35.useState)("");
16096
+ (0, import_react35.useEffect)(() => {
16022
16097
  setEmail(readEmail());
16023
16098
  }, []);
16024
16099
  const { handleAction, label: actionLabel, Icon: ActionIcon } = usePrivacyCenterExitAction(onBack);
@@ -16208,14 +16283,14 @@ function UserMenu({ onBack }) {
16208
16283
  }
16209
16284
 
16210
16285
  // src/RedactoPrivacyCenter/components/AppShell/CompactLanguageMenu.tsx
16211
- var import_react35 = require("react");
16286
+ var import_react36 = require("react");
16212
16287
  var import_lucide_react7 = require("lucide-react");
16213
16288
  var import_jsx_runtime36 = require("react/jsx-runtime");
16214
16289
  function CompactLanguageMenu({ locale, options, onChange }) {
16215
16290
  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)(() => {
16291
+ const containerRef = (0, import_react36.useRef)(null);
16292
+ const [open, setOpen] = (0, import_react36.useState)(false);
16293
+ (0, import_react36.useEffect)(() => {
16219
16294
  if (!open) return;
16220
16295
  const onDocMouseDown = (event) => {
16221
16296
  var _a2;
@@ -16344,9 +16419,20 @@ function CompactLanguageMenu({ locale, options, onChange }) {
16344
16419
 
16345
16420
  // src/RedactoPrivacyCenter/components/AppShell/TopAppBar.tsx
16346
16421
  var import_jsx_runtime37 = require("react/jsx-runtime");
16422
+ var LOGO_GROUP_PLACEMENT = {
16423
+ // `left`, not `insetInlineStart`: the translation is physical, so a logical
16424
+ // offset would measure from the right under RTL and land off centre.
16425
+ center: {
16426
+ position: "absolute",
16427
+ left: "50%",
16428
+ transform: "translateX(-50%)"
16429
+ },
16430
+ right: { order: 1 }
16431
+ };
16432
+ var hamburgerLeadsHeader = (logoAlign) => logoAlign === "center" || logoAlign === "right";
16347
16433
  var TOP_BAR_LOGO_HEIGHT = 32;
16348
16434
  var TOP_BAR_LOGO_MAX_HEIGHT = 40;
16349
- var TopAppBar = (0, import_react36.forwardRef)(function TopAppBar2({ onOpenMobileNav, showHamburger, locale, onLocaleChange, onBack, showNotifications = true }, hamburgerRef) {
16435
+ var TopAppBar = (0, import_react37.forwardRef)(function TopAppBar2({ onOpenMobileNav, showHamburger, locale, onLocaleChange, onBack, showNotifications = true }, hamburgerRef) {
16350
16436
  var _a, _b;
16351
16437
  const { t } = (0, import_react_i18next12.useTranslation)();
16352
16438
  const branding = useBranding();
@@ -16360,7 +16446,7 @@ var TopAppBar = (0, import_react36.forwardRef)(function TopAppBar2({ onOpenMobil
16360
16446
  const displayName = (branding == null ? void 0 : branding.brand_name) || (organization == null ? void 0 : organization.name) || "";
16361
16447
  const hasLogoImage = Boolean(branding == null ? void 0 : branding.logo_url);
16362
16448
  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)(
16449
+ const changeLanguage = (0, import_react37.useCallback)(
16364
16450
  (value) => {
16365
16451
  rememberLanguageChoice(value);
16366
16452
  void i18n_default.changeLanguage(value);
@@ -16368,7 +16454,7 @@ var TopAppBar = (0, import_react36.forwardRef)(function TopAppBar2({ onOpenMobil
16368
16454
  },
16369
16455
  [onLocaleChange]
16370
16456
  );
16371
- const handleLanguageChange = (0, import_react36.useCallback)(
16457
+ const handleLanguageChange = (0, import_react37.useCallback)(
16372
16458
  (value) => {
16373
16459
  const langValue = value;
16374
16460
  if (!langValue) return;
@@ -16406,6 +16492,22 @@ var TopAppBar = (0, import_react36.forwardRef)(function TopAppBar2({ onOpenMobil
16406
16492
  fontFamily: "inherit",
16407
16493
  flexShrink: 0
16408
16494
  };
16495
+ const logoAlign = brandingSettings.logo_align;
16496
+ const hamburgerIsOwnItem = hamburgerLeadsHeader(logoAlign);
16497
+ const logoGroupStyle = {
16498
+ display: "flex",
16499
+ alignItems: "center",
16500
+ gap: 8,
16501
+ minWidth: 0,
16502
+ ...LOGO_GROUP_PLACEMENT[logoAlign]
16503
+ };
16504
+ const actionsStyle = {
16505
+ display: "flex",
16506
+ alignItems: "center",
16507
+ gap: 8,
16508
+ flexShrink: 0,
16509
+ ...logoAlign === "right" ? { order: 0 } : null
16510
+ };
16409
16511
  return /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(import_jsx_runtime37.Fragment, { children: [
16410
16512
  /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
16411
16513
  "header",
@@ -16415,8 +16517,16 @@ var TopAppBar = (0, import_react36.forwardRef)(function TopAppBar2({ onOpenMobil
16415
16517
  style: headerStyle,
16416
16518
  ...partAttribute("topbar"),
16417
16519
  children: [
16418
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: 8, minWidth: 0 }, children: [
16419
- showHamburger && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
16520
+ showHamburger && hamburgerIsOwnItem && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
16521
+ HamburgerButton,
16522
+ {
16523
+ ref: hamburgerRef,
16524
+ onClick: onOpenMobileNav,
16525
+ label: t("openSidebarMenu")
16526
+ }
16527
+ ),
16528
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { style: logoGroupStyle, children: [
16529
+ showHamburger && !hamburgerIsOwnItem && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
16420
16530
  HamburgerButton,
16421
16531
  {
16422
16532
  ref: hamburgerRef,
@@ -16466,48 +16576,36 @@ var TopAppBar = (0, import_react36.forwardRef)(function TopAppBar2({ onOpenMobil
16466
16576
  }
16467
16577
  )
16468
16578
  ] }),
16469
- /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)(
16470
- "div",
16471
- {
16472
- style: {
16473
- display: "flex",
16474
- alignItems: "center",
16475
- gap: 8,
16476
- flexShrink: 0
16477
- },
16478
- className: "pc-shell-topbar-actions",
16479
- children: [
16480
- !showSwitcher ? null : showHamburger ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
16481
- CompactLanguageMenu,
16482
- {
16483
- locale,
16484
- options: languageOptions2,
16485
- onChange: changeLanguage
16486
- }
16487
- ) : /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
16488
- PCSelect,
16489
- {
16490
- size: "sm",
16491
- searchable: true,
16492
- prefix: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_lucide_react8.Globe2, { size: 12, strokeWidth: 1.8 }),
16493
- searchPlaceholder: t("searchPlaceholder"),
16494
- noOptionsMessage: t("noOptionsFound"),
16495
- style: {
16496
- width: "auto",
16497
- minWidth: 120,
16498
- maxWidth: "min(60vw, 280px)",
16499
- flexShrink: 0
16500
- },
16501
- options: [...languageOptions2],
16502
- value: languageOptions2.find((opt) => opt.value === locale) || null,
16503
- onChange: handleLanguageChange
16504
- }
16505
- ),
16506
- showNotifications && isSectionEnabled("notifications") && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(NotificationBell, {}),
16507
- /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(UserMenu, { onBack })
16508
- ]
16509
- }
16510
- )
16579
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsxs)("div", { style: actionsStyle, className: "pc-shell-topbar-actions", children: [
16580
+ !showSwitcher ? null : showHamburger ? /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
16581
+ CompactLanguageMenu,
16582
+ {
16583
+ locale,
16584
+ options: languageOptions2,
16585
+ onChange: changeLanguage
16586
+ }
16587
+ ) : /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
16588
+ PCSelect,
16589
+ {
16590
+ size: "sm",
16591
+ searchable: true,
16592
+ prefix: /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(import_lucide_react8.Globe2, { size: 12, strokeWidth: 1.8 }),
16593
+ searchPlaceholder: t("searchPlaceholder"),
16594
+ noOptionsMessage: t("noOptionsFound"),
16595
+ style: {
16596
+ width: "auto",
16597
+ minWidth: 120,
16598
+ maxWidth: "min(60vw, 280px)",
16599
+ flexShrink: 0
16600
+ },
16601
+ options: [...languageOptions2],
16602
+ value: languageOptions2.find((opt) => opt.value === locale) || null,
16603
+ onChange: handleLanguageChange
16604
+ }
16605
+ ),
16606
+ showNotifications && isSectionEnabled("notifications") && /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(NotificationBell, {}),
16607
+ /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(UserMenu, { onBack })
16608
+ ] })
16511
16609
  ]
16512
16610
  }
16513
16611
  ),
@@ -16519,7 +16617,7 @@ var TopAppBar = (0, import_react36.forwardRef)(function TopAppBar2({ onOpenMobil
16519
16617
  ` })
16520
16618
  ] });
16521
16619
  });
16522
- var HamburgerButton = (0, import_react36.forwardRef)(
16620
+ var HamburgerButton = (0, import_react37.forwardRef)(
16523
16621
  function HamburgerButton2({ onClick, label }, ref) {
16524
16622
  return /* @__PURE__ */ (0, import_jsx_runtime37.jsx)(
16525
16623
  PCActionIcon,
@@ -16541,16 +16639,16 @@ var HamburgerButton = (0, import_react36.forwardRef)(
16541
16639
  );
16542
16640
 
16543
16641
  // src/RedactoPrivacyCenter/components/AppShell/SidebarNav.tsx
16544
- var import_react38 = require("react");
16642
+ var import_react39 = require("react");
16545
16643
  var import_react_i18next13 = require("react-i18next");
16546
16644
  var import_lucide_react9 = require("lucide-react");
16547
16645
 
16548
16646
  // src/RedactoPrivacyCenter/components/AppShell/NavItem.tsx
16549
- var import_react37 = require("react");
16647
+ var import_react38 = require("react");
16550
16648
  var import_jsx_runtime38 = require("react/jsx-runtime");
16551
16649
  function NavItem({ item, mode, onNavigate }) {
16552
16650
  const { currentPage, navigateTo } = useInternalNavigation();
16553
- const [hover, setHover] = (0, import_react37.useState)(false);
16651
+ const [hover, setHover] = (0, import_react38.useState)(false);
16554
16652
  const isCollapsed = mode === "collapsed";
16555
16653
  const isActive = item.href ? currentPage === item.href : false;
16556
16654
  const isDisabled = !!item.isComingSoon;
@@ -16721,7 +16819,7 @@ function SidebarNav({ isExpanded, onToggle, className }) {
16721
16819
  const { t } = (0, import_react_i18next13.useTranslation)();
16722
16820
  const menuItems = useMenuItemsPC();
16723
16821
  const mode = isExpanded ? "expanded" : "collapsed";
16724
- const asideStyle = (0, import_react38.useMemo)(
16822
+ const asideStyle = (0, import_react39.useMemo)(
16725
16823
  () => ({
16726
16824
  position: "sticky",
16727
16825
  top: TOP_BAR_HEIGHT,
@@ -16738,7 +16836,7 @@ function SidebarNav({ isExpanded, onToggle, className }) {
16738
16836
  }),
16739
16837
  [isExpanded]
16740
16838
  );
16741
- const flatNavItems = (0, import_react38.useMemo)(
16839
+ const flatNavItems = (0, import_react39.useMemo)(
16742
16840
  () => menuItems.filter((item) => Boolean(item.href)),
16743
16841
  [menuItems]
16744
16842
  );
@@ -16805,7 +16903,7 @@ function SidebarNav({ isExpanded, onToggle, className }) {
16805
16903
  }
16806
16904
 
16807
16905
  // src/RedactoPrivacyCenter/components/AppShell/MobileNavDrawer.tsx
16808
- var import_react39 = require("react");
16906
+ var import_react40 = require("react");
16809
16907
  var import_react_dom2 = require("react-dom");
16810
16908
  var import_react_i18next14 = require("react-i18next");
16811
16909
  var import_lucide_react10 = require("lucide-react");
@@ -16817,17 +16915,17 @@ function MobileNavDrawer({ isOpen, onClose, returnFocusRef }) {
16817
16915
  const branding = useBranding();
16818
16916
  const { organization } = useOrganization();
16819
16917
  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);
16918
+ const drawerRef = (0, import_react40.useRef)(null);
16919
+ const firstNavRef = (0, import_react40.useRef)(null);
16822
16920
  const appearanceAttributes = useAppearanceAttributes();
16823
16921
  const scopeAttributes = usePrivacyCenterScopeAttributes();
16824
16922
  const isRtl = ((_a = usePrivacyCenterScope()) == null ? void 0 : _a.dir) === "rtl";
16825
16923
  const { sheetOverlays } = useAppearanceLayout();
16826
- const flatNavItems = (0, import_react39.useMemo)(
16924
+ const flatNavItems = (0, import_react40.useMemo)(
16827
16925
  () => menuItems.filter((item) => Boolean(item.href)),
16828
16926
  [menuItems]
16829
16927
  );
16830
- (0, import_react39.useEffect)(() => {
16928
+ (0, import_react40.useEffect)(() => {
16831
16929
  if (typeof document === "undefined") return;
16832
16930
  if (!isOpen) return;
16833
16931
  const previous = document.body.style.overflow;
@@ -16836,7 +16934,7 @@ function MobileNavDrawer({ isOpen, onClose, returnFocusRef }) {
16836
16934
  document.body.style.overflow = previous;
16837
16935
  };
16838
16936
  }, [isOpen]);
16839
- (0, import_react39.useEffect)(() => {
16937
+ (0, import_react40.useEffect)(() => {
16840
16938
  if (!isOpen || typeof window === "undefined") return;
16841
16939
  const onKey = (event) => {
16842
16940
  if (event.key === "Escape") {
@@ -16858,8 +16956,8 @@ function MobileNavDrawer({ isOpen, onClose, returnFocusRef }) {
16858
16956
  window.clearTimeout(focusTimer);
16859
16957
  };
16860
16958
  }, [isOpen, onClose]);
16861
- const wasOpenRef = (0, import_react39.useRef)(false);
16862
- (0, import_react39.useEffect)(() => {
16959
+ const wasOpenRef = (0, import_react40.useRef)(false);
16960
+ (0, import_react40.useEffect)(() => {
16863
16961
  if (isOpen) {
16864
16962
  wasOpenRef.current = true;
16865
16963
  return;
@@ -16872,7 +16970,7 @@ function MobileNavDrawer({ isOpen, onClose, returnFocusRef }) {
16872
16970
  const t2 = window.setTimeout(() => node.focus(), 0);
16873
16971
  return () => window.clearTimeout(t2);
16874
16972
  }, [isOpen, returnFocusRef]);
16875
- const handleNavigate = (0, import_react39.useCallback)(() => {
16973
+ const handleNavigate = (0, import_react40.useCallback)(() => {
16876
16974
  onClose();
16877
16975
  }, [onClose]);
16878
16976
  const overlayStyle = {
@@ -17051,25 +17149,25 @@ function MobileNavDrawer({ isOpen, onClose, returnFocusRef }) {
17051
17149
  var import_react_i18next15 = require("react-i18next");
17052
17150
 
17053
17151
  // src/RedactoPrivacyCenter/context/PageChromeContext.tsx
17054
- var import_react40 = require("react");
17152
+ var import_react41 = require("react");
17055
17153
  var import_jsx_runtime41 = require("react/jsx-runtime");
17056
- var PageChromeContext = (0, import_react40.createContext)(null);
17154
+ var PageChromeContext = (0, import_react41.createContext)(null);
17057
17155
  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)(
17156
+ const [pageChromeOverride, setPageChromeOverrideState] = (0, import_react41.useState)(null);
17157
+ const [headerStatus, setHeaderStatusState] = (0, import_react41.useState)(null);
17158
+ const setPageChromeOverride = (0, import_react41.useCallback)(
17061
17159
  (override) => {
17062
17160
  setPageChromeOverrideState(override);
17063
17161
  },
17064
17162
  []
17065
17163
  );
17066
- const clearPageChromeOverride = (0, import_react40.useCallback)(() => {
17164
+ const clearPageChromeOverride = (0, import_react41.useCallback)(() => {
17067
17165
  setPageChromeOverrideState(null);
17068
17166
  }, []);
17069
- const setHeaderStatus = (0, import_react40.useCallback)((status) => {
17167
+ const setHeaderStatus = (0, import_react41.useCallback)((status) => {
17070
17168
  setHeaderStatusState(status);
17071
17169
  }, []);
17072
- const value = (0, import_react40.useMemo)(
17170
+ const value = (0, import_react41.useMemo)(
17073
17171
  () => ({
17074
17172
  pageChromeOverride,
17075
17173
  setPageChromeOverride,
@@ -17088,7 +17186,7 @@ function PageChromeProvider({ children }) {
17088
17186
  return /* @__PURE__ */ (0, import_jsx_runtime41.jsx)(PageChromeContext.Provider, { value, children });
17089
17187
  }
17090
17188
  function usePageChrome() {
17091
- const context = (0, import_react40.useContext)(PageChromeContext);
17189
+ const context = (0, import_react41.useContext)(PageChromeContext);
17092
17190
  if (!context) {
17093
17191
  throw new Error("usePageChrome must be used within a PageChromeProvider");
17094
17192
  }
@@ -17385,27 +17483,27 @@ function AppShell({
17385
17483
  }) {
17386
17484
  const { t } = (0, import_react_i18next18.useTranslation)();
17387
17485
  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);
17486
+ const [locale, setLocale] = (0, import_react42.useState)(i18n_default.language);
17487
+ const [isMobileNavOpen, setMobileNavOpen] = (0, import_react42.useState)(false);
17488
+ const hamburgerRef = (0, import_react42.useRef)(null);
17391
17489
  const appearanceAttributes = useAppearanceAttributes();
17392
17490
  const isMobile = useMediaQuery("(max-width: 639px)");
17393
17491
  const { status } = useDataAvailability();
17394
17492
  const hideNav = status !== "has-data";
17395
- (0, import_react41.useEffect)(() => {
17493
+ (0, import_react42.useEffect)(() => {
17396
17494
  if (!isMobile && isMobileNavOpen) setMobileNavOpen(false);
17397
17495
  }, [isMobile, isMobileNavOpen]);
17398
- (0, import_react41.useEffect)(() => {
17496
+ (0, import_react42.useEffect)(() => {
17399
17497
  const onChange = () => setLocale(i18n_default.language);
17400
17498
  i18n_default.on("languageChanged", onChange);
17401
17499
  return () => i18n_default.off("languageChanged", onChange);
17402
17500
  }, []);
17403
- const handleSidebarToggle = (0, import_react41.useCallback)(() => {
17501
+ const handleSidebarToggle = (0, import_react42.useCallback)(() => {
17404
17502
  sidebar.toggle();
17405
17503
  }, [sidebar]);
17406
17504
  useKeyboardShortcut(
17407
17505
  { key: "b", mod: true },
17408
- (0, import_react41.useCallback)(() => {
17506
+ (0, import_react42.useCallback)(() => {
17409
17507
  if (isMobile) setMobileNavOpen((prev) => !prev);
17410
17508
  else sidebar.toggle();
17411
17509
  }, [isMobile, sidebar])
@@ -17439,7 +17537,7 @@ function AppShell({
17439
17537
  boxSizing: "border-box"
17440
17538
  };
17441
17539
  return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(LocaleContext.Provider, { value: { locale, setLocale }, children: /* @__PURE__ */ (0, import_jsx_runtime45.jsxs)(
17442
- import_react41.Suspense,
17540
+ import_react42.Suspense,
17443
17541
  {
17444
17542
  fallback: /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
17445
17543
  "div",
@@ -17599,7 +17697,7 @@ function AppShell({
17599
17697
  }
17600
17698
 
17601
17699
  // src/RedactoPrivacyCenter/components/SelectUserGate.tsx
17602
- var import_react42 = require("react");
17700
+ var import_react43 = require("react");
17603
17701
  var import_react_i18next20 = require("react-i18next");
17604
17702
 
17605
17703
  // src/RedactoPrivacyCenter/components/SelectUser.tsx
@@ -17661,12 +17759,12 @@ var SelectUserGate = ({ children }) => {
17661
17759
  const workspaceId = ((_b = (_a = organization == null ? void 0 : organization.workspaces) == null ? void 0 : _a[0]) == null ? void 0 : _b.uuid) || "";
17662
17760
  const { consentClient } = useBaseUrl();
17663
17761
  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);
17762
+ const [phase, setPhase] = (0, import_react43.useState)("checking");
17763
+ const [candidates, setCandidates] = (0, import_react43.useState)([]);
17764
+ const [busyOrgUserId, setBusyOrgUserId] = (0, import_react43.useState)(null);
17765
+ const [selectError, setSelectError] = (0, import_react43.useState)(null);
17668
17766
  const tokenOrgUserId = ((_d = (_c = decodeJwtToken(accessToken)) == null ? void 0 : _c.user_data) == null ? void 0 : _d.org_user_id) || "";
17669
- (0, import_react42.useEffect)(() => {
17767
+ (0, import_react43.useEffect)(() => {
17670
17768
  let cancelled = false;
17671
17769
  if (isSandboxMode()) {
17672
17770
  setPhase("resolved");
@@ -17740,7 +17838,7 @@ var SelectUserGate = ({ children }) => {
17740
17838
  setSelectError(t("couldNotSwitchProfile"));
17741
17839
  }
17742
17840
  };
17743
- const switchProfile = (0, import_react42.useCallback)(() => {
17841
+ const switchProfile = (0, import_react43.useCallback)(() => {
17744
17842
  if (typeof window !== "undefined") {
17745
17843
  sessionStorage.removeItem(PICKED_ORG_USER_KEY);
17746
17844
  }
@@ -17748,7 +17846,7 @@ var SelectUserGate = ({ children }) => {
17748
17846
  setBusyOrgUserId(null);
17749
17847
  setPhase("picking");
17750
17848
  }, []);
17751
- const switchValue = (0, import_react42.useMemo)(
17849
+ const switchValue = (0, import_react43.useMemo)(
17752
17850
  () => ({ canSwitch: candidates.length > 1, switchProfile }),
17753
17851
  [candidates.length, switchProfile]
17754
17852
  );
@@ -17772,7 +17870,7 @@ var SelectUserGate = ({ children }) => {
17772
17870
  };
17773
17871
 
17774
17872
  // src/RedactoPrivacyCenter/components/SignIn/PrivacyCenterSignIn.tsx
17775
- var import_react47 = require("react");
17873
+ var import_react48 = require("react");
17776
17874
  var import_react_i18next23 = require("react-i18next");
17777
17875
 
17778
17876
  // src/RedactoPrivacyCenter/utils/toast.ts
@@ -17936,7 +18034,7 @@ var maskPhone = (phone) => {
17936
18034
  };
17937
18035
 
17938
18036
  // src/RedactoPrivacyCenter/components/SignIn/ContactStep.tsx
17939
- var import_react43 = require("react");
18037
+ var import_react44 = require("react");
17940
18038
  var import_react_i18next21 = require("react-i18next");
17941
18039
 
17942
18040
  // src/RedactoPrivacyCenter/components/SignIn/SignInHeading.tsx
@@ -18007,8 +18105,8 @@ function ContactStep({
18007
18105
  const { sign_in: signIn } = usePrivacyCenterSettings();
18008
18106
  const branding = useBranding();
18009
18107
  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);
18108
+ const [value, setValue] = (0, import_react44.useState)(initialValue);
18109
+ const [countryCode, setCountryCode] = (0, import_react44.useState)(initialCountryCode != null ? initialCountryCode : signIn.default_country_code);
18012
18110
  const channelCopy = CHANNEL_COPY_KEYS[signIn.channels];
18013
18111
  const label = signIn.field_label ? copy(signIn.field_label) : t(channelCopy.fieldLabel);
18014
18112
  const placeholder = signIn.placeholder ? copy(signIn.placeholder) : t(channelCopy.placeholder);
@@ -18103,7 +18201,7 @@ function ContactStep({
18103
18201
  }
18104
18202
 
18105
18203
  // src/RedactoPrivacyCenter/components/SignIn/OtpStep.tsx
18106
- var import_react44 = require("react");
18204
+ var import_react45 = require("react");
18107
18205
  var import_react_i18next22 = require("react-i18next");
18108
18206
  var import_jsx_runtime50 = require("react/jsx-runtime");
18109
18207
  var OTP_LENGTH = 6;
@@ -18147,8 +18245,8 @@ function OtpStep({
18147
18245
  const { t } = (0, import_react_i18next22.useTranslation)();
18148
18246
  const { sign_in: signIn } = usePrivacyCenterSettings();
18149
18247
  const copy = useSettingsCopy();
18150
- const [digits, setDigits] = (0, import_react44.useState)([...EMPTY_CODE]);
18151
- const inputs = (0, import_react44.useRef)([]);
18248
+ const [digits, setDigits] = (0, import_react45.useState)([...EMPTY_CODE]);
18249
+ const inputs = (0, import_react45.useRef)([]);
18152
18250
  const contactDisplay = channel === "sms" ? maskPhone(contact) : contact;
18153
18251
  const description = signIn.otp_description ? copy(signIn.otp_description, { contact: contactDisplay }) : t(channel === "sms" ? "otpDescriptionSms" : "otpDescriptionEmail");
18154
18252
  const focus = (index) => {
@@ -18308,10 +18406,10 @@ var otpErrorKey = (error) => {
18308
18406
  var import_lucide_react13 = require("lucide-react");
18309
18407
 
18310
18408
  // src/RedactoPrivacyCenter/components/SignIn/useLocaleState.ts
18311
- var import_react45 = require("react");
18409
+ var import_react46 = require("react");
18312
18410
  var useLocaleState = () => {
18313
18411
  const { currentLanguage } = useCurrentLanguage();
18314
- const changeLocale = (0, import_react45.useCallback)((code) => {
18412
+ const changeLocale = (0, import_react46.useCallback)((code) => {
18315
18413
  rememberLanguageChoice(code);
18316
18414
  void i18n_default.changeLanguage(code);
18317
18415
  }, []);
@@ -18601,17 +18699,17 @@ function SignInFrame({ children }) {
18601
18699
  }
18602
18700
 
18603
18701
  // src/RedactoPrivacyCenter/components/SignIn/useCountdown.ts
18604
- var import_react46 = require("react");
18702
+ var import_react47 = require("react");
18605
18703
  var useCountdown = () => {
18606
- const [remaining, setRemaining] = (0, import_react46.useState)(0);
18607
- (0, import_react46.useEffect)(() => {
18704
+ const [remaining, setRemaining] = (0, import_react47.useState)(0);
18705
+ (0, import_react47.useEffect)(() => {
18608
18706
  if (remaining <= 0) {
18609
18707
  return void 0;
18610
18708
  }
18611
18709
  const timer = setTimeout(() => setRemaining((value) => Math.max(0, value - 1)), 1e3);
18612
18710
  return () => clearTimeout(timer);
18613
18711
  }, [remaining]);
18614
- const start = (0, import_react46.useCallback)((seconds) => setRemaining(seconds), []);
18712
+ const start = (0, import_react47.useCallback)((seconds) => setRemaining(seconds), []);
18615
18713
  return { remaining, start };
18616
18714
  };
18617
18715
 
@@ -18623,9 +18721,8 @@ var INVALID_CONTACT_KEYS = {
18623
18721
  email: "signInInvalidContactEmail",
18624
18722
  sms: "signInInvalidContactSms"
18625
18723
  };
18626
- var seedSession = (slug, organisationUuid, workspaceUuid, sent) => {
18724
+ var seedSession = (organisationUuid, workspaceUuid, sent) => {
18627
18725
  try {
18628
- sessionStorage.setItem("pc_org_slug", slug);
18629
18726
  sessionStorage.setItem("pc_org_id", organisationUuid);
18630
18727
  sessionStorage.setItem("pc_workspace_id", workspaceUuid);
18631
18728
  if (sent.channel === "email") {
@@ -18634,23 +18731,22 @@ var seedSession = (slug, organisationUuid, workspaceUuid, sent) => {
18634
18731
  } catch {
18635
18732
  }
18636
18733
  };
18637
- function PrivacyCenterSignIn({ slug }) {
18734
+ function PrivacyCenterSignIn() {
18638
18735
  var _a;
18639
18736
  const { t } = (0, import_react_i18next23.useTranslation)();
18640
18737
  const { settings, organisation } = usePrivacyCenterSettingsContext();
18641
18738
  const { consentClient } = useBaseUrl();
18642
18739
  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);
18740
+ const [sent, setSent] = (0, import_react48.useState)(null);
18741
+ const [step, setStep] = (0, import_react48.useState)("contact");
18742
+ const [typedContact, setTypedContact] = (0, import_react48.useState)("");
18743
+ const [error, setError] = (0, import_react48.useState)(null);
18744
+ const [busy, setBusy] = (0, import_react48.useState)(false);
18745
+ const [resending, setResending] = (0, import_react48.useState)(false);
18649
18746
  const countdown = useCountdown();
18650
18747
  const { organisationUuid, workspaceUuid } = organisation;
18651
18748
  const orgUnavailable = organisation.status === "failed";
18652
- const orgPending = organisation.status === "resolving";
18653
- const sendCode = (0, import_react47.useCallback)(
18749
+ const sendCode = (0, import_react48.useCallback)(
18654
18750
  async (contact, channel) => {
18655
18751
  const response = await consentClient.createOtp(
18656
18752
  organisationUuid != null ? organisationUuid : "",
@@ -18715,7 +18811,7 @@ function PrivacyCenterSignIn({ slug }) {
18715
18811
  setError(t("otpErrorFallback"));
18716
18812
  return;
18717
18813
  }
18718
- seedSession(slug, organisationUuid, workspaceUuid, sent);
18814
+ seedSession(organisationUuid, workspaceUuid, sent);
18719
18815
  updateTokens(accessToken, (_a2 = result == null ? void 0 : result.refresh_token) != null ? _a2 : void 0);
18720
18816
  } catch (verifyError) {
18721
18817
  setError(t(otpErrorKey(verifyError)));
@@ -18772,7 +18868,7 @@ function PrivacyCenterSignIn({ slug }) {
18772
18868
  {
18773
18869
  initialValue: typedContact,
18774
18870
  initialCountryCode: (_a = sent == null ? void 0 : sent.countryCode) != null ? _a : null,
18775
- busy: busy || orgPending,
18871
+ busy,
18776
18872
  disabled: orgUnavailable,
18777
18873
  error: error != null ? error : orgUnavailable ? t("signInOrgUnavailable") : null,
18778
18874
  onSubmit: (value, countryCode) => void handleContact(value, countryCode),
@@ -18782,7 +18878,7 @@ function PrivacyCenterSignIn({ slug }) {
18782
18878
  }
18783
18879
 
18784
18880
  // src/RedactoPrivacyCenter/lib/inactivityTimer.ts
18785
- var import_react48 = require("react");
18881
+ var import_react49 = require("react");
18786
18882
  var createInactivityTimer = ({
18787
18883
  timeoutMs,
18788
18884
  onTimeout,
@@ -18840,9 +18936,9 @@ var createInactivityTimer = ({
18840
18936
  var ACTIVITY_EVENTS = ["pointerdown", "pointermove", "keydown", "wheel", "touchstart", "scroll"];
18841
18937
  var MS_PER_MINUTE = 6e4;
18842
18938
  var useInactivityTimeout = (timeoutMinutes, enabled, onTimeout) => {
18843
- const latest = (0, import_react48.useRef)(onTimeout);
18939
+ const latest = (0, import_react49.useRef)(onTimeout);
18844
18940
  latest.current = onTimeout;
18845
- (0, import_react48.useEffect)(() => {
18941
+ (0, import_react49.useEffect)(() => {
18846
18942
  if (!enabled || !timeoutMinutes || typeof window === "undefined") {
18847
18943
  return void 0;
18848
18944
  }
@@ -18880,51 +18976,50 @@ function PrivacyCenterLayout({ settings, ...props }) {
18880
18976
  }
18881
18977
  function PrivacyCenterLayoutContent({
18882
18978
  children,
18883
- slug,
18979
+ slug = "",
18884
18980
  onBack
18885
18981
  }) {
18886
18982
  const { consentClient } = useBaseUrl();
18887
18983
  const { accessToken: authAccessToken, sessionExpired, expireSession } = useAuth();
18888
18984
  const { settings, builtInSignIn } = usePrivacyCenterSettingsContext();
18889
18985
  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)(() => {
18986
+ const [organization, setOrganization] = (0, import_react50.useState)(null);
18987
+ const [isCheckingAuth, setIsCheckingAuth] = (0, import_react50.useState)(true);
18988
+ const [isLoadingOrg, setIsLoadingOrg] = (0, import_react50.useState)(true);
18989
+ const hasRedirectedRef = (0, import_react50.useRef)(false);
18990
+ const authCheckInProgressRef = (0, import_react50.useRef)(false);
18991
+ (0, import_react50.useEffect)(() => {
18992
+ if (slug) warnSlugDeprecated();
18993
+ }, [slug]);
18994
+ (0, import_react50.useEffect)(() => {
18896
18995
  if (typeof window === "undefined") return;
18897
18996
  let accessToken = sessionStorage.getItem("access_token");
18898
18997
  let orgId = sessionStorage.getItem("pc_org_id");
18899
18998
  let workspaceId = sessionStorage.getItem("pc_workspace_id");
18900
- let orgSlug = sessionStorage.getItem("pc_org_slug");
18901
- if (authAccessToken && (!accessToken || !orgId || !workspaceId || !orgSlug)) {
18999
+ if (authAccessToken && (!accessToken || !orgId || !workspaceId)) {
18902
19000
  const decoded = decodeJwtToken(authAccessToken);
18903
19001
  if (decoded) {
18904
19002
  accessToken = accessToken || authAccessToken;
18905
19003
  orgId = orgId || (typeof decoded.organisation_uuid === "string" ? decoded.organisation_uuid : null);
18906
19004
  workspaceId = workspaceId || (typeof decoded.workspace_uuid === "string" ? decoded.workspace_uuid : null);
18907
- orgSlug = orgSlug || (typeof decoded.organisation_slug === "string" ? decoded.organisation_slug : null);
18908
19005
  if (accessToken) sessionStorage.setItem("access_token", accessToken);
18909
19006
  if (orgId) sessionStorage.setItem("pc_org_id", orgId);
18910
19007
  if (workspaceId) sessionStorage.setItem("pc_workspace_id", workspaceId);
18911
- if (orgSlug) sessionStorage.setItem("pc_org_slug", orgSlug);
18912
19008
  const contact = resolveContactFromJwt(decoded);
18913
19009
  if (contact) {
18914
19010
  sessionStorage.setItem("email", contact);
18915
19011
  }
18916
19012
  }
18917
19013
  }
18918
- const effectiveSlug = slug || orgSlug || "";
18919
- if (accessToken && orgId && workspaceId && effectiveSlug) {
19014
+ if (accessToken && orgId && workspaceId) {
18920
19015
  const decoded = decodeJwtToken(accessToken);
18921
19016
  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(" ");
19017
+ const orgName = typeof orgNameFromJwt === "string" && orgNameFromJwt.trim() !== "" ? orgNameFromJwt : "";
18923
19018
  setOrganization({
18924
19019
  uuid: orgId,
18925
19020
  suid: "",
18926
19021
  name: orgName,
18927
- slug: effectiveSlug,
19022
+ slug: "",
18928
19023
  description: "",
18929
19024
  domain: "",
18930
19025
  workspaces: [{
@@ -18945,8 +19040,8 @@ function PrivacyCenterLayoutContent({
18945
19040
  setOrganization(null);
18946
19041
  setIsLoadingOrg(false);
18947
19042
  }
18948
- }, [slug, authAccessToken]);
18949
- (0, import_react49.useEffect)(() => {
19043
+ }, [authAccessToken]);
19044
+ (0, import_react50.useEffect)(() => {
18950
19045
  if (isLoadingOrg || !organization) {
18951
19046
  return;
18952
19047
  }
@@ -18958,7 +19053,7 @@ function PrivacyCenterLayoutContent({
18958
19053
  authCheckInProgressRef.current = true;
18959
19054
  try {
18960
19055
  await checkAndRefreshAuth(
18961
- organization.slug || slug,
19056
+ "",
18962
19057
  organization == null ? void 0 : organization.uuid,
18963
19058
  (_a = organization == null ? void 0 : organization.workspaces[0]) == null ? void 0 : _a.uuid,
18964
19059
  consentClient
@@ -18972,10 +19067,10 @@ function PrivacyCenterLayoutContent({
18972
19067
  }
18973
19068
  };
18974
19069
  checkAuth();
18975
- }, [slug, organization, isLoadingOrg, consentClient, authAccessToken]);
19070
+ }, [organization, isLoadingOrg, consentClient, authAccessToken]);
18976
19071
  const showSignIn = builtInSignIn && !isLoadingOrg && !organization;
18977
19072
  const showPortal = Boolean(organization) && !isLoadingOrg && !isCheckingAuth;
18978
- (0, import_react49.useEffect)(() => {
19073
+ (0, import_react50.useEffect)(() => {
18979
19074
  if (showSignIn || showPortal) {
18980
19075
  emitReady({ signedIn: showPortal });
18981
19076
  }
@@ -18986,7 +19081,7 @@ function PrivacyCenterLayoutContent({
18986
19081
  () => expireSession("timeout")
18987
19082
  );
18988
19083
  if (showSignIn) {
18989
- return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(PrivacyCenterSignIn, { slug });
19084
+ return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)(PrivacyCenterSignIn, {});
18990
19085
  }
18991
19086
  if (isLoadingOrg || !organization || isCheckingAuth) {
18992
19087
  return /* @__PURE__ */ (0, import_jsx_runtime53.jsx)("div", { style: {
@@ -19001,18 +19096,18 @@ function PrivacyCenterLayoutContent({
19001
19096
  }
19002
19097
 
19003
19098
  // src/RedactoPrivacyCenter/PrivacyCenterHomePage.tsx
19004
- var import_react77 = require("react");
19099
+ var import_react78 = require("react");
19005
19100
 
19006
19101
  // src/RedactoPrivacyCenter/PrivacyCenterConsentManagerPage.tsx
19007
- var import_react58 = require("react");
19102
+ var import_react59 = require("react");
19008
19103
 
19009
19104
  // src/RedactoPrivacyCenter/components/ConsentManager.tsx
19010
- var import_react57 = require("react");
19105
+ var import_react58 = require("react");
19011
19106
  var import_react_i18next33 = require("react-i18next");
19012
19107
  var import_lucide_react18 = require("lucide-react");
19013
19108
 
19014
19109
  // src/RedactoPrivacyCenter/table/AdvancedTable.tsx
19015
- var import_react50 = __toESM(require("react"));
19110
+ var import_react51 = __toESM(require("react"));
19016
19111
  var import_react_i18next24 = require("react-i18next");
19017
19112
  var import_react_table = require("@tanstack/react-table");
19018
19113
  var import_lodash = require("lodash");
@@ -19030,7 +19125,7 @@ function AdvancedTable({
19030
19125
  expandedComponent
19031
19126
  }) {
19032
19127
  const { t } = (0, import_react_i18next24.useTranslation)();
19033
- const [hoveredRowId, setHoveredRowId] = import_react50.default.useState(null);
19128
+ const [hoveredRowId, setHoveredRowId] = import_react51.default.useState(null);
19034
19129
  if (!table) return null;
19035
19130
  return /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(import_jsx_runtime54.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(
19036
19131
  "div",
@@ -19077,7 +19172,7 @@ function AdvancedTable({
19077
19172
  onRowClick(row.original, row);
19078
19173
  } : void 0;
19079
19174
  const rowExpandedComponent = expandedComponent || meta.expandedComponent;
19080
- return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react50.default.Fragment, { children: [
19175
+ return /* @__PURE__ */ (0, import_jsx_runtime54.jsxs)(import_react51.default.Fragment, { children: [
19081
19176
  /* @__PURE__ */ (0, import_jsx_runtime54.jsx)(
19082
19177
  PCTable.Row,
19083
19178
  {
@@ -19779,7 +19874,7 @@ function AdvancedTablePagination({
19779
19874
  var import_react_table4 = require("@tanstack/react-table");
19780
19875
 
19781
19876
  // src/RedactoPrivacyCenter/lib/consent-manager/utils.tsx
19782
- var import_react51 = require("react");
19877
+ var import_react52 = require("react");
19783
19878
  var import_react_i18next26 = require("react-i18next");
19784
19879
 
19785
19880
  // src/RedactoPrivacyCenter/utils/date.ts
@@ -19807,7 +19902,7 @@ var CSV_FORMULA_TRIGGERS = ["=", "+", "-", "@", " ", "\r"];
19807
19902
  var UTF8_BOM = "\uFEFF";
19808
19903
  var useStatusOptions = () => {
19809
19904
  const { t } = (0, import_react_i18next26.useTranslation)();
19810
- return (0, import_react51.useMemo)(
19905
+ return (0, import_react52.useMemo)(
19811
19906
  () => [
19812
19907
  { label: t("statusActive"), value: "ACTIVE" /* ACTIVE */ },
19813
19908
  { label: t("statusWithdrawn"), value: "WITHDRAW" /* WITHDRAWN */ },
@@ -19972,7 +20067,7 @@ var ConsentManagerTableSkeleton = () => {
19972
20067
  };
19973
20068
 
19974
20069
  // src/RedactoPrivacyCenter/components/ModifyConsentModal.tsx
19975
- var import_react52 = require("react");
20070
+ var import_react53 = require("react");
19976
20071
  var import_react_i18next27 = require("react-i18next");
19977
20072
  var import_lucide_react14 = require("lucide-react");
19978
20073
  var import_pi3 = require("react-icons/pi");
@@ -19988,11 +20083,11 @@ var ModifyConsentModal = ({
19988
20083
  const { portal } = usePrivacyCenterSettings();
19989
20084
  const copy = useSettingsCopy();
19990
20085
  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)([]);
20086
+ const [isAccordionOpen, setIsAccordionOpen] = (0, import_react53.useState)(false);
20087
+ const [selectedDataElementUuids, setSelectedDataElementUuids] = (0, import_react53.useState)([]);
19993
20088
  const nominatorInfo = selectedRecord == null ? void 0 : selectedRecord.nominator;
19994
20089
  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)(() => {
20090
+ const actionConfig = (0, import_react53.useMemo)(() => {
19996
20091
  if (!selectedRecord) return null;
19997
20092
  const status = selectedRecord.status;
19998
20093
  if (status === "ACTIVE" /* ACTIVE */) {
@@ -20025,24 +20120,24 @@ var ModifyConsentModal = ({
20025
20120
  return null;
20026
20121
  }, [selectedRecord, t, nominatorLabel, withdrawWarning]);
20027
20122
  const isRegrantAction = (actionConfig == null ? void 0 : actionConfig.action) === "regrant";
20028
- (0, import_react52.useEffect)(() => {
20123
+ (0, import_react53.useEffect)(() => {
20029
20124
  setIsAccordionOpen(isRegrantAction);
20030
20125
  }, [selectedRecord, isRegrantAction]);
20031
- const regrantEligibleDataElements = (0, import_react52.useMemo)(
20126
+ const regrantEligibleDataElements = (0, import_react53.useMemo)(
20032
20127
  () => ((selectedRecord == null ? void 0 : selectedRecord.data_elements) || []).filter(
20033
20128
  (element) => Boolean(element == null ? void 0 : element.uuid) && element.enabled
20034
20129
  ),
20035
20130
  [selectedRecord]
20036
20131
  );
20037
- const requiredDataElementUuids = (0, import_react52.useMemo)(
20132
+ const requiredDataElementUuids = (0, import_react53.useMemo)(
20038
20133
  () => regrantEligibleDataElements.filter((element) => element.required).map((element) => element.uuid),
20039
20134
  [regrantEligibleDataElements]
20040
20135
  );
20041
- const requiredDataElementUuidSet = (0, import_react52.useMemo)(
20136
+ const requiredDataElementUuidSet = (0, import_react53.useMemo)(
20042
20137
  () => new Set(requiredDataElementUuids),
20043
20138
  [requiredDataElementUuids]
20044
20139
  );
20045
- (0, import_react52.useEffect)(() => {
20140
+ (0, import_react53.useEffect)(() => {
20046
20141
  if (isRegrantAction) {
20047
20142
  setSelectedDataElementUuids(regrantEligibleDataElements.map((element) => element.uuid));
20048
20143
  return;
@@ -20239,7 +20334,7 @@ var ModifyConsentModal = ({
20239
20334
  };
20240
20335
 
20241
20336
  // src/RedactoPrivacyCenter/components/ConsentManagerGroupedColumns.tsx
20242
- var import_react53 = require("react");
20337
+ var import_react54 = require("react");
20243
20338
  var import_react_i18next28 = require("react-i18next");
20244
20339
  var import_lucide_react15 = require("lucide-react");
20245
20340
  var import_react_table2 = require("@tanstack/react-table");
@@ -20388,7 +20483,7 @@ var ProductAvatar = ({ name, seed }) => {
20388
20483
  var columnHelper = (0, import_react_table2.createColumnHelper)();
20389
20484
  var useConsentManagerGroupedColumns = () => {
20390
20485
  const { t } = (0, import_react_i18next28.useTranslation)();
20391
- return (0, import_react53.useMemo)(
20486
+ return (0, import_react54.useMemo)(
20392
20487
  () => [
20393
20488
  columnHelper.display({
20394
20489
  id: "expander",
@@ -20536,7 +20631,7 @@ var useConsentManagerGroupedColumns = () => {
20536
20631
  };
20537
20632
 
20538
20633
  // src/RedactoPrivacyCenter/components/ConsentManagerColumns.tsx
20539
- var import_react54 = require("react");
20634
+ var import_react55 = require("react");
20540
20635
  var import_react_i18next29 = require("react-i18next");
20541
20636
  var import_react_table3 = require("@tanstack/react-table");
20542
20637
 
@@ -20713,7 +20808,7 @@ var useConsentManagerColumns = ({
20713
20808
  onOpenModal
20714
20809
  }) => {
20715
20810
  const { t } = (0, import_react_i18next29.useTranslation)();
20716
- return (0, import_react54.useMemo)(
20811
+ return (0, import_react55.useMemo)(
20717
20812
  () => [
20718
20813
  columnHelper2.accessor("name", {
20719
20814
  id: "purpose",
@@ -20958,21 +21053,21 @@ var ConsentManagerExpandedRow = ({
20958
21053
  };
20959
21054
 
20960
21055
  // src/RedactoPrivacyCenter/components/ConsentManagerProductCards.tsx
20961
- var import_react56 = require("react");
21056
+ var import_react57 = require("react");
20962
21057
  var import_react_i18next31 = require("react-i18next");
20963
21058
  var import_dayjs4 = __toESM(require("dayjs"));
20964
21059
  var import_relativeTime3 = __toESM(require("dayjs/plugin/relativeTime"));
20965
21060
  var import_lucide_react17 = require("lucide-react");
20966
21061
 
20967
21062
  // src/shared/Collapse.tsx
20968
- var import_react55 = require("react");
21063
+ var import_react56 = require("react");
20969
21064
  var import_jsx_runtime62 = require("react/jsx-runtime");
20970
21065
  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)(() => {
21066
+ const [mounted, setMounted] = (0, import_react56.useState)(open);
21067
+ const [expanded, setExpanded] = (0, import_react56.useState)(open);
21068
+ const frameRef = (0, import_react56.useRef)(null);
21069
+ const rootRef = (0, import_react56.useRef)(null);
21070
+ (0, import_react56.useEffect)(() => {
20976
21071
  if (open) {
20977
21072
  setMounted(true);
20978
21073
  frameRef.current = requestAnimationFrame(() => {
@@ -21105,11 +21200,11 @@ function ConsentManagerProductCards({
21105
21200
  cardKeyFor
21106
21201
  }) {
21107
21202
  const { t } = (0, import_react_i18next31.useTranslation)();
21108
- const [expandedCards, setExpandedCards] = (0, import_react56.useState)({});
21203
+ const [expandedCards, setExpandedCards] = (0, import_react57.useState)({});
21109
21204
  const handleToggle = (key) => {
21110
21205
  setExpandedCards((prev) => ({ ...prev, [key]: !prev[key] }));
21111
21206
  };
21112
- const getStatusItems = (0, import_react56.useMemo)(
21207
+ const getStatusItems = (0, import_react57.useMemo)(
21113
21208
  () => (group) => {
21114
21209
  const items = [];
21115
21210
  if (group.active_purposes > 0) {
@@ -21354,69 +21449,69 @@ function ConsentManager({ variant }) {
21354
21449
  const organizationId = organization == null ? void 0 : organization.uuid;
21355
21450
  const workspaceId = (_a = organization == null ? void 0 : organization.workspaces[0]) == null ? void 0 : _a.uuid;
21356
21451
  const contact = sessionStorage.getItem("email") || "";
21357
- const authContext = (0, import_react57.useMemo)(() => ({
21452
+ const authContext = (0, import_react58.useMemo)(() => ({
21358
21453
  accessToken,
21359
21454
  refreshToken,
21360
21455
  onError,
21361
21456
  updateTokens
21362
21457
  }), [accessToken, refreshToken, onError, updateTokens]);
21363
21458
  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)(
21459
+ const [activeTab, setActiveTab] = (0, import_react58.useState)("direct");
21460
+ const [viewMode, setViewMode] = (0, import_react58.useState)("product");
21461
+ const [consentDetail, setConsentDetail] = (0, import_react58.useState)(null);
21462
+ const [consentGroups, setConsentGroups] = (0, import_react58.useState)([]);
21463
+ const [consentRows, setConsentRows] = (0, import_react58.useState)([]);
21464
+ const [isLoading, setIsLoading] = (0, import_react58.useState)(true);
21465
+ const [searchQuery, setSearchQuery] = (0, import_react58.useState)("");
21466
+ const [debouncedSearch, setDebouncedSearch] = (0, import_react58.useState)("");
21467
+ const [statusFilter, setStatusFilter] = (0, import_react58.useState)(
21373
21468
  null
21374
21469
  );
21375
- const [productFilter, setProductFilter] = (0, import_react57.useState)(null);
21376
- const [productOptions, setProductOptions] = (0, import_react57.useState)(
21470
+ const [productFilter, setProductFilter] = (0, import_react58.useState)(null);
21471
+ const [productOptions, setProductOptions] = (0, import_react58.useState)(
21377
21472
  []
21378
21473
  );
21379
- const [isModalOpen, setIsModalOpen] = (0, import_react57.useState)(false);
21380
- const [selectedRecord, setSelectedRecord] = (0, import_react57.useState)(
21474
+ const [isModalOpen, setIsModalOpen] = (0, import_react58.useState)(false);
21475
+ const [selectedRecord, setSelectedRecord] = (0, import_react58.useState)(
21381
21476
  null
21382
21477
  );
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)(
21478
+ const [exportModal, setExportModal] = (0, import_react58.useState)(false);
21479
+ const [isManageLoading, setIsManageLoading] = (0, import_react58.useState)(false);
21480
+ const [currentPage, setCurrentPage] = (0, import_react58.useState)(DEFAULT_PAGE);
21481
+ const [pageSize, setPageSize] = (0, import_react58.useState)(DEFAULT_PAGE_SIZE);
21482
+ const [expanded, setExpanded] = (0, import_react58.useState)({});
21483
+ const [extraPurposesByKey, setExtraPurposesByKey] = (0, import_react58.useState)({});
21484
+ const [hasMoreByKey, setHasMoreByKey] = (0, import_react58.useState)({});
21485
+ const [loadingMoreByKey, setLoadingMoreByKey] = (0, import_react58.useState)({});
21486
+ const composedSearchPlaceholder = (0, import_react58.useMemo)(
21392
21487
  () => `${t("search")} ${t("consent")}, ${t("product")}, ${t("purpose")}...`,
21393
21488
  [t]
21394
21489
  );
21395
- const allStatusOption = (0, import_react57.useMemo)(
21490
+ const allStatusOption = (0, import_react58.useMemo)(
21396
21491
  () => ({
21397
21492
  label: `${t("all")} ${t("status")}`,
21398
21493
  value: "__all__"
21399
21494
  }),
21400
21495
  [t]
21401
21496
  );
21402
- const allProductOption = (0, import_react57.useMemo)(
21497
+ const allProductOption = (0, import_react58.useMemo)(
21403
21498
  () => ({
21404
21499
  label: `${t("all")} ${t("product")}`,
21405
21500
  value: "__all__"
21406
21501
  }),
21407
21502
  [t]
21408
21503
  );
21409
- const statusFilterOptions = (0, import_react57.useMemo)(
21504
+ const statusFilterOptions = (0, import_react58.useMemo)(
21410
21505
  () => [allStatusOption, ...statusOptions],
21411
21506
  [allStatusOption, statusOptions]
21412
21507
  );
21413
- const productFilterOptions = (0, import_react57.useMemo)(
21508
+ const productFilterOptions = (0, import_react58.useMemo)(
21414
21509
  () => [allProductOption, ...productOptions],
21415
21510
  [allProductOption, productOptions]
21416
21511
  );
21417
21512
  const statusSelectValue = statusFilter != null ? statusFilter : allStatusOption;
21418
21513
  const productSelectValue = productFilter != null ? productFilter : allProductOption;
21419
- (0, import_react57.useEffect)(() => {
21514
+ (0, import_react58.useEffect)(() => {
21420
21515
  if (statusFilter) {
21421
21516
  const updated = statusOptions.find((opt) => opt.value === statusFilter.value);
21422
21517
  if (updated && updated.label !== statusFilter.label) {
@@ -21424,7 +21519,7 @@ function ConsentManager({ variant }) {
21424
21519
  }
21425
21520
  }
21426
21521
  }, [statusOptions, statusFilter]);
21427
- (0, import_react57.useEffect)(() => {
21522
+ (0, import_react58.useEffect)(() => {
21428
21523
  if (productFilter) {
21429
21524
  const updated = productOptions.find((opt) => opt.value === productFilter.value);
21430
21525
  if (updated && updated.label !== productFilter.label) {
@@ -21432,7 +21527,7 @@ function ConsentManager({ variant }) {
21432
21527
  }
21433
21528
  }
21434
21529
  }, [productOptions, productFilter]);
21435
- (0, import_react57.useEffect)(() => {
21530
+ (0, import_react58.useEffect)(() => {
21436
21531
  const status = consentDetail == null ? void 0 : consentDetail.user_status;
21437
21532
  if (status === "TRANSFERRED") {
21438
21533
  setHeaderStatus({ label: t("statusTransferred"), variant: "warning" });
@@ -21443,25 +21538,25 @@ function ConsentManager({ variant }) {
21443
21538
  }
21444
21539
  return () => setHeaderStatus(null);
21445
21540
  }, [consentDetail == null ? void 0 : consentDetail.user_status, setHeaderStatus, t]);
21446
- (0, import_react57.useEffect)(() => {
21541
+ (0, import_react58.useEffect)(() => {
21447
21542
  const timer = setTimeout(() => {
21448
21543
  setDebouncedSearch(searchQuery);
21449
21544
  }, SEARCH_DEBOUNCE_DELAY);
21450
21545
  return () => clearTimeout(timer);
21451
21546
  }, [searchQuery]);
21452
- const handleOpenModal = (0, import_react57.useCallback)((record) => {
21547
+ const handleOpenModal = (0, import_react58.useCallback)((record) => {
21453
21548
  setSelectedRecord(record);
21454
21549
  setIsModalOpen(true);
21455
21550
  }, []);
21456
- const getCardKey = (0, import_react57.useCallback)(
21551
+ const getCardKey = (0, import_react58.useCallback)(
21457
21552
  (group) => group.nominator ? `nominated:${group.nominator.uuid}:${group.product_uuid}` : `direct:${group.product_uuid}`,
21458
21553
  []
21459
21554
  );
21460
- const handleCloseModal = (0, import_react57.useCallback)(() => {
21555
+ const handleCloseModal = (0, import_react58.useCallback)(() => {
21461
21556
  setIsModalOpen(false);
21462
21557
  setSelectedRecord(null);
21463
21558
  }, []);
21464
- const matchesPurpose = (0, import_react57.useCallback)(
21559
+ const matchesPurpose = (0, import_react58.useCallback)(
21465
21560
  (purpose, group, normalizedSearch, statusValue) => {
21466
21561
  var _a2;
21467
21562
  const matchesSearch = !normalizedSearch || [
@@ -21477,7 +21572,7 @@ function ConsentManager({ variant }) {
21477
21572
  },
21478
21573
  []
21479
21574
  );
21480
- const buildDisplayGroups = (0, import_react57.useCallback)(
21575
+ const buildDisplayGroups = (0, import_react58.useCallback)(
21481
21576
  (groups, search, statusValue, productUuid) => {
21482
21577
  if (!groups || groups.length === 0) return [];
21483
21578
  const normalizedSearch = search.trim().toLowerCase();
@@ -21534,7 +21629,7 @@ function ConsentManager({ variant }) {
21534
21629
  },
21535
21630
  [matchesPurpose]
21536
21631
  );
21537
- const flattenProductGroups = (0, import_react57.useCallback)(
21632
+ const flattenProductGroups = (0, import_react58.useCallback)(
21538
21633
  (groups) => {
21539
21634
  if (!groups || groups.length === 0) return [];
21540
21635
  return groups.flatMap(
@@ -21549,7 +21644,7 @@ function ConsentManager({ variant }) {
21549
21644
  },
21550
21645
  []
21551
21646
  );
21552
- const filterConsentRows = (0, import_react57.useCallback)(
21647
+ const filterConsentRows = (0, import_react58.useCallback)(
21553
21648
  (rows, search, statusValue, productUuid) => {
21554
21649
  const normalizedSearch = search.trim().toLowerCase();
21555
21650
  return rows.filter((row) => {
@@ -21571,7 +21666,7 @@ function ConsentManager({ variant }) {
21571
21666
  },
21572
21667
  []
21573
21668
  );
21574
- const buildProductOptionsFromGroups = (0, import_react57.useCallback)(
21669
+ const buildProductOptionsFromGroups = (0, import_react58.useCallback)(
21575
21670
  (groups) => {
21576
21671
  if (!groups || groups.length === 0) return [];
21577
21672
  const productMap = /* @__PURE__ */ new Map();
@@ -21591,7 +21686,7 @@ function ConsentManager({ variant }) {
21591
21686
  const purposeColumns = useConsentManagerColumns({
21592
21687
  onOpenModal: handleOpenModal
21593
21688
  });
21594
- const groupedTableClassNames = (0, import_react57.useMemo)(
21689
+ const groupedTableClassNames = (0, import_react58.useMemo)(
21595
21690
  () => ({
21596
21691
  container: "pc-consent-table-container",
21597
21692
  tableClassName: "pc-consent-table",
@@ -21605,7 +21700,7 @@ function ConsentManager({ variant }) {
21605
21700
  }),
21606
21701
  []
21607
21702
  );
21608
- const purposeTableClassNames = (0, import_react57.useMemo)(
21703
+ const purposeTableClassNames = (0, import_react58.useMemo)(
21609
21704
  () => ({
21610
21705
  container: "pc-consent-table-container",
21611
21706
  tableClassName: "pc-consent-table pc-consent-table-purpose",
@@ -21617,7 +21712,7 @@ function ConsentManager({ variant }) {
21617
21712
  }),
21618
21713
  []
21619
21714
  );
21620
- const fetchData = (0, import_react57.useCallback)(async () => {
21715
+ const fetchData = (0, import_react58.useCallback)(async () => {
21621
21716
  if (!organizationId || !workspaceId) {
21622
21717
  return;
21623
21718
  }
@@ -21702,15 +21797,15 @@ function ConsentManager({ variant }) {
21702
21797
  buildProductOptionsFromGroups,
21703
21798
  t
21704
21799
  ]);
21705
- (0, import_react57.useEffect)(() => {
21800
+ (0, import_react58.useEffect)(() => {
21706
21801
  fetchData();
21707
21802
  }, [fetchData]);
21708
- const groupedPurposeCount = (0, import_react57.useMemo)(
21803
+ const groupedPurposeCount = (0, import_react58.useMemo)(
21709
21804
  () => consentGroups.reduce((sum, group) => sum + group.purposes.length, 0),
21710
21805
  [consentGroups]
21711
21806
  );
21712
21807
  const visibleConsentCount = viewMode === "product" ? groupedPurposeCount : consentRows.length;
21713
- const visibleProductCount = (0, import_react57.useMemo)(() => {
21808
+ const visibleProductCount = (0, import_react58.useMemo)(() => {
21714
21809
  if (viewMode === "product") {
21715
21810
  return consentGroups.length;
21716
21811
  }
@@ -21720,13 +21815,13 @@ function ConsentManager({ variant }) {
21720
21815
  productIds.delete("");
21721
21816
  return productIds.size;
21722
21817
  }, [viewMode, consentGroups, consentRows]);
21723
- const tableTotalCount = (0, import_react57.useMemo)(() => {
21818
+ const tableTotalCount = (0, import_react58.useMemo)(() => {
21724
21819
  var _a2;
21725
21820
  const pagination = activeTab === "direct" ? consentDetail == null ? void 0 : consentDetail.direct_pagination : consentDetail == null ? void 0 : consentDetail.nominated_pagination;
21726
21821
  return (_a2 = pagination == null ? void 0 : pagination.total_count) != null ? _a2 : 0;
21727
21822
  }, [activeTab, consentDetail]);
21728
21823
  const tablePageCount = Math.ceil(tableTotalCount / pageSize) || 0;
21729
- const handlePaginationChange = (0, import_react57.useCallback)(
21824
+ const handlePaginationChange = (0, import_react58.useCallback)(
21730
21825
  (updater) => {
21731
21826
  const next = typeof updater === "function" ? updater({ pageIndex: currentPage - 1, pageSize }) : updater;
21732
21827
  const nextPage = next.pageIndex + 1;
@@ -21826,7 +21921,7 @@ function ConsentManager({ variant }) {
21826
21921
  setCurrentPage(DEFAULT_PAGE);
21827
21922
  setExpanded({});
21828
21923
  };
21829
- const handleExport = (0, import_react57.useCallback)(() => {
21924
+ const handleExport = (0, import_react58.useCallback)(() => {
21830
21925
  const toRow = (purpose, productName) => {
21831
21926
  var _a2, _b2;
21832
21927
  return {
@@ -21847,7 +21942,7 @@ function ConsentManager({ variant }) {
21847
21942
  exportTableToCSV(rows);
21848
21943
  setExportModal(false);
21849
21944
  }, [viewMode, productTable, purposeTable, t]);
21850
- const handleLoadMorePurposes = (0, import_react57.useCallback)(
21945
+ const handleLoadMorePurposes = (0, import_react58.useCallback)(
21851
21946
  async (group) => {
21852
21947
  var _a2, _b2, _c2;
21853
21948
  if (!organizationId || !workspaceId) return;
@@ -21907,7 +22002,7 @@ function ConsentManager({ variant }) {
21907
22002
  t
21908
22003
  ]
21909
22004
  );
21910
- const handleManageConsent = (0, import_react57.useCallback)(
22005
+ const handleManageConsent = (0, import_react58.useCallback)(
21911
22006
  async (purposeId, action, nominatorContact, dataElementUuids, productUuid, nominatorUuid) => {
21912
22007
  var _a2, _b2, _c2;
21913
22008
  if (!organizationId || !workspaceId || !contact) {
@@ -22439,7 +22534,7 @@ function WelcomeBanner() {
22439
22534
  // src/RedactoPrivacyCenter/PrivacyCenterConsentManagerPage.tsx
22440
22535
  var import_jsx_runtime67 = require("react/jsx-runtime");
22441
22536
  function PrivacyCenterConsentManagerPage() {
22442
- (0, import_react58.useEffect)(() => {
22537
+ (0, import_react59.useEffect)(() => {
22443
22538
  if (!i18n_default.language) {
22444
22539
  i18n_default.changeLanguage("en");
22445
22540
  }
@@ -22451,7 +22546,7 @@ function PrivacyCenterConsentManagerPage() {
22451
22546
  }
22452
22547
 
22453
22548
  // src/RedactoPrivacyCenter/PrivacyCenterFormPage.tsx
22454
- var import_react65 = require("react");
22549
+ var import_react66 = require("react");
22455
22550
  var import_react_i18next45 = require("react-i18next");
22456
22551
  var import_io55 = require("react-icons/io5");
22457
22552
 
@@ -22571,7 +22666,7 @@ function FormBlockWrapper({
22571
22666
 
22572
22667
  // src/RedactoPrivacyCenter/components/Form.tsx
22573
22668
  var import_react_query = require("@tanstack/react-query");
22574
- var import_react61 = require("react");
22669
+ var import_react62 = require("react");
22575
22670
  var import_react_i18next40 = require("react-i18next");
22576
22671
  var import_ai = require("react-icons/ai");
22577
22672
  var import_pi4 = require("react-icons/pi");
@@ -22976,7 +23071,7 @@ function NominationDataSection({
22976
23071
  }
22977
23072
 
22978
23073
  // src/RedactoPrivacyCenter/components/DataRequest/ProductSelectionSection.tsx
22979
- var import_react59 = require("react");
23074
+ var import_react60 = require("react");
22980
23075
  var import_react_i18next37 = require("react-i18next");
22981
23076
  var import_jsx_runtime72 = require("react/jsx-runtime");
22982
23077
  var getVar18 = (varName) => `var(${varName})`;
@@ -23055,7 +23150,7 @@ function ProductSelectionSection({
23055
23150
  const totalGroups = directGroups.length + nominatedGroups.length;
23056
23151
  const isSingleGroup = totalGroups === 1;
23057
23152
  const singleGroup = isSingleGroup ? (_b = (_a = directGroups[0]) != null ? _a : nominatedGroups[0]) != null ? _b : null : null;
23058
- (0, import_react59.useEffect)(() => {
23153
+ (0, import_react60.useEffect)(() => {
23059
23154
  if (!singleGroup) {
23060
23155
  return;
23061
23156
  }
@@ -23150,7 +23245,7 @@ function ProductSelectionSection({
23150
23245
  // src/RedactoPrivacyCenter/components/DataRequest/PurposeSelectionSection.tsx
23151
23246
  var import_lucide_react19 = require("lucide-react");
23152
23247
  var import_react_i18next38 = require("react-i18next");
23153
- var import_react60 = require("react");
23248
+ var import_react61 = require("react");
23154
23249
  var import_jsx_runtime73 = require("react/jsx-runtime");
23155
23250
  var getVar19 = (varName) => `var(${varName})`;
23156
23251
  function PurposeSelectionSection({
@@ -23161,9 +23256,9 @@ function PurposeSelectionSection({
23161
23256
  }) {
23162
23257
  const isAccess = requestType === "ACCESS" /* ACCESS */;
23163
23258
  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)(() => {
23259
+ const [selectAllChecked, setSelectAllChecked] = (0, import_react61.useState)(false);
23260
+ const [openIndexes, setOpenIndexes] = (0, import_react61.useState)([]);
23261
+ (0, import_react61.useEffect)(() => {
23167
23262
  setSelectAllChecked(false);
23168
23263
  setOpenIndexes([]);
23169
23264
  }, [requestType]);
@@ -23180,7 +23275,7 @@ function PurposeSelectionSection({
23180
23275
  }));
23181
23276
  setPurposes(updated);
23182
23277
  };
23183
- (0, import_react60.useEffect)(() => {
23278
+ (0, import_react61.useEffect)(() => {
23184
23279
  const allSelected = purposes.every(
23185
23280
  (p) => p.data_elements.every((de) => de.selected)
23186
23281
  );
@@ -23790,24 +23885,23 @@ function Form({
23790
23885
  const queryClient = (0, import_react_query.useQueryClient)();
23791
23886
  const timePeriodOptions = useTimePeriodOptions();
23792
23887
  const { organization } = useOrganization();
23793
- const orgSlug = (organization == null ? void 0 : organization.slug) || (organization == null ? void 0 : organization.name) || "";
23794
23888
  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);
23889
+ const [requestType, setRequestType] = (0, import_react62.useState)(null);
23890
+ const [timePeriod, setTimePeriod] = (0, import_react62.useState)("");
23891
+ const [isSubmitted, setIsSubmitted] = (0, import_react62.useState)(false);
23798
23892
  const { t } = (0, import_react_i18next40.useTranslation)();
23799
23893
  const { accessToken, refreshToken, onError, updateTokens } = useAuth();
23800
23894
  const { consentClient, baseUrl } = useBaseUrl();
23801
23895
  const organizationId = organization == null ? void 0 : organization.uuid;
23802
23896
  const workspaceId = (_a = organization == null ? void 0 : organization.workspaces[0]) == null ? void 0 : _a.uuid;
23803
- const authContext = (0, import_react61.useMemo)(() => ({
23897
+ const authContext = (0, import_react62.useMemo)(() => ({
23804
23898
  accessToken,
23805
23899
  refreshToken,
23806
23900
  onError,
23807
23901
  updateTokens
23808
23902
  }), [accessToken, refreshToken, onError, updateTokens]);
23809
- const [data, setData] = (0, import_react61.useState)(null);
23810
- const [formData, setFormData] = (0, import_react61.useState)({
23903
+ const [data, setData] = (0, import_react62.useState)(null);
23904
+ const [formData, setFormData] = (0, import_react62.useState)({
23811
23905
  uuid: "",
23812
23906
  case_id: "",
23813
23907
  name: "",
@@ -23818,38 +23912,38 @@ function Form({
23818
23912
  additionalNote: "",
23819
23913
  confirmCheckBox: false
23820
23914
  });
23821
- const [selectedProductKey, setSelectedProductKey] = (0, import_react61.useState)(
23915
+ const [selectedProductKey, setSelectedProductKey] = (0, import_react62.useState)(
23822
23916
  null
23823
23917
  );
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)(
23918
+ const [selectedPurposes, setSelectedPurposes] = (0, import_react62.useState)([]);
23919
+ const [selectedCorrectionElements, setSelectedCorrectionElements] = (0, import_react62.useState)([]);
23920
+ const [correctionValues, setCorrectionValues] = (0, import_react62.useState)({});
23921
+ const [submittedCase, setSubmittedCase] = (0, import_react62.useState)(
23828
23922
  null
23829
23923
  );
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);
23924
+ const fileInputRef = (0, import_react62.useRef)(null);
23925
+ const englishDataRef = (0, import_react62.useRef)(null);
23926
+ const [uploadedDocumentId, setUploadedDocumentId] = (0, import_react62.useState)([]);
23927
+ const [uploadedDocuments, setUploadedDocuments] = (0, import_react62.useState)([]);
23928
+ const [isDocumentUploading, setIsDocumentUploading] = (0, import_react62.useState)(false);
23929
+ const [isDocument, setIsDocument] = (0, import_react62.useState)(false);
23930
+ const [isPopupFormEnabled, setIsPopupFormEnabled] = (0, import_react62.useState)(!isPopup);
23931
+ const [isVerifyingContact, setIsVerifyingContact] = (0, import_react62.useState)(false);
23838
23932
  const requestTypeLabels = useRequestTypeLabels();
23839
23933
  const {
23840
23934
  settings: { portal },
23841
23935
  isCustomised
23842
23936
  } = usePrivacyCenterSettingsContext();
23843
23937
  const { emitRequestSubmit } = usePrivacyCenterEvents();
23844
- const [serverRequestTypes, setServerRequestTypes] = (0, import_react61.useState)(null);
23845
- const [rawGrievanceOptions, setGrievanceOptions] = (0, import_react61.useState)(
23938
+ const [serverRequestTypes, setServerRequestTypes] = (0, import_react62.useState)(null);
23939
+ const [rawGrievanceOptions, setGrievanceOptions] = (0, import_react62.useState)(
23846
23940
  []
23847
23941
  );
23848
- const grievanceOptions = (0, import_react61.useMemo)(
23942
+ const grievanceOptions = (0, import_react62.useMemo)(
23849
23943
  () => filterGrievanceOptions(rawGrievanceOptions, portal.grievance_categories),
23850
23944
  [rawGrievanceOptions, portal.grievance_categories]
23851
23945
  );
23852
- const requestTypeSelectOptions = (0, import_react61.useMemo)(
23946
+ const requestTypeSelectOptions = (0, import_react62.useMemo)(
23853
23947
  () => requestTypeOptions(portal.request_types, serverRequestTypes, !isCustomised).map((option2) => {
23854
23948
  var _a2;
23855
23949
  return {
@@ -23859,27 +23953,27 @@ function Form({
23859
23953
  }),
23860
23954
  [portal.request_types, serverRequestTypes, isCustomised, requestTypeLabels]
23861
23955
  );
23862
- (0, import_react61.useEffect)(() => {
23956
+ (0, import_react62.useEffect)(() => {
23863
23957
  if (requestType && !requestTypeSelectOptions.some((option2) => option2.value === requestType)) {
23864
23958
  setRequestType(null);
23865
23959
  }
23866
23960
  }, [requestType, requestTypeSelectOptions]);
23867
- const [selectedGrievances, setSelectedGrievances] = (0, import_react61.useState)({});
23868
- const [nominationData, setNominationData] = (0, import_react61.useState)({
23961
+ const [selectedGrievances, setSelectedGrievances] = (0, import_react62.useState)({});
23962
+ const [nominationData, setNominationData] = (0, import_react62.useState)({
23869
23963
  nominee_email: "",
23870
23964
  nominee_mobile: ""
23871
23965
  });
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);
23966
+ const [isLoading, setIsLoading] = (0, import_react62.useState)(false);
23967
+ const [isTranslating, setIsTranslating] = (0, import_react62.useState)(false);
23968
+ const [isRequestDetailsExpanded, setIsRequestDetailsExpanded] = (0, import_react62.useState)(true);
23969
+ const [isErasureConsentModalOpen, setIsErasureConsentModalOpen] = (0, import_react62.useState)(false);
23970
+ const [revokeConsentOnFulfilment, setRevokeConsentOnFulfilment] = (0, import_react62.useState)(false);
23877
23971
  const resetFileInput = () => {
23878
23972
  if (fileInputRef.current) {
23879
23973
  fileInputRef.current.value = "";
23880
23974
  }
23881
23975
  };
23882
- const allGroups = (0, import_react61.useMemo)(() => {
23976
+ const allGroups = (0, import_react62.useMemo)(() => {
23883
23977
  var _a2, _b2;
23884
23978
  if (!data) {
23885
23979
  return [];
@@ -23898,7 +23992,7 @@ function Form({
23898
23992
  return [flatGroup];
23899
23993
  }, [data, t]);
23900
23994
  const skipProductStep = allGroups.length === 1;
23901
- const selectedGroup = (0, import_react61.useMemo)(() => {
23995
+ const selectedGroup = (0, import_react62.useMemo)(() => {
23902
23996
  var _a2, _b2;
23903
23997
  if (selectedProductKey) {
23904
23998
  return (_a2 = allGroups.find((g) => productGroupKey(g) === selectedProductKey)) != null ? _a2 : null;
@@ -23908,13 +24002,13 @@ function Form({
23908
24002
  }
23909
24003
  return null;
23910
24004
  }, [allGroups, selectedProductKey, skipProductStep]);
23911
- const handleProductSelect = (0, import_react61.useCallback)(
24005
+ const handleProductSelect = (0, import_react62.useCallback)(
23912
24006
  (key, _group) => {
23913
24007
  setSelectedProductKey(key);
23914
24008
  },
23915
24009
  []
23916
24010
  );
23917
- const withUserConsentPickerGroups = (0, import_react61.useCallback)(
24011
+ const withUserConsentPickerGroups = (0, import_react62.useCallback)(
23918
24012
  async (form, language) => {
23919
24013
  var _a2, _b2;
23920
24014
  if (isPopup || isCaseManagementContext || !organizationId || !workspaceId) {
@@ -23952,7 +24046,7 @@ function Form({
23952
24046
  consentClient
23953
24047
  ]
23954
24048
  );
23955
- const fetchAndApplyTranslations = (0, import_react61.useCallback)(async (langValue) => {
24049
+ const fetchAndApplyTranslations = (0, import_react62.useCallback)(async (langValue) => {
23956
24050
  if (!organizationId || !workspaceId || !data) {
23957
24051
  return;
23958
24052
  }
@@ -24000,7 +24094,7 @@ function Form({
24000
24094
  setIsTranslating(false);
24001
24095
  }
24002
24096
  }, [organizationId, workspaceId, data, formData.contact, isPopup, isCaseManagementContext, authContext, consentClient, selectedGrievances, t, withUserConsentPickerGroups, portal.grievance_categories]);
24003
- (0, import_react61.useEffect)(() => {
24097
+ (0, import_react62.useEffect)(() => {
24004
24098
  if (!skipProductStep) {
24005
24099
  setSelectedProductKey(null);
24006
24100
  }
@@ -24016,7 +24110,7 @@ function Form({
24016
24110
  setSelectedGrievances(resetGrievances);
24017
24111
  }
24018
24112
  }, [requestType, grievanceOptions, skipProductStep]);
24019
- (0, import_react61.useEffect)(() => {
24113
+ (0, import_react62.useEffect)(() => {
24020
24114
  if (!skipProductStep) {
24021
24115
  return;
24022
24116
  }
@@ -24027,7 +24121,7 @@ function Form({
24027
24121
  const key = productGroupKey(onlyGroup);
24028
24122
  setSelectedProductKey((prev) => prev === key ? prev : key);
24029
24123
  }, [skipProductStep, allGroups, requestType]);
24030
- (0, import_react61.useEffect)(() => {
24124
+ (0, import_react62.useEffect)(() => {
24031
24125
  if (!selectedGroup || !isProductScopedRequestType(requestType)) {
24032
24126
  setSelectedPurposes([]);
24033
24127
  setSelectedCorrectionElements([]);
@@ -24038,7 +24132,7 @@ function Form({
24038
24132
  setSelectedCorrectionElements([]);
24039
24133
  setCorrectionValues({});
24040
24134
  }, [selectedGroup, requestType]);
24041
- (0, import_react61.useEffect)(() => {
24135
+ (0, import_react62.useEffect)(() => {
24042
24136
  const handleLanguageChanged = () => {
24043
24137
  const lang = i18n_default.language;
24044
24138
  if (organizationId && workspaceId && data) {
@@ -24053,7 +24147,7 @@ function Form({
24053
24147
  i18n_default.off("languageChanged", handleLanguageChanged);
24054
24148
  };
24055
24149
  }, [organizationId, workspaceId, data, formData.contact, fetchAndApplyTranslations]);
24056
- (0, import_react61.useEffect)(() => {
24150
+ (0, import_react62.useEffect)(() => {
24057
24151
  const initializePrivacyCenterForm = async () => {
24058
24152
  if (isPopup) {
24059
24153
  return;
@@ -24136,7 +24230,7 @@ function Form({
24136
24230
  };
24137
24231
  void initializePrivacyCenterForm();
24138
24232
  }, [organizationId, workspaceId, isPopup, authContext, consentClient, withUserConsentPickerGroups]);
24139
- const getEnglishDataElementName = (0, import_react61.useCallback)((translatedName) => {
24233
+ const getEnglishDataElementName = (0, import_react62.useCallback)((translatedName) => {
24140
24234
  var _a2, _b2, _c2;
24141
24235
  if (!((_a2 = englishDataRef.current) == null ? void 0 : _a2.purposes)) {
24142
24236
  return translatedName;
@@ -24162,11 +24256,11 @@ function Form({
24162
24256
  }
24163
24257
  return translatedName;
24164
24258
  }, [data]);
24165
- const selectedErasurePurposeList = (0, import_react61.useMemo)(
24259
+ const selectedErasurePurposeList = (0, import_react62.useMemo)(
24166
24260
  () => selectedPurposes.filter((p) => p.selected || p.data_elements.some((de) => de.selected)).map((p) => p.name).filter(Boolean),
24167
24261
  [selectedPurposes]
24168
24262
  );
24169
- const selectedErasurePurposeNames = (0, import_react61.useMemo)(() => {
24263
+ const selectedErasurePurposeNames = (0, import_react62.useMemo)(() => {
24170
24264
  if (selectedErasurePurposeList.length === 0 || selectedErasurePurposeList.length > MAX_DISPLAYED_PURPOSE_NAMES_IN_ERASURE_MODAL) {
24171
24265
  return t("revokeConsentModalYourPurposes");
24172
24266
  }
@@ -24301,7 +24395,7 @@ function Form({
24301
24395
  setIsLoading(false);
24302
24396
  }
24303
24397
  };
24304
- const isRequestDetailsValid = (0, import_react61.useCallback)(() => {
24398
+ const isRequestDetailsValid = (0, import_react62.useCallback)(() => {
24305
24399
  var _a2, _b2;
24306
24400
  if (!requestType) {
24307
24401
  return false;
@@ -24348,7 +24442,7 @@ function Form({
24348
24442
  grievanceOptions,
24349
24443
  nominationData
24350
24444
  ]);
24351
- const isFormValid = (0, import_react61.useMemo)(() => {
24445
+ const isFormValid = (0, import_react62.useMemo)(() => {
24352
24446
  var _a2;
24353
24447
  return (!isPopup || isPopupFormEnabled) && !!((_a2 = formData.contact) == null ? void 0 : _a2.trim()) && !!requestType && isRequestDetailsValid() && formData.confirmCheckBox;
24354
24448
  }, [
@@ -24381,7 +24475,7 @@ function Form({
24381
24475
  if (!organizationId || !workspaceId) {
24382
24476
  throw new Error("Organization ID and Workspace ID are required for file upload");
24383
24477
  }
24384
- const authToken = await ensureValidToken(organizationId, workspaceId, orgSlug, authContext, consentClient);
24478
+ const authToken = await ensureValidToken(organizationId, workspaceId, void 0, authContext, consentClient);
24385
24479
  if (!authToken) {
24386
24480
  throw new Error("Authentication token is required for file upload");
24387
24481
  }
@@ -25228,7 +25322,7 @@ function Form({
25228
25322
  }
25229
25323
 
25230
25324
  // src/RedactoPrivacyCenter/components/CaseHistory.tsx
25231
- var import_react64 = require("react");
25325
+ var import_react65 = require("react");
25232
25326
  var import_react_i18next44 = require("react-i18next");
25233
25327
  var import_fi3 = require("react-icons/fi");
25234
25328
  var import_io54 = require("react-icons/io5");
@@ -25328,7 +25422,7 @@ var useSubmitDocumentForRequest = (organizationId, workspaceId, caseUuid, authCo
25328
25422
  var import_react_table7 = require("@tanstack/react-table");
25329
25423
 
25330
25424
  // src/RedactoPrivacyCenter/components/caseHistoryColumns.tsx
25331
- var import_react62 = require("react");
25425
+ var import_react63 = require("react");
25332
25426
  var import_react_i18next41 = require("react-i18next");
25333
25427
  var import_fi2 = require("react-icons/fi");
25334
25428
  var import_react_table5 = require("@tanstack/react-table");
@@ -25351,7 +25445,7 @@ var getCaseStatusVariant = (status) => {
25351
25445
  var formatCaseStatus = (s) => s.replace(/_/g, " ").replace(/\b\w/g, (c) => c.toUpperCase());
25352
25446
  var useCaseHistoryColumns = () => {
25353
25447
  const { t } = (0, import_react_i18next41.useTranslation)();
25354
- return (0, import_react62.useMemo)(
25448
+ return (0, import_react63.useMemo)(
25355
25449
  () => [
25356
25450
  columnHelper3.accessor("case_id", {
25357
25451
  id: "case_id",
@@ -25475,7 +25569,7 @@ var useCaseHistoryColumns = () => {
25475
25569
  };
25476
25570
 
25477
25571
  // src/RedactoPrivacyCenter/components/GrievanceTable.tsx
25478
- var import_react63 = require("react");
25572
+ var import_react64 = require("react");
25479
25573
  var import_react_i18next42 = require("react-i18next");
25480
25574
  var import_react_table6 = require("@tanstack/react-table");
25481
25575
  var import_jsx_runtime77 = require("react/jsx-runtime");
@@ -25491,7 +25585,7 @@ function GrievanceTable({
25491
25585
  if (!table) return null;
25492
25586
  const rowModel = table.getRowModel();
25493
25587
  const allRows = rowModel.rows;
25494
- const paginatedRows = (0, import_react63.useMemo)(() => {
25588
+ const paginatedRows = (0, import_react64.useMemo)(() => {
25495
25589
  const start = pageIndex * pageSize;
25496
25590
  const end = start + pageSize;
25497
25591
  return allRows.slice(start, end);
@@ -25943,19 +26037,19 @@ function CaseHistory({ onCreateRequest }) {
25943
26037
  const { navigateTo, setSelectedCase } = useInternalNavigation();
25944
26038
  const grievanceTabs = useGrievanceTabs();
25945
26039
  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)(
26040
+ const [activeTab, setActiveTab] = (0, import_react65.useState)(GRIEVANCE_TAB_IDS.ALL);
26041
+ const [searchQuery, setSearchQuery] = (0, import_react65.useState)("");
26042
+ const [selectedRequestTypes, setSelectedRequestTypes] = (0, import_react65.useState)(
25949
26043
  Object.values(RequestTypeEnum)
25950
26044
  );
25951
- const [pageIndex, setPageIndex] = (0, import_react64.useState)(0);
25952
- const [pageSize, setPageSize] = (0, import_react64.useState)(10);
26045
+ const [pageIndex, setPageIndex] = (0, import_react65.useState)(0);
26046
+ const [pageSize, setPageSize] = (0, import_react65.useState)(10);
25953
26047
  const { organization } = useOrganization();
25954
26048
  const { accessToken, refreshToken, onError, updateTokens } = useAuth();
25955
26049
  const organizationId = organization == null ? void 0 : organization.uuid;
25956
26050
  const workspaceId = (_a = organization == null ? void 0 : organization.workspaces[0]) == null ? void 0 : _a.uuid;
25957
26051
  const contact = typeof window !== "undefined" ? sessionStorage.getItem("email") || "" : "";
25958
- const authContext = (0, import_react64.useMemo)(() => ({
26052
+ const authContext = (0, import_react65.useMemo)(() => ({
25959
26053
  accessToken,
25960
26054
  refreshToken,
25961
26055
  onError,
@@ -25967,7 +26061,7 @@ function CaseHistory({ onCreateRequest }) {
25967
26061
  error,
25968
26062
  isError
25969
26063
  } = useCaseHistory(organizationId, workspaceId, contact, authContext);
25970
- const filteredCases = (0, import_react64.useMemo)(() => {
26064
+ const filteredCases = (0, import_react65.useMemo)(() => {
25971
26065
  return (cases || []).filter((item) => {
25972
26066
  var _a2, _b, _c, _d, _e, _f, _g, _h;
25973
26067
  const statusLower = item.status.toLowerCase();
@@ -26001,12 +26095,12 @@ function CaseHistory({ onCreateRequest }) {
26001
26095
  return true;
26002
26096
  });
26003
26097
  }, [cases, activeTab, selectedRequestTypes, searchQuery]);
26004
- const handleViewDetails = (0, import_react64.useCallback)((caseRequest) => {
26098
+ const handleViewDetails = (0, import_react65.useCallback)((caseRequest) => {
26005
26099
  setSelectedCase(caseRequest);
26006
26100
  navigateTo("case-details");
26007
26101
  }, [navigateTo, setSelectedCase]);
26008
26102
  const columns = useCaseHistoryColumns();
26009
- (0, import_react64.useEffect)(() => {
26103
+ (0, import_react65.useEffect)(() => {
26010
26104
  setPageIndex(0);
26011
26105
  }, [activeTab, searchQuery, selectedRequestTypes]);
26012
26106
  const table = (0, import_react_table7.useReactTable)({
@@ -26285,7 +26379,7 @@ var import_jsx_runtime80 = require("react/jsx-runtime");
26285
26379
  var getVar25 = (varName) => `var(${varName})`;
26286
26380
  function PrivacyCenterFormPage() {
26287
26381
  const { t } = (0, import_react_i18next45.useTranslation)();
26288
- const [showForm, setShowForm] = (0, import_react65.useState)(() => {
26382
+ const [showForm, setShowForm] = (0, import_react66.useState)(() => {
26289
26383
  try {
26290
26384
  return sessionStorage.getItem("pc_grievance_view") === "form";
26291
26385
  } catch {
@@ -26293,18 +26387,18 @@ function PrivacyCenterFormPage() {
26293
26387
  }
26294
26388
  });
26295
26389
  const { setPageChromeOverride, clearPageChromeOverride } = usePageChrome();
26296
- (0, import_react65.useEffect)(() => {
26390
+ (0, import_react66.useEffect)(() => {
26297
26391
  if (!i18n_default.language) {
26298
26392
  i18n_default.changeLanguage("en");
26299
26393
  }
26300
26394
  }, []);
26301
- (0, import_react65.useEffect)(() => {
26395
+ (0, import_react66.useEffect)(() => {
26302
26396
  try {
26303
26397
  sessionStorage.setItem("pc_grievance_view", showForm ? "form" : "list");
26304
26398
  } catch {
26305
26399
  }
26306
26400
  }, [showForm]);
26307
- (0, import_react65.useEffect)(() => {
26401
+ (0, import_react66.useEffect)(() => {
26308
26402
  if (showForm) {
26309
26403
  setPageChromeOverride({
26310
26404
  titleKey: "yourPrivacyCenter",
@@ -26336,15 +26430,15 @@ function PrivacyCenterFormPage() {
26336
26430
  }
26337
26431
 
26338
26432
  // src/RedactoPrivacyCenter/PrivacyCenterActivityPage.tsx
26339
- var import_react68 = require("react");
26433
+ var import_react69 = require("react");
26340
26434
 
26341
26435
  // src/RedactoPrivacyCenter/components/ActivitiesList.tsx
26342
- var import_react67 = require("react");
26436
+ var import_react68 = require("react");
26343
26437
  var import_react_i18next47 = require("react-i18next");
26344
26438
  var import_lucide_react22 = require("lucide-react");
26345
26439
 
26346
26440
  // src/RedactoPrivacyCenter/components/ActivityTimeline.tsx
26347
- var import_react66 = require("react");
26441
+ var import_react67 = require("react");
26348
26442
  var import_react_i18next46 = require("react-i18next");
26349
26443
  var import_dayjs5 = __toESM(require("dayjs"));
26350
26444
  var import_lucide_react21 = require("lucide-react");
@@ -26361,7 +26455,7 @@ function ActivityTimeline({
26361
26455
  activities
26362
26456
  }) {
26363
26457
  const { t } = (0, import_react_i18next46.useTranslation)();
26364
- const groups = (0, import_react66.useMemo)(() => {
26458
+ const groups = (0, import_react67.useMemo)(() => {
26365
26459
  const ordered = [];
26366
26460
  const byKey = /* @__PURE__ */ new Map();
26367
26461
  for (const activity of activities) {
@@ -26554,26 +26648,26 @@ function ActivitiesList() {
26554
26648
  const { consentClient } = useBaseUrl();
26555
26649
  const organizationId = organization == null ? void 0 : organization.uuid;
26556
26650
  const workspaceId = (_a = organization == null ? void 0 : organization.workspaces[0]) == null ? void 0 : _a.uuid;
26557
- const authContext = (0, import_react67.useMemo)(() => ({
26651
+ const authContext = (0, import_react68.useMemo)(() => ({
26558
26652
  accessToken,
26559
26653
  refreshToken,
26560
26654
  onError,
26561
26655
  updateTokens
26562
26656
  }), [accessToken, refreshToken, onError, updateTokens]);
26563
26657
  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);
26658
+ const [activities, setActivities] = (0, import_react68.useState)([]);
26659
+ const [totalCount, setTotalCount] = (0, import_react68.useState)(0);
26660
+ const [isLoadingInitial, setIsLoadingInitial] = (0, import_react68.useState)(true);
26661
+ const [isLoadingMore, setIsLoadingMore] = (0, import_react68.useState)(false);
26568
26662
  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);
26663
+ const isFetchingRef = (0, import_react68.useRef)(false);
26664
+ const requestVersionRef = (0, import_react68.useRef)(0);
26665
+ const hasMoreRef = (0, import_react68.useRef)(hasMore);
26572
26666
  hasMoreRef.current = hasMore;
26573
- const countRef = (0, import_react67.useRef)(0);
26667
+ const countRef = (0, import_react68.useRef)(0);
26574
26668
  countRef.current = activities.length;
26575
- const sentinelRef = (0, import_react67.useRef)(null);
26576
- const fetchPage = (0, import_react67.useCallback)(
26669
+ const sentinelRef = (0, import_react68.useRef)(null);
26670
+ const fetchPage = (0, import_react68.useCallback)(
26577
26671
  async (offset) => {
26578
26672
  if (!organizationId || !workspaceId) return null;
26579
26673
  return fetchActivities(
@@ -26588,7 +26682,7 @@ function ActivitiesList() {
26588
26682
  },
26589
26683
  [organizationId, workspaceId, authContext, consentClient, langParam]
26590
26684
  );
26591
- (0, import_react67.useEffect)(() => {
26685
+ (0, import_react68.useEffect)(() => {
26592
26686
  let cancelled = false;
26593
26687
  const requestVersion = ++requestVersionRef.current;
26594
26688
  isFetchingRef.current = false;
@@ -26625,7 +26719,7 @@ function ActivitiesList() {
26625
26719
  cancelled = true;
26626
26720
  };
26627
26721
  }, [fetchPage, organizationId, workspaceId, t]);
26628
- const loadMore = (0, import_react67.useCallback)(async () => {
26722
+ const loadMore = (0, import_react68.useCallback)(async () => {
26629
26723
  if (isFetchingRef.current || !hasMoreRef.current) {
26630
26724
  return;
26631
26725
  }
@@ -26661,7 +26755,7 @@ function ActivitiesList() {
26661
26755
  }
26662
26756
  }
26663
26757
  }, [fetchPage, t]);
26664
- (0, import_react67.useEffect)(() => {
26758
+ (0, import_react68.useEffect)(() => {
26665
26759
  const node = sentinelRef.current;
26666
26760
  if (!node || isLoadingInitial) {
26667
26761
  return;
@@ -26757,7 +26851,7 @@ function ActivityTimelineSkeleton() {
26757
26851
  // src/RedactoPrivacyCenter/PrivacyCenterActivityPage.tsx
26758
26852
  var import_jsx_runtime83 = require("react/jsx-runtime");
26759
26853
  function PrivacyCenterActivityPage() {
26760
- (0, import_react68.useEffect)(() => {
26854
+ (0, import_react69.useEffect)(() => {
26761
26855
  if (!i18n_default.language) {
26762
26856
  i18n_default.changeLanguage("en");
26763
26857
  }
@@ -26766,17 +26860,17 @@ function PrivacyCenterActivityPage() {
26766
26860
  }
26767
26861
 
26768
26862
  // src/RedactoPrivacyCenter/PrivacyCenterMyReceiptPage.tsx
26769
- var import_react71 = require("react");
26863
+ var import_react72 = require("react");
26770
26864
 
26771
26865
  // src/RedactoPrivacyCenter/components/ReceiptsList.tsx
26772
- var import_react70 = require("react");
26866
+ var import_react71 = require("react");
26773
26867
  var import_react_i18next49 = require("react-i18next");
26774
26868
  var import_react_table9 = require("@tanstack/react-table");
26775
26869
  var import_dayjs7 = __toESM(require("dayjs"));
26776
26870
  var import_lucide_react24 = require("lucide-react");
26777
26871
 
26778
26872
  // src/RedactoPrivacyCenter/components/receiptColumns.tsx
26779
- var import_react69 = require("react");
26873
+ var import_react70 = require("react");
26780
26874
  var import_react_i18next48 = require("react-i18next");
26781
26875
  var import_react_table8 = require("@tanstack/react-table");
26782
26876
  var import_dayjs6 = __toESM(require("dayjs"));
@@ -26812,7 +26906,7 @@ var useReceiptColumns = ({
26812
26906
  downloadingUuid
26813
26907
  }) => {
26814
26908
  const { t } = (0, import_react_i18next48.useTranslation)();
26815
- return (0, import_react69.useMemo)(
26909
+ return (0, import_react70.useMemo)(
26816
26910
  () => [
26817
26911
  columnHelper4.accessor("event_type", {
26818
26912
  id: "event",
@@ -26991,23 +27085,23 @@ function ReceiptsList() {
26991
27085
  const { langParam } = useCurrentLanguage();
26992
27086
  const organizationId = organization == null ? void 0 : organization.uuid;
26993
27087
  const workspaceId = (_a = organization == null ? void 0 : organization.workspaces[0]) == null ? void 0 : _a.uuid;
26994
- const authContext = (0, import_react70.useMemo)(
27088
+ const authContext = (0, import_react71.useMemo)(
26995
27089
  () => ({ accessToken, refreshToken, onError, updateTokens }),
26996
27090
  [accessToken, refreshToken, onError, updateTokens]
26997
27091
  );
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)(
27092
+ const [receipts, setReceipts] = (0, import_react71.useState)([]);
27093
+ const [totalCount, setTotalCount] = (0, import_react71.useState)(0);
27094
+ const [isLoading, setIsLoading] = (0, import_react71.useState)(false);
27095
+ const [currentPage, setCurrentPage] = (0, import_react71.useState)(1);
27096
+ const [pageSize, setPageSize] = (0, import_react71.useState)(10);
27097
+ const [downloadingUuid, setDownloadingUuid] = (0, import_react71.useState)(null);
27098
+ const [previousData, setPreviousData] = (0, import_react71.useState)([]);
27099
+ const [previousTotalCount, setPreviousTotalCount] = (0, import_react71.useState)(0);
27100
+ const [eventType, setEventType] = (0, import_react71.useState)("");
27101
+ const [datePreset, setDatePreset] = (0, import_react71.useState)("");
27102
+ const [customFrom, setCustomFrom] = (0, import_react71.useState)("");
27103
+ const [customTo, setCustomTo] = (0, import_react71.useState)("");
27104
+ const eventTypeOptions = (0, import_react71.useMemo)(
27011
27105
  () => [
27012
27106
  { value: "", label: t("all") },
27013
27107
  { value: "GRANTED", label: t("consentGranted") },
@@ -27017,7 +27111,7 @@ function ReceiptsList() {
27017
27111
  ],
27018
27112
  [t]
27019
27113
  );
27020
- const dateOptions = (0, import_react70.useMemo)(
27114
+ const dateOptions = (0, import_react71.useMemo)(
27021
27115
  () => [
27022
27116
  { value: "", label: t("allTime") },
27023
27117
  { value: "1", label: t("today") },
@@ -27031,11 +27125,11 @@ function ReceiptsList() {
27031
27125
  const eventValue = (_b = eventTypeOptions.find((o) => o.value === eventType)) != null ? _b : null;
27032
27126
  const dateValue = (_c = dateOptions.find((o) => o.value === datePreset)) != null ? _c : null;
27033
27127
  const hasActiveFilters = Boolean(eventType || datePreset);
27034
- const isCustomRangeInvalid = (0, import_react70.useMemo)(
27128
+ const isCustomRangeInvalid = (0, import_react71.useMemo)(
27035
27129
  () => datePreset === "custom" && Boolean(customFrom && customTo && (0, import_dayjs7.default)(customFrom).isAfter((0, import_dayjs7.default)(customTo), "day")),
27036
27130
  [datePreset, customFrom, customTo]
27037
27131
  );
27038
- const activeFilterLabels = (0, import_react70.useMemo)(() => {
27132
+ const activeFilterLabels = (0, import_react71.useMemo)(() => {
27039
27133
  const filters = [];
27040
27134
  if (eventType && (eventValue == null ? void 0 : eventValue.label)) {
27041
27135
  filters.push({ id: "event", label: t("event"), value: eventValue.label });
@@ -27071,7 +27165,7 @@ function ReceiptsList() {
27071
27165
  setCustomTo("");
27072
27166
  setCurrentPage(1);
27073
27167
  };
27074
- const handleGetReceipts = (0, import_react70.useCallback)(
27168
+ const handleGetReceipts = (0, import_react71.useCallback)(
27075
27169
  async (page = currentPage, size = pageSize) => {
27076
27170
  if (!organizationId || !workspaceId) return;
27077
27171
  if (isCustomRangeInvalid) return;
@@ -27125,7 +27219,7 @@ function ReceiptsList() {
27125
27219
  t
27126
27220
  ]
27127
27221
  );
27128
- const handleDownload = (0, import_react70.useCallback)(
27222
+ const handleDownload = (0, import_react71.useCallback)(
27129
27223
  async (receipt) => {
27130
27224
  if (!organizationId || !workspaceId || !receipt.uuid) return;
27131
27225
  setDownloadingUuid(receipt.uuid);
@@ -27156,13 +27250,13 @@ function ReceiptsList() {
27156
27250
  [organizationId, workspaceId, authContext, consentClient, t]
27157
27251
  );
27158
27252
  const columns = useReceiptColumns({ onDownload: handleDownload, downloadingUuid });
27159
- (0, import_react70.useEffect)(() => {
27253
+ (0, import_react71.useEffect)(() => {
27160
27254
  if (receipts.length > 0) {
27161
27255
  setPreviousData(receipts);
27162
27256
  setPreviousTotalCount(totalCount);
27163
27257
  }
27164
27258
  }, [receipts, totalCount]);
27165
- (0, import_react70.useEffect)(() => {
27259
+ (0, import_react71.useEffect)(() => {
27166
27260
  void handleGetReceipts();
27167
27261
  }, [organizationId, workspaceId, handleGetReceipts]);
27168
27262
  const displayData = isLoading && receipts.length === 0 ? previousData : receipts;
@@ -27349,7 +27443,7 @@ function ReceiptsList() {
27349
27443
  // src/RedactoPrivacyCenter/PrivacyCenterMyReceiptPage.tsx
27350
27444
  var import_jsx_runtime86 = require("react/jsx-runtime");
27351
27445
  function PrivacyCenterMyReceiptPage() {
27352
- (0, import_react71.useEffect)(() => {
27446
+ (0, import_react72.useEffect)(() => {
27353
27447
  if (!i18n_default.language) {
27354
27448
  i18n_default.changeLanguage("en");
27355
27449
  }
@@ -27369,7 +27463,7 @@ function PrivacyCenterMyReceiptPage() {
27369
27463
  }
27370
27464
 
27371
27465
  // src/RedactoPrivacyCenter/PrivacyCenterCaseDetailsPage.tsx
27372
- var import_react75 = require("react");
27466
+ var import_react76 = require("react");
27373
27467
  var import_react_i18next56 = require("react-i18next");
27374
27468
  var import_io511 = require("react-icons/io5");
27375
27469
 
@@ -27430,7 +27524,7 @@ function getUploadErrorMessage(error) {
27430
27524
  }
27431
27525
 
27432
27526
  // src/RedactoPrivacyCenter/components/CaseDetails/MessagesTab.tsx
27433
- var import_react74 = require("react");
27527
+ var import_react75 = require("react");
27434
27528
  var import_react_i18next54 = require("react-i18next");
27435
27529
  var import_io510 = require("react-icons/io5");
27436
27530
 
@@ -27782,47 +27876,47 @@ var MessageComposer = ({
27782
27876
  };
27783
27877
 
27784
27878
  // src/RedactoPrivacyCenter/components/CaseDetails/useMessagePolling.ts
27785
- var import_react72 = require("react");
27879
+ var import_react73 = require("react");
27786
27880
  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);
27881
+ const scrollContainerRef = (0, import_react73.useRef)(null);
27882
+ const isNearBottomRef = (0, import_react73.useRef)(true);
27883
+ const shouldAutoScrollRef = (0, import_react73.useRef)(true);
27884
+ const isPausedRef = (0, import_react73.useRef)(isPaused);
27791
27885
  isPausedRef.current = isPaused;
27792
- (0, import_react72.useEffect)(() => {
27886
+ (0, import_react73.useEffect)(() => {
27793
27887
  const interval = setInterval(() => {
27794
27888
  var _a;
27795
27889
  if (!((_a = isPausedRef.current) == null ? void 0 : _a.call(isPausedRef))) refetch();
27796
27890
  }, 3e4);
27797
27891
  return () => clearInterval(interval);
27798
27892
  }, [refetch]);
27799
- const handleScroll = (0, import_react72.useCallback)(() => {
27893
+ const handleScroll = (0, import_react73.useCallback)(() => {
27800
27894
  const el = scrollContainerRef.current;
27801
27895
  if (!el) return;
27802
27896
  isNearBottomRef.current = el.scrollHeight - el.scrollTop - el.clientHeight < 100;
27803
27897
  }, []);
27804
- (0, import_react72.useLayoutEffect)(() => {
27898
+ (0, import_react73.useLayoutEffect)(() => {
27805
27899
  const el = scrollContainerRef.current;
27806
27900
  if (el && (isNearBottomRef.current || shouldAutoScrollRef.current)) {
27807
27901
  el.scrollTop = el.scrollHeight;
27808
27902
  shouldAutoScrollRef.current = false;
27809
27903
  }
27810
27904
  }, [messages]);
27811
- const scrollToBottom = (0, import_react72.useCallback)(() => {
27905
+ const scrollToBottom = (0, import_react73.useCallback)(() => {
27812
27906
  shouldAutoScrollRef.current = true;
27813
27907
  }, []);
27814
27908
  return { scrollContainerRef, handleScroll, scrollToBottom };
27815
27909
  }
27816
27910
 
27817
27911
  // src/RedactoPrivacyCenter/components/CaseDetails/useFileUpload.ts
27818
- var import_react73 = require("react");
27912
+ var import_react74 = require("react");
27819
27913
  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) => {
27914
+ const [pendingUpload, setPendingUpload] = (0, import_react74.useState)(null);
27915
+ const [submittingForRequest, setSubmittingForRequest] = (0, import_react74.useState)(null);
27916
+ const attachInputRef = (0, import_react74.useRef)(null);
27917
+ const submitInputRef = (0, import_react74.useRef)(null);
27918
+ const pendingRequestRef = (0, import_react74.useRef)(null);
27919
+ const handleAttachFile = (0, import_react74.useCallback)((e) => {
27826
27920
  var _a;
27827
27921
  const file = (_a = e.target.files) == null ? void 0 : _a[0];
27828
27922
  if (!file) return;
@@ -27846,7 +27940,7 @@ function useFileUpload(uploadMutation, submitMutation, refetch, scrollToBottom)
27846
27940
  }
27847
27941
  });
27848
27942
  }, [uploadMutation]);
27849
- const handleSubmitForRequest = (0, import_react73.useCallback)((requestEventUuid, file) => {
27943
+ const handleSubmitForRequest = (0, import_react74.useCallback)((requestEventUuid, file) => {
27850
27944
  const validationError = validateUploadFile(file);
27851
27945
  if (validationError) {
27852
27946
  toast.error(validationError);
@@ -27882,7 +27976,7 @@ function useFileUpload(uploadMutation, submitMutation, refetch, scrollToBottom)
27882
27976
  }
27883
27977
  });
27884
27978
  }, [uploadMutation, submitMutation, refetch, scrollToBottom]);
27885
- const handleSubmitInputChange = (0, import_react73.useCallback)((e) => {
27979
+ const handleSubmitInputChange = (0, import_react74.useCallback)((e) => {
27886
27980
  var _a;
27887
27981
  const file = (_a = e.target.files) == null ? void 0 : _a[0];
27888
27982
  e.target.value = "";
@@ -27892,7 +27986,7 @@ function useFileUpload(uploadMutation, submitMutation, refetch, scrollToBottom)
27892
27986
  handleSubmitForRequest(requestUuid, file);
27893
27987
  }
27894
27988
  }, [handleSubmitForRequest]);
27895
- const triggerUploadForRequest = (0, import_react73.useCallback)((requestEventUuid) => {
27989
+ const triggerUploadForRequest = (0, import_react74.useCallback)((requestEventUuid) => {
27896
27990
  var _a;
27897
27991
  pendingRequestRef.current = requestEventUuid;
27898
27992
  (_a = submitInputRef.current) == null ? void 0 : _a.click();
@@ -27918,7 +28012,7 @@ var MessagesTab = ({ caseUuid, caseStatus }) => {
27918
28012
  const caseFinalizedTooltip = useCaseFinalizedTooltip();
27919
28013
  const { organization } = useOrganization();
27920
28014
  const { accessToken, refreshToken, onError, updateTokens } = useAuth();
27921
- const authContext = (0, import_react74.useMemo)(
28015
+ const authContext = (0, import_react75.useMemo)(
27922
28016
  () => ({ accessToken, refreshToken, onError, updateTokens }),
27923
28017
  [accessToken, refreshToken, onError, updateTokens]
27924
28018
  );
@@ -27933,7 +28027,7 @@ var MessagesTab = ({ caseUuid, caseStatus }) => {
27933
28027
  const sendMutation = useSendCaseMessage(organizationId, workspaceId, caseUuid, authContext);
27934
28028
  const uploadMutation = useUploadCaseDocument(organizationId, workspaceId, caseUuid, authContext);
27935
28029
  const submitMutation = useSubmitDocumentForRequest(organizationId, workspaceId, caseUuid, authContext);
27936
- const isPollingPaused = (0, import_react74.useCallback)(() => isRefreshBlocked(authContext), [authContext]);
28030
+ const isPollingPaused = (0, import_react75.useCallback)(() => isRefreshBlocked(authContext), [authContext]);
27937
28031
  const { scrollContainerRef, handleScroll, scrollToBottom } = useMessagePolling(refetch, messages, isPollingPaused);
27938
28032
  const {
27939
28033
  pendingUpload,
@@ -27945,8 +28039,8 @@ var MessagesTab = ({ caseUuid, caseStatus }) => {
27945
28039
  handleSubmitInputChange,
27946
28040
  triggerUploadForRequest
27947
28041
  } = useFileUpload(uploadMutation, submitMutation, refetch, scrollToBottom);
27948
- const [messageText, setMessageText] = (0, import_react74.useState)("");
27949
- const handleSend = (0, import_react74.useCallback)(() => {
28042
+ const [messageText, setMessageText] = (0, import_react75.useState)("");
28043
+ const handleSend = (0, import_react75.useCallback)(() => {
27950
28044
  if (sendMutation.isPending || uploadMutation.isPending) return;
27951
28045
  const trimmedBody = messageText.trim();
27952
28046
  if (!trimmedBody && !pendingUpload) return;
@@ -28133,13 +28227,13 @@ var PrivacyCenterCaseDetailsPage = () => {
28133
28227
  var _a, _b;
28134
28228
  const { t } = (0, import_react_i18next56.useTranslation)();
28135
28229
  const { navigateTo, selectedCase, setSelectedCase, pendingCaseUuid } = useInternalNavigation();
28136
- const [activeTab, setActiveTab] = (0, import_react75.useState)("request-details");
28230
+ const [activeTab, setActiveTab] = (0, import_react76.useState)("request-details");
28137
28231
  const { organization } = useOrganization();
28138
28232
  const { accessToken, refreshToken, onError, updateTokens } = useAuth();
28139
28233
  const organizationId = organization == null ? void 0 : organization.uuid;
28140
28234
  const workspaceId = (_a = organization == null ? void 0 : organization.workspaces[0]) == null ? void 0 : _a.uuid;
28141
28235
  const contact = typeof window !== "undefined" ? sessionStorage.getItem("email") || "" : "";
28142
- const authContext = (0, import_react75.useMemo)(() => ({
28236
+ const authContext = (0, import_react76.useMemo)(() => ({
28143
28237
  accessToken,
28144
28238
  refreshToken,
28145
28239
  onError,
@@ -28152,7 +28246,7 @@ var PrivacyCenterCaseDetailsPage = () => {
28152
28246
  contact,
28153
28247
  authContext
28154
28248
  );
28155
- (0, import_react75.useEffect)(() => {
28249
+ (0, import_react76.useEffect)(() => {
28156
28250
  if (!cases) return;
28157
28251
  if (cases.length === 0) {
28158
28252
  navigateTo("form");
@@ -28166,13 +28260,13 @@ var PrivacyCenterCaseDetailsPage = () => {
28166
28260
  navigateTo("form");
28167
28261
  }
28168
28262
  }, [cases, targetUuid, setSelectedCase, navigateTo]);
28169
- (0, import_react75.useEffect)(() => {
28263
+ (0, import_react76.useEffect)(() => {
28170
28264
  if (!targetUuid || isLoading || cases !== void 0) return;
28171
28265
  if (!organizationId || !workspaceId || !contact) {
28172
28266
  navigateTo("form");
28173
28267
  }
28174
28268
  }, [targetUuid, organizationId, workspaceId, contact, cases, isLoading, navigateTo]);
28175
- (0, import_react75.useEffect)(() => {
28269
+ (0, import_react76.useEffect)(() => {
28176
28270
  if (!selectedCase && !targetUuid && !isLoading) {
28177
28271
  navigateTo("form");
28178
28272
  }
@@ -28239,7 +28333,7 @@ var PrivacyCenterCaseDetailsPage = () => {
28239
28333
  };
28240
28334
 
28241
28335
  // src/RedactoPrivacyCenter/NotificationsPage.tsx
28242
- var import_react76 = require("react");
28336
+ var import_react77 = require("react");
28243
28337
  var import_io512 = require("react-icons/io5");
28244
28338
  var import_react_i18next59 = require("react-i18next");
28245
28339
 
@@ -28406,20 +28500,20 @@ var NotificationsPage = () => {
28406
28500
  handleAcknowledge,
28407
28501
  handleCTAClick
28408
28502
  } = 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)(() => {
28503
+ const [notifications, setNotifications] = (0, import_react77.useState)([]);
28504
+ const [summary, setSummary] = (0, import_react77.useState)({ total: 0, unread: 0, action_needed: 0, acknowledged: 0 });
28505
+ const [activeTab, setActiveTab] = (0, import_react77.useState)("all");
28506
+ const [isLoading, setIsLoading] = (0, import_react77.useState)(true);
28507
+ const [isRefreshing2, setIsRefreshing] = (0, import_react77.useState)(false);
28508
+ const [totalCount, setTotalCount] = (0, import_react77.useState)(0);
28509
+ const [skip, setSkip] = (0, import_react77.useState)(0);
28510
+ const pollRef = (0, import_react77.useRef)(null);
28511
+ const loadNotificationsRef = (0, import_react77.useRef)();
28512
+ (0, import_react77.useEffect)(() => {
28419
28513
  setPageChromeOverride({ titleKey: "notificationHub", descriptionKey: "notificationHubSubtitle" });
28420
28514
  return () => clearPageChromeOverride();
28421
28515
  }, [setPageChromeOverride, clearPageChromeOverride]);
28422
- const loadNotifications = (0, import_react76.useCallback)(async (includeSummary = false, silent = false) => {
28516
+ const loadNotifications = (0, import_react77.useCallback)(async (includeSummary = false, silent = false) => {
28423
28517
  if (!organizationId || !workspaceId) {
28424
28518
  return;
28425
28519
  }
@@ -28450,13 +28544,13 @@ var NotificationsPage = () => {
28450
28544
  setIsRefreshing(false);
28451
28545
  }
28452
28546
  }, [organizationId, workspaceId, activeTab, skip, authContext, consentClient, langParam]);
28453
- (0, import_react76.useEffect)(() => {
28547
+ (0, import_react77.useEffect)(() => {
28454
28548
  loadNotifications(true);
28455
28549
  }, [loadNotifications]);
28456
- (0, import_react76.useEffect)(() => {
28550
+ (0, import_react77.useEffect)(() => {
28457
28551
  loadNotificationsRef.current = loadNotifications;
28458
28552
  }, [loadNotifications]);
28459
- (0, import_react76.useEffect)(() => {
28553
+ (0, import_react77.useEffect)(() => {
28460
28554
  pollRef.current = setInterval(() => {
28461
28555
  var _a;
28462
28556
  (_a = loadNotificationsRef.current) == null ? void 0 : _a.call(loadNotificationsRef, false, true);
@@ -28467,10 +28561,10 @@ var NotificationsPage = () => {
28467
28561
  }
28468
28562
  };
28469
28563
  }, []);
28470
- (0, import_react76.useEffect)(() => {
28564
+ (0, import_react77.useEffect)(() => {
28471
28565
  setSkip(0);
28472
28566
  }, [activeTab]);
28473
- const onNotificationClick = (0, import_react76.useCallback)(async (notification) => {
28567
+ const onNotificationClick = (0, import_react77.useCallback)(async (notification) => {
28474
28568
  if (!organizationId || !workspaceId) {
28475
28569
  return;
28476
28570
  }
@@ -28493,7 +28587,7 @@ var NotificationsPage = () => {
28493
28587
  acknowledged: prev.acknowledged + (acknowledged && !notification.is_acknowledged ? 1 : 0)
28494
28588
  }));
28495
28589
  }, [organizationId, workspaceId, hasAcknowledgeCTA, handleMarkRead, handleAcknowledge]);
28496
- const onCTAClick = (0, import_react76.useCallback)(async (notification, cta) => {
28590
+ const onCTAClick = (0, import_react77.useCallback)(async (notification, cta) => {
28497
28591
  const result = await handleCTAClick(notification, cta);
28498
28592
  if (result === "acknowledged") {
28499
28593
  setNotifications((prev) => prev.map(
@@ -28508,7 +28602,7 @@ var NotificationsPage = () => {
28508
28602
  onNotificationClick(notification);
28509
28603
  }
28510
28604
  }, [handleCTAClick, onNotificationClick]);
28511
- const onMarkAllRead = (0, import_react76.useCallback)(async () => {
28605
+ const onMarkAllRead = (0, import_react77.useCallback)(async () => {
28512
28606
  const ok = await handleMarkAllRead();
28513
28607
  if (!ok) {
28514
28608
  return;
@@ -28516,11 +28610,11 @@ var NotificationsPage = () => {
28516
28610
  setNotifications((prev) => prev.map((n) => ({ ...n, is_read: true })));
28517
28611
  setSummary((prev) => ({ ...prev, unread: 0 }));
28518
28612
  }, [handleMarkAllRead]);
28519
- const onRefresh = (0, import_react76.useCallback)(() => {
28613
+ const onRefresh = (0, import_react77.useCallback)(() => {
28520
28614
  setIsRefreshing(true);
28521
28615
  loadNotifications(true);
28522
28616
  }, [loadNotifications]);
28523
- const onBack = (0, import_react76.useCallback)(() => navigateTo("consent-manager"), [navigateTo]);
28617
+ const onBack = (0, import_react77.useCallback)(() => navigateTo("consent-manager"), [navigateTo]);
28524
28618
  return /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("div", { className: "pc-notification-page", children: [
28525
28619
  /* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("button", { type: "button", onClick: onBack, className: "pc-notification-back-btn", children: [
28526
28620
  /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(import_io512.IoChevronBackOutline, { size: 14 }),
@@ -28556,7 +28650,7 @@ var NotificationsPage = () => {
28556
28650
  var import_jsx_runtime101 = require("react/jsx-runtime");
28557
28651
  function PrivacyCenterHomePage() {
28558
28652
  const { currentPage } = useInternalNavigation();
28559
- (0, import_react77.useEffect)(() => {
28653
+ (0, import_react78.useEffect)(() => {
28560
28654
  if (!i18n_default.language) {
28561
28655
  i18n_default.changeLanguage("en");
28562
28656
  }
@@ -28580,47 +28674,23 @@ function PrivacyCenterHomePage() {
28580
28674
  }
28581
28675
 
28582
28676
  // 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
- };
28677
+ var import_react79 = require("react");
28608
28678
 
28609
28679
  // src/RedactoPrivacyCenter/settings/api.ts
28610
- var cache2 = /* @__PURE__ */ new Map();
28680
+ var cache = /* @__PURE__ */ new Map();
28611
28681
  var freshEntry = (url) => {
28612
- const entry = cache2.get(url);
28682
+ const entry = cache.get(url);
28613
28683
  if (!entry) {
28614
28684
  return null;
28615
28685
  }
28616
28686
  if (Date.now() >= entry.expiresAt) {
28617
- cache2.delete(url);
28687
+ cache.delete(url);
28618
28688
  return null;
28619
28689
  }
28620
28690
  return entry;
28621
28691
  };
28622
28692
  var trimTrailingSlash = (url) => url.replace(/\/+$/, "");
28623
- var privacyCenterSettingsUrl = (baseUrl, organisationUuid, language) => `${trimTrailingSlash(baseUrl)}/public/organisations/${encodeURIComponent(
28693
+ var privacyCenterSettingsUrl = (baseUrl, organisationUuid, language) => `${trimTrailingSlash(resolveEndpoints(baseUrl).baseUrl)}/public/organisations/${encodeURIComponent(
28624
28694
  organisationUuid
28625
28695
  )}/privacy-center-settings/?${SETTINGS_LANG_PARAM}=${encodeURIComponent(language)}`;
28626
28696
  var isSettingsResponse = (value) => typeof value === "object" && value !== null && "settings" in value && typeof value.settings === "object" && value.settings !== null;
@@ -28632,8 +28702,8 @@ var fetchPublicPrivacyCenterSettings = (baseUrl, organisationUuid, language) =>
28632
28702
  }
28633
28703
  const forget = () => {
28634
28704
  var _a;
28635
- if (((_a = cache2.get(url)) == null ? void 0 : _a.request) === request) {
28636
- cache2.delete(url);
28705
+ if (((_a = cache.get(url)) == null ? void 0 : _a.request) === request) {
28706
+ cache.delete(url);
28637
28707
  }
28638
28708
  };
28639
28709
  const request = apiFetch(url, {
@@ -28651,7 +28721,7 @@ var fetchPublicPrivacyCenterSettings = (baseUrl, organisationUuid, language) =>
28651
28721
  }
28652
28722
  return null;
28653
28723
  });
28654
- cache2.set(url, { request, expiresAt: Date.now() + SETTINGS_CACHE_TTL_MS });
28724
+ cache.set(url, { request, expiresAt: Date.now() + SETTINGS_CACHE_TTL_MS });
28655
28725
  return request;
28656
28726
  };
28657
28727
  var hasCachedPrivacyCenterSettings = (baseUrl, organisationUuid, language) => freshEntry(privacyCenterSettingsUrl(baseUrl, organisationUuid, language)) !== null;
@@ -28668,15 +28738,15 @@ var readSession = (key) => {
28668
28738
  var resolveOrganisationIds = ({
28669
28739
  organisationUuid,
28670
28740
  workspaceUuid,
28671
- accessToken,
28672
- slug
28741
+ accessToken
28673
28742
  }) => {
28674
28743
  var _a, _b, _c, _d;
28675
28744
  const claims = accessToken ? decodeJwtToken(accessToken) : null;
28676
- const storedSlug = readSession("pc_org_slug");
28677
- const sessionMatches = !slug || !storedSlug || storedSlug === slug;
28745
+ const storedOrganisation = readSession("pc_org_id");
28746
+ const organisation = (_b = (_a = clean(organisationUuid)) != null ? _a : clean(claims == null ? void 0 : claims.organisation_uuid)) != null ? _b : storedOrganisation;
28747
+ const sessionMatches = organisation !== null && organisation === storedOrganisation;
28678
28748
  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,
28749
+ organisationUuid: organisation,
28680
28750
  workspaceUuid: (_d = (_c = clean(workspaceUuid)) != null ? _c : clean(claims == null ? void 0 : claims.workspace_uuid)) != null ? _d : sessionMatches ? readSession("pc_workspace_id") : null
28681
28751
  };
28682
28752
  };
@@ -28761,7 +28831,7 @@ var orderedToggles = (raw, keys, defaults) => {
28761
28831
  };
28762
28832
  var stringList = (raw, max) => Array.isArray(raw) ? raw.filter((item) => typeof item === "string").map((item) => item.trim()).filter(Boolean).slice(0, max) : [];
28763
28833
  var resolveBranding = (raw) => {
28764
- var _a;
28834
+ var _a, _b;
28765
28835
  const base = DEFAULT_PRIVACY_CENTER_SETTINGS.branding;
28766
28836
  const font = raw.font_family;
28767
28837
  return {
@@ -28769,11 +28839,12 @@ var resolveBranding = (raw) => {
28769
28839
  display_name: nullableText(raw.display_name, base.display_name),
28770
28840
  logo_url: nullableUrl(raw.logo_url, base.logo_url),
28771
28841
  logo_height: clampedInt(raw.logo_height, LOGO_HEIGHT_MIN, LOGO_HEIGHT_MAX, base.logo_height),
28842
+ logo_align: (_a = LOGO_ALIGNMENTS.find((value) => value === raw.logo_align)) != null ? _a : base.logo_align,
28772
28843
  inherit_colors: bool(raw.inherit_colors, base.inherit_colors),
28773
28844
  primary_color: hex(raw.primary_color, base.primary_color),
28774
28845
  accent_color: hex(raw.accent_color, base.accent_color),
28775
28846
  inherit_font: bool(raw.inherit_font, base.inherit_font),
28776
- font_family: font === null ? null : (_a = FONT_FAMILIES.find((family) => family === font)) != null ? _a : base.font_family,
28847
+ font_family: font === null ? null : (_b = FONT_FAMILIES.find((family) => family === font)) != null ? _b : base.font_family,
28777
28848
  style: raw.style === void 0 ? base.style : resolveAppearance(raw.style) === "glass" ? "glass" : "classic",
28778
28849
  corner_radius: clampedInt(raw.corner_radius, CORNER_RADIUS_MIN, CORNER_RADIUS_MAX, base.corner_radius)
28779
28850
  };
@@ -28935,55 +29006,9 @@ var resolveBrandContact = (raw) => {
28935
29006
  // src/RedactoPrivacyCenter/context/PrivacyCenterSettingsContext.tsx
28936
29007
  var import_jsx_runtime102 = require("react/jsx-runtime");
28937
29008
  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
29009
  var PrivacyCenterSettingsProvider = ({
28984
29010
  children,
28985
29011
  baseUrl,
28986
- slug,
28987
29012
  accessToken,
28988
29013
  organisationUuid,
28989
29014
  workspaceUuid,
@@ -28991,16 +29016,18 @@ var PrivacyCenterSettingsProvider = ({
28991
29016
  builtInSignIn = false
28992
29017
  }) => {
28993
29018
  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);
29019
+ const organisation = (0, import_react79.useMemo)(() => {
29020
+ const known = resolveOrganisationIds({ organisationUuid, workspaceUuid, accessToken });
29021
+ return {
29022
+ ...known,
29023
+ status: known.organisationUuid && known.workspaceUuid ? "resolved" : "failed"
29024
+ };
29025
+ }, [organisationUuid, workspaceUuid, accessToken]);
28999
29026
  const orgUuid = organisation.organisationUuid;
29000
29027
  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)(() => {
29028
+ const [remote, setRemote] = (0, import_react79.useState)(null);
29029
+ const [status, setStatus] = (0, import_react79.useState)("idle");
29030
+ (0, import_react79.useEffect)(() => {
29004
29031
  if (!orgUuid) {
29005
29032
  return void 0;
29006
29033
  }
@@ -29025,12 +29052,12 @@ var PrivacyCenterSettingsProvider = ({
29025
29052
  }, [baseUrl, orgUuid, requestLanguage]);
29026
29053
  const overridesKey = JSON.stringify(overrides != null ? overrides : null);
29027
29054
  const activeRemote = remote && remote.organisationUuid === orgUuid ? remote.response : null;
29028
- const settings = (0, import_react78.useMemo)(
29055
+ const settings = (0, import_react79.useMemo)(
29029
29056
  () => resolvePrivacyCenterSettings(activeRemote == null ? void 0 : activeRemote.settings, overrides),
29030
29057
  // eslint-disable-next-line react-hooks/exhaustive-deps
29031
29058
  [activeRemote, overridesKey]
29032
29059
  );
29033
- const brandContact = (0, import_react78.useMemo)(
29060
+ const brandContact = (0, import_react79.useMemo)(
29034
29061
  () => resolveBrandContact(activeRemote == null ? void 0 : activeRemote.brand_contact),
29035
29062
  [activeRemote]
29036
29063
  );
@@ -29039,16 +29066,16 @@ var PrivacyCenterSettingsProvider = ({
29039
29066
  );
29040
29067
  const isCustomised = isPublished || hasHostOverrides(overrides);
29041
29068
  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]
29069
+ const value = (0, import_react79.useMemo)(
29070
+ () => ({ settings, status, isCustomised, organisation, builtInSignIn, brandContact }),
29071
+ [settings, status, isCustomised, organisation, builtInSignIn, brandContact]
29045
29072
  );
29046
29073
  return /* @__PURE__ */ (0, import_jsx_runtime102.jsx)(PrivacyCenterSettingsContext.Provider, { value, children });
29047
29074
  };
29048
29075
  var languagePolicyOwner = null;
29049
29076
  var useLanguagePolicy = (settings, isCustomised) => {
29050
- const [ownerId] = (0, import_react78.useState)(() => /* @__PURE__ */ Symbol("language-policy"));
29051
- (0, import_react78.useEffect)(() => {
29077
+ const [ownerId] = (0, import_react79.useState)(() => /* @__PURE__ */ Symbol("language-policy"));
29078
+ (0, import_react79.useEffect)(() => {
29052
29079
  if (languagePolicyOwner === null) {
29053
29080
  languagePolicyOwner = ownerId;
29054
29081
  }
@@ -29059,7 +29086,7 @@ var useLanguagePolicy = (settings, isCustomised) => {
29059
29086
  };
29060
29087
  }, [ownerId]);
29061
29088
  const policyKey = isCustomised ? JSON.stringify(settings.languages) : "";
29062
- (0, import_react78.useEffect)(() => {
29089
+ (0, import_react79.useEffect)(() => {
29063
29090
  if (!policyKey || languagePolicyOwner !== ownerId) {
29064
29091
  return;
29065
29092
  }
@@ -29072,7 +29099,7 @@ var useLanguagePolicy = (settings, isCustomised) => {
29072
29099
 
29073
29100
  // src/RedactoPrivacyCenter/context/PrivacyCenterScopeContext.tsx
29074
29101
  var React3 = __toESM(require("react"));
29075
- var import_react79 = require("react");
29102
+ var import_react80 = require("react");
29076
29103
 
29077
29104
  // src/shared/appearance/scopedCss.ts
29078
29105
  var escapesScope = (style) => {
@@ -29110,7 +29137,7 @@ var PC_CUSTOM_CSS_ATTRIBUTE = "data-redacto-pc-css";
29110
29137
  var fallbackScopeCounter = 0;
29111
29138
  var useScopeId = () => {
29112
29139
  const reactUseId = React3.useId;
29113
- const [fallback] = (0, import_react79.useState)(() => {
29140
+ const [fallback] = (0, import_react80.useState)(() => {
29114
29141
  fallbackScopeCounter += 1;
29115
29142
  return `pc-${fallbackScopeCounter}`;
29116
29143
  });
@@ -29135,7 +29162,7 @@ var PrivacyCenterRoot = ({ children }) => {
29135
29162
  css: customCss
29136
29163
  });
29137
29164
  }, [customCss, id]);
29138
- const value = (0, import_react79.useMemo)(() => ({ id, dir }), [id, dir]);
29165
+ const value = (0, import_react80.useMemo)(() => ({ id, dir }), [id, dir]);
29139
29166
  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
29167
  };
29141
29168
 
@@ -32270,7 +32297,7 @@ function SettingsAppearance({ children }) {
32270
32297
  function RedactoPrivacyCenter({
32271
32298
  baseUrl,
32272
32299
  ledgerBaseUrl,
32273
- slug,
32300
+ slug = "",
32274
32301
  accessToken,
32275
32302
  refreshToken,
32276
32303
  token,
@@ -32297,13 +32324,12 @@ function RedactoPrivacyCenter({
32297
32324
  PrivacyCenterSettingsProvider,
32298
32325
  {
32299
32326
  baseUrl,
32300
- slug,
32301
32327
  accessToken,
32302
32328
  organisationUuid,
32303
32329
  workspaceUuid,
32304
32330
  overrides: settings,
32305
32331
  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)(
32332
+ 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
32333
  AuthProvider,
32308
32334
  {
32309
32335
  accessToken,
@@ -32314,7 +32340,6 @@ function RedactoPrivacyCenter({
32314
32340
  sandboxMobile: mobile,
32315
32341
  organisationUuid,
32316
32342
  workspaceUuid,
32317
- slug,
32318
32343
  onError,
32319
32344
  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
32345
  }