@neofaceid/web-sdk 1.24.1 → 1.25.5

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.
@@ -1119,6 +1119,7 @@ var ErrorType = /* @__PURE__ */ ((ErrorType2) => {
1119
1119
  ErrorType2["CAPTURE_ERROR"] = "CaptureError";
1120
1120
  ErrorType2["NOT_FOUND"] = "NotFoundError";
1121
1121
  ErrorType2["UNKNOWN"] = "UnknownError";
1122
+ ErrorType2["CONSENT_DENIED"] = "ConsentDeniedError";
1122
1123
  return ErrorType2;
1123
1124
  })(ErrorType || {});
1124
1125
  class NeoFaceError extends Error {
@@ -1154,9 +1155,12 @@ class NeoFaceError extends Error {
1154
1155
  return "Não foi possível reconhecer seu rosto. Tente se posicionar em um local mais iluminado.";
1155
1156
  case "ValidationError":
1156
1157
  return "Dados inválidos ou rosto não detectado corretamente.";
1158
+ case "ConsentDeniedError":
1159
+ return "É necessário aceitar o uso do seu rosto para continuar.";
1157
1160
  case "ApiError":
1158
1161
  if (this.message.includes("400")) return "Requisição inválida. Tente novamente.";
1159
- if (this.message.includes("500")) return "Ocorreu um erro interno no sistema. Tente mais tarde.";
1162
+ if (this.message.includes("500"))
1163
+ return "Ocorreu um erro interno no sistema. Tente mais tarde.";
1160
1164
  return "O serviço encontrou um problema inesperado.";
1161
1165
  default:
1162
1166
  return "Ocorreu um erro inesperado. Por favor, tente novamente.";
@@ -5332,6 +5336,8 @@ function init(options = {}) {
5332
5336
  }
5333
5337
  if (applicationToken) {
5334
5338
  globalConfig.applicationToken = applicationToken;
5339
+ } else if (applicationToken === "") {
5340
+ console.warn("[NeoFaceID SDK] applicationToken vazio em init() — 401 esperado em chamadas autenticadas.");
5335
5341
  }
5336
5342
  globalConfig.initialized = true;
5337
5343
  console.log(`[NeoFaceID SDK] Inicializado - Ambiente: ${globalConfig.environment}, URL: ${globalConfig.baseUrl}`);
@@ -6023,6 +6029,9 @@ const registerPersonWithoutFace = async (personData, applicationToken, options)
6023
6029
  }
6024
6030
  ];
6025
6031
  }
6032
+ if (!applicationToken) {
6033
+ console.warn("[NeoFaceID SDK] registerPersonWithoutFace sem applicationToken — 401 esperado.");
6034
+ }
6026
6035
  const response = await fetch(`${getApiBaseUrl()}/api/v1/signup/donor/`, {
6027
6036
  method: "POST",
6028
6037
  headers: {
@@ -6157,6 +6166,9 @@ const registerPersonWithBiometric = async (personData, facePhotos, applicationTo
6157
6166
  }
6158
6167
  ];
6159
6168
  }
6169
+ if (!applicationToken) {
6170
+ console.warn("[NeoFaceID SDK] registerPersonWithBiometric sem applicationToken — 401 esperado.");
6171
+ }
6160
6172
  const response = await fetch(`${getApiBaseUrl()}/api/v1/signup/donor/`, {
6161
6173
  method: "POST",
6162
6174
  headers: {
@@ -6771,13 +6783,17 @@ const registerDocumentByImage = async (personId, jwtToken, images) => {
6771
6783
  throw new NeoFaceError("Unknown error occurred", ErrorType.NETWORK_ERROR);
6772
6784
  }
6773
6785
  };
6774
- const getTaskStatus = async (taskId) => {
6786
+ const getTaskStatus = async (taskId, applicationToken) => {
6775
6787
  const controller = createTimeoutController();
6788
+ {
6789
+ console.warn("[NeoFaceID SDK] getTaskStatus sem applicationToken — /tasks/status/ vai responder 401.");
6790
+ }
6776
6791
  try {
6777
6792
  const response = await fetch(`${getApiBaseUrl()}/api/v1/tasks/status/?task_id=${taskId}`, {
6778
6793
  method: "GET",
6779
6794
  headers: {
6780
- "Content-Type": "application/json"
6795
+ "Content-Type": "application/json",
6796
+ ...applicationToken ? { "X-App-Token": applicationToken } : {}
6781
6797
  },
6782
6798
  signal: controller.signal
6783
6799
  });
@@ -7193,6 +7209,11 @@ function FaceCaptureModal({ accessToken, onClose, onSuccess }) {
7193
7209
  ] })
7194
7210
  ] });
7195
7211
  }
7212
+ const markMonoSvg = '<svg xmlns="http://www.w3.org/2000/svg" aria-label="NeoFaceID" viewBox="-43.1 -71.1 1318.2 1318.2"><g fill="currentColor"><path d="M138.1 2a10 10 0 0 1-5.8 2c-1.9 0-6.1 1.3-9.2 2.8a94 94 0 0 1-11.1 4.7c-3 1-8.1 3.4-11.2 5.2a33 33 0 0 1-6.7 3.3c-.5 0-1.4.6-1.8 1.4s-2.4 2.1-4.3 3a39 39 0 0 0-11.7 7.8 18 18 0 0 1-5.6 3.8c-1.8 0-33.9 32.3-35.3 35.5a27 27 0 0 1-4.5 6.3c-2 2-4.6 5.4-5.8 7.4-1.3 2.1-2.6 3.8-3.1 3.8s-1.2 1-1.5 2.2c-1.1 3.6-9.6 20.7-10.6 21.4-.5.3-.9 1.6-.9 2.8 0 1.3-.6 3.9-1.4 5.7s-1.2 4.6-.9 6q.4 2.5-1.1 3.8-1.6 1.4-1.6 6.2c0 3.8-.4 5.2-2 6.1-2.6 1.7-3.2 211.1-.6 212.1.8.3 2.6 3.1 4.1 6.3 3 6.3 5.3 8.7 10.2 11 1.8.8 3.3 1.9 3.3 2.4 0 1.4 6 4.2 7.7 3.6.8-.3 2.7.1 4.3.9 3.5 1.8 10.3 2 13.3.3 1.2-.6 3.8-1 5.8-1 2.2.1 4.2-.4 5-1.4.7-.8 3.2-2.7 5.6-4.1 3.9-2.2 6.8-5.6 10.8-12.2l2.7-4.3c1.7-2.6 1.8-7.8 1.8-91.1 0-87.1 0-88.4 2-90.2 1.6-1.5 2-3.1 2-8.7 0-4.2.6-8 1.5-9.8.8-1.6 1.2-3.5.9-4.3-1.2-3.3 6.7-21.9 12.4-29.2 1.2-1.5 2.2-3.3 2.2-4 0-2.1 23.3-24 27.5-25.9a192 192 0 0 0 11.6-5.7c4.2-2.1 8.8-3.9 10.1-3.9a10 10 0 0 0 5.1-2q2.5-2 7-2c2.7 0 4.9-.6 5.7-1.5 1.1-1.3 13.8-1.5 98.4-1.8 107-.4 111.3-.7 118.2-6.8 1.1-1.1 2.7-1.9 3.5-1.9 2.7 0 11.7-10.4 15.8-18.3 4.9-9.4 5.8-18.8 2.1-22.2-1.1-1-2-2.8-2-4.1 0-2-3.5-8.6-5.7-10.6-4-3.7-8.7-7.1-11.7-8.3-2-.9-3.9-2.2-4.2-3-1.1-2.7-237.1-2.1-240.3.5m718.4 0c-1 1.1-2.7 2-3.7 2-2.4 0-12.8 9.7-12.8 12 0 1-.8 2.8-1.8 4.1-8.3 11.1-4.5 32.8 7.8 44.3a27 27 0 0 0 5.9 4.6 26 26 0 0 1 5.9 2.9c7.2 4.2 8.1 4.3 109.3 4.7 79.6.4 91.8.6 92.9 1.9.7.9 2.9 1.5 5.5 1.5q4.2 0 6.5 2c1.3 1.1 3.6 2 5.1 2s3.1.4 3.4 1 1.7 1 3.1 1c1.3 0 3.2.4 4.2 1s2.8 1.5 4.2 2c2.7 1.1 7.2 3.8 14.4 8.6 5.7 3.9 22.6 20.8 22.6 22.7 0 .8.9 2.2 2 3.2a57 57 0 0 1 9 16c.6 1.8 1.8 3.9 2.6 4.5.7.7 1.4 2.7 1.4 4.5s.7 3.8 1.5 4.5q1.5 1.3 1.5 6.7c0 3 .5 6.3 1.1 7.4.7 1.3 1 29.4.9 87.7 0 74.6.1 86 1.4 87.7.9 1.1 1.6 3.7 1.6 5.9 0 2.1 1 5.5 2.2 7.5 5.6 9.4 8.2 13.1 9.3 13.1.7 0 2 .9 3 2 8.7 9.7 33.6 11 42.3 2.4.7-.8 2-1.4 2.7-1.4 2.2 0 11.4-10.1 12.6-14a20 20 0 0 1 2.7-5.3q1.7-1.8 1.4-6.4c-.1-2.5.4-5.5 1-6.6a8 8 0 0 0 .9-4.5q-.1-2 .8-2.2c2 0 1.2-6.4-.9-7.8-1.9-1.1-2-2.3-2-16.7s.1-15.5 2-16.5c2.1-1.1 2.8-4 1-4q-.9-.1-1-1.5.1-1.4 1-1.5c2 0 1.1-7.4-1.1-8.8-2.9-1.8-2.6-38.5.4-40.6 2.1-1.6 2.2-5.5.1-7.1-2.6-1.9-3-9.8-.6-12.1 2.9-2.8 3-12 .2-12.7-2.6-.7-2.6-3.7 0-4.4 2-.5 2.9-3.3 1-3.3q-.9-.1-1-1.5.1-1.4 1-1.5c2.1 0 1.2-13.4-1-15.3-1.9-1.6-2.1-2.8-1.9-17.3.1-12.5-.2-15.9-1.4-17.2-.8-.9-1.7-3.7-2.1-6.2-1-8.8-1.8-11.9-3.2-13.1-.8-.6-1.4-2.6-1.4-4.5s-.4-3.5-.9-3.9-4.3-7.4-8.5-15.9a87 87 0 0 0-9-15.9 3 3 0 0 1-1.6-2.6c0-1-2.7-4.7-6-8.2s-6-6.8-6-7.4a177 177 0 0 0-23.9-23.5c-.7 0-3.5-2.3-6.3-5a31 31 0 0 0-5.8-5c-.5 0-3-1.7-5.7-3.9a32 32 0 0 0-7.1-4.5c-1.2-.4-2.2-1.2-2.2-1.7s-2.9-2.3-6.5-4a28 28 0 0 1-7-4 14 14 0 0 0-5-2c-2.5-.6-5-1.7-5.6-2.5S1110.5 8 1109 8s-3.9-.9-5.3-2q-2.5-2-7.1-2c-3.5 0-4.9-.5-5.8-2-2-3.1-231.4-3.2-234.3 0m-283 111.3c-1.8 1.1-8.2 1.8-31.4 3.3-4.9.3-9.4 1.2-10.5 2-1.2.8-4.5 1.4-7.9 1.4-4.3 0-6.5.5-8.4 2a6 6 0 0 1-5.4 1.3q-2.9-.5-5.4 1.1a10 10 0 0 1-4.5 1.6c-1.1 0-3.2.7-4.5 1.6q-2.6 1.6-5.4 1.1-3-.6-5.4 1.3c-1.4 1.1-3.9 2-5.5 2s-3.5.7-4.2 1.5-2.2 1.5-3.4 1.5-4.5 1.1-7.4 2.5-6.3 2.5-7.4 2.5-3.1.9-4.5 2-3.8 2-5.3 2-3.3.6-3.9 1.4-3.5 2-6.4 2.6a47 47 0 0 0-13.7 5.9c-.8.5-4.6 2.4-8.5 4.1a54 54 0 0 0-10 6 15 15 0 0 1-5.9 3.4c-1.7.4-5.2 2.5-7.9 4.7a25 25 0 0 1-6.1 3.9c-.7 0-2.5 1.4-4.2 3.1a30 30 0 0 1-6.4 4.9c-1.9 1-6.4 4.8-10 8.4a33 33 0 0 1-7.8 6.6 211 211 0 0 0-28.2 27.7c0 .8-2.6 4.2-5.7 7.7-3.2 3.5-7.7 9.5-10.1 13.3a54 54 0 0 1-6.2 8.8q-1.8 1.7-2 2.8a69 69 0 0 1-8.9 17c-1 .6-2.1 2.7-2.4 4.6-.6 2.9-4.2 11-7.5 17.1a27 27 0 0 0-4.2 10.5c0 1.3-.4 2.7-1 3s-1 1.9-1 3.5-.7 3.5-1.5 4.4c-.8.8-1.5 2.8-1.5 4.4s-.6 3.5-1.4 4.1a9 9 0 0 0-2.1 4.4c-.4 1.8-1.8 6.4-3.1 10.4a47 47 0 0 0-2.4 10c0 1.6-.7 3.8-1.5 4.9a17 17 0 0 0-1.5 7.5q0 5.7-1.5 6.9c-.9.7-1.5 2.9-1.5 5.2a18 18 0 0 1-1.6 7 14 14 0 0 0-1.1 8.4c.4 3.9.1 5.8-1.1 7.5s-1.7 4.8-1.7 12.6c-.1 8.2-.4 10.5-1.8 12.1s-1.7 4.1-1.7 16.4c0 12-.3 14.8-1.6 15.8-1.3 1.2-1.5 4.5-1.3 23.8.2 25.1.5 24.2-7.2 24.2q-4.5 0-5.9 1.5c-.7.8-2.4 1.5-3.8 1.5-6.1 0-29.2 19.2-29.2 24.3 0 .9-.9 2.3-2.1 3.1-2 1.4-5.9 11-5.9 14.6 0 .9-.7 2.5-1.5 3.6-1 1.3-1.4 4.5-1.5 10.5 0 7.1-.4 9.1-2 11.2-2.8 3.5-2.8 13.4 0 17 1.8 2.3 2 4 2 20.9 0 13.4.3 18.7 1.3 19.6.6.7 1.5 5.6 2 11 1.5 19.4 1.9 22.1 3.3 23.3.8.7 1.4 3 1.4 5.6q0 4.4 2 7.1 2.1 2.5 1.5 5.1-.5 2.6 1.5 6.4c1.1 2.1 1.8 4.3 1.4 4.9a39 39 0 0 0 4.3 15.3 10 10 0 0 1 1.3 4.6c0 1.5.6 3.2 1.4 3.8.8.7 2.6 4.8 4 9.3 1.5 4.4 3.5 9.2 4.6 10.5s2 3.1 2 3.8c0 2.8 22.8 28.5 25.4 28.5.5 0 1.7.6 2.5 1.3 2.6 2.1 10.9 3.9 13.1 2.7 1-.5 3.7-1 5.9-1s4.3-.5 4.6-1c1.6-2.6 3.3-.8 3.8 4.2.9 9.1 2.3 15.8 3.5 17 .7.7 1.2 3.7 1.2 6.7q0 5.5 1.7 7.3c.9 1 1.6 3.3 1.5 5.1 0 1.7.6 4.8 1.3 6.7s2.3 6.7 3.5 10.7c1.1 4 2.5 7.5 3 7.8s1 2.1 1 3.9c0 1.9.7 3.9 1.5 4.6s1.5 2.5 1.5 4.1.4 3.1 1 3.4 1 1.7 1 3c0 1.9 3.7 10 9 19.5l7.5 15c3.7 7.4 7.2 13.8 7.8 14.2a10 10 0 0 1 2.6 3.5 83 83 0 0 0 8.9 13.5c1.7 2.2 3.2 4.5 3.2 5.2s1.8 3 4 5.1 4 4.6 4 5.5c0 2 54.1 56 56.1 56 .8 0 3.1 1.6 5 3.6a86 86 0 0 0 16.8 12.3 43 43 0 0 1 5.9 4.3 15 15 0 0 0 4.2 2.8c.4 0 2.1 1.1 3.7 2.4 1.5 1.3 3.9 2.7 5.2 3.1a71 71 0 0 1 10.5 6.1c4.4 3 8.6 5.4 9.5 5.4 1.4 0 9 4.6 10.2 6.3.8 1 7.6 4.4 11.5 5.7a11 11 0 0 1 4.4 2.6c.7.7 2.2 1.4 3.3 1.4 1.9 0 9.3 2.9 12.7 5.1l5 2.5 6.2 3c1.4.8 3.7 1.4 5 1.4 1.4 0 3.3.9 4.3 2 1.1 1.2 3.1 2 5.1 2 1.8 0 3.6.4 3.9 1s1.8 1 3.3 1 3.6.7 4.6 1.5c1.1.8 3.9 1.5 6.2 1.5 2.5 0 4.7.6 5.4 1.5q1.3 1.4 6 1.5 4.6 0 6 1.5c1 1.1 3.6 1.5 11.4 1.5q10.2 0 12.6 1.5c3.7 2.1 47.3 2.1 51.4 0q2.8-1.5 11.1-1.5c6.1 0 8.6-.4 9.5-1.5q1.3-1.4 6-1.5 4.6 0 6-1.5c.7-.8 2.9-1.5 4.9-1.5s4.9-.7 6.5-1.5 3.9-1.5 5.2-1.5c1.2 0 2.6-.5 2.9-1s1.9-1 3.4-1 3.8-.9 5.1-2 3.3-2 4.4-2 3.9-.9 6.1-2 5.5-2.3 7.4-2.6a35 35 0 0 0 8.2-3.4c2.5-1.5 5.7-3.1 7-3.5a13 13 0 0 0 3.9-2c.8-.7 4.4-2.5 8-4.1s7.6-3.6 8.9-4.6 3.1-1.8 4.1-1.8 3.7-1.5 6.1-3.4 6.6-4.6 9.3-6a52 52 0 0 0 9.2-6.6c2.4-2.2 5-4 5.7-4s2.2-.9 3.2-2 2.5-2 3.2-2 4.3-2.7 7.7-6 6.8-6 7.5-6 6.8-5.4 13.6-12 13-12 13.9-12 2.6-1.6 3.8-3.6c1.1-1.9 3.2-4 4.4-4.5s2.4-1.7 2.4-2.6 5.4-7.2 12.1-13.8S877 941.9 878 940s3.3-4.9 5-6.5c1.8-1.7 4.7-5.3 6.4-8s4-5.6 4.9-6.4c1-.7 1.7-2.1 1.7-3 0-1 1.1-2.8 2.5-4.1s2.5-2.9 2.5-3.6a13 13 0 0 1 2.8-4.6 97 97 0 0 0 8.9-13.3c.7-1.1 3.5-6.7 6.3-12.5a180 180 0 0 1 6.1-12 84 84 0 0 0 7.9-18.6c0-1.2.5-2.6 1.1-2.9a43 43 0 0 0 5.9-12.6c0-1.6 1.9-7.8 3.2-10.3.5-1 1.1-3.8 1.3-6.3a12 12 0 0 1 1.9-6.2c.9-1 1.6-3.1 1.6-4.8s.7-3.6 1.6-4.4q1.6-1.3 1.1-4.8a20 20 0 0 1 1-7.5c.7-2.1 1.3-5.2 1.3-6.8q.1-8.7 9.6-8.8 12.4 0 28-15.8a56 56 0 0 0 14.3-21.2c.6-1.4 2.4-4.8 4-7.5a22 22 0 0 0 3-7.7c.1-1.5.6-3 1.1-3.3s1-1.9 1-3.4.7-3.6 1.5-4.7c.8-1 1.5-3.1 1.5-4.5 0-1.5.7-3.2 1.5-3.9q1.5-1.2 1.5-7.2c0-4.5.5-6.6 2-8.5s1.9-3.4 1.4-6q-.6-3.4 1.1-8a20 20 0 0 0 1.1-10.5c-.4-4.6-.2-6.5 1.1-8.4s1.6-5 1.6-14.7c-.1-10.3.2-12.7 1.8-15.3 3-4.9 2.9-48.9-.1-52.7-1.7-2.2-2-3.6-1.5-8.4.4-4.3.1-6.4-1-7.9a8 8 0 0 1-1.5-4.2c-.1-11.9-25.4-37-37.5-37.2-1.1 0-2.9-.7-3.9-1.5a9 9 0 0 0-4.7-1.5c-3.9 0-4-1.1-3.8-25 .1-18.7-.1-22-1.5-24.9-1.5-2.7-1.7-5.6-1.5-16q.3-12.7-.9-14.8a44 44 0 0 1-1.2-13c0-8.1-.4-11.4-1.5-12.9a17 17 0 0 1-1.5-7.5q0-5.7-1.5-6.9t-1.5-6.9c0-3.2-.6-6.5-1.4-7.6s-1.6-4.7-1.9-8c-1.1-10.7-2.3-16-4-18.5-.9-1.3-1.7-3.6-1.7-5s-.7-3.4-1.5-4.4a9 9 0 0 1-1.5-4.7c0-1.5-.4-3.1-1-3.4s-1-1.7-1-3-1.4-4.7-3.1-7.6a36 36 0 0 1-3.6-8.3c-.3-1.7-2.3-6.5-4.4-10.7a53 53 0 0 1-3.9-8.4 59 59 0 0 1-5.6-10.5 53 53 0 0 0-4.6-8.9 9 9 0 0 1-1.8-4.2c0-1-.9-2.3-1.9-2.9-1.1-.5-2.3-2-2.7-3.2s-1.8-3.7-3.3-5.4a59 59 0 0 1-4.6-6.5l-3.8-6.4c-1-1.6-5-6.2-8.8-10a36 36 0 0 1-6.9-8.5c0-1.9-14-16-15.9-16-.7 0-5.3-3.8-10-8.5a69 69 0 0 0-9.7-8.5c-.5 0-3.4-2.2-6.5-4.8a81 81 0 0 0-14.8-10.1q-2.5-1.4-3.1-2.2c-.9-1.4-7.7-5.7-10.1-6.4-1.3-.4-3.5-1.8-4.9-3a32 32 0 0 0-7.3-4.5c-2.6-1.2-5-2.6-5.3-3.1q-.6-.8-2.3-.9c-1 0-3-.9-4.4-2s-3.9-2-5.5-2a7 7 0 0 1-4.2-1.4c-.6-.8-3.4-2.2-6.1-3.1s-5.1-2.1-5.4-2.6-1.9-.9-3.4-.9-3.8-.9-5.1-2a9 9 0 0 0-4.7-2c-1.3 0-3.1-.4-4.1-.9a54 54 0 0 0-7.7-2.6c-3.3-.9-7.3-2.3-8.8-3.1s-3.8-1.4-5-1.4-3.5-.9-5.2-2c-1.6-1.1-4.2-2-5.7-2s-3-.5-3.3-1-1.7-1-3.1-1-3.6-.7-4.9-1.6q-2.6-1.6-5.4-1.1-3 .6-5.4-1.3-2.5-2-7.7-2c-2.8 0-6.1-.6-7.3-1.2-2.4-1.4-13.5-2.6-32.4-3.4-8.8-.4-12.5-1-13.4-2-1.6-1.9-67.3-2-70.4-.1m85.7 55.8c.9.5 4.5.9 8 .9 3.9.1 7 .6 8.2 1.5s4.2 1.5 7 1.5c2.9 0 5.9.7 7 1.5s3.8 1.5 6.1 1.5 4.6.5 5.3 1.2c1.1 1.1 7.2 2.4 16.4 3.5 2.6.2 5.2 1.1 5.9 1.9.6.8 2.2 1.4 3.6 1.4s4.1.9 6.1 1.9a59 59 0 0 0 20 7.1c1.1 0 2.3.4 2.6.8.7 1.2 15.1 8.2 16.7 8.2 2 0 10.9 4.3 10.9 5.2 0 .5 2.8 2.3 6.3 3.9 6 2.9 10.8 5.6 15.8 9 6.6 4.4 8.4 5.6 11.4 7.4 9.8 6 15.6 11 31 26.7S872 280.6 872 283c0 .5 1.1 2.2 2.5 3.8s3.4 5.1 4.5 7.7 2.7 5.3 3.5 5.9a67 67 0 0 1 9.5 18.9c0 1.3.8 3.4 1.7 4.7a42 42 0 0 1 6.3 14.5c0 1.2.9 3.4 2 4.8s2 3.9 2 5.5.6 3.5 1.4 4.1c.8.7 1.7 3.3 2 5.9.9 8.6 1.8 12.1 3.2 13.3.8.7 1.4 3 1.4 5.7q0 4.4 1.8 6.5c1.2 1.3 1.7 3.6 1.7 7.7.1 3.5.7 6.5 1.5 7.5 1 1.2 1.3 3.8 1.1 9s.2 8.2 1.4 10.5c1.3 2.5 1.6 5.5 1.4 13.5-.3 8.7-.1 10.7 1.4 12.3 1.6 1.7 1.7 6.4 1.7 61.6 0 69.2-.3 66.6 9.1 71.9 5.5 3.1 7.9 3.3 11.7 1.3 1.5-.8 3.9-1.7 5.4-2s6.4-4.3 11.4-9.1c4.8-4.7 9.4-8.5 10.2-8.5 1.8 0 7.3 4.5 8.9 7.4 2 3.4 1.8 49.5-.2 53.2-1.1 2.1-1.5 6.1-1.5 14 0 8.7-.3 11.4-1.5 12.4s-1.5 3.5-1.5 10.5-.4 9.6-1.5 10.5c-.8.7-1.5 2.8-1.5 4.7s-.7 4.8-1.6 6.5-1.3 4-1 5.1-.2 3.3-1 5c-.9 1.6-1.7 4.8-1.9 7.1-.1 2.5-1.6 6.5-3.7 10.1-2 3.3-3.9 7.1-4.3 8.5-1.7 5.9-7.8 9.7-10.5 6.5a6 6 0 0 0-3.9-1.5c-1.5 0-3.6-.7-4.9-1.5-1.9-1.4-2.4-1.4-5.1 0-1.7.8-4.6 1.5-6.5 1.5-5.7 0-16.5 12.6-16.6 19.3 0 1.2-1.2 4-2.5 6.2a16 16 0 0 0-2.5 8.6q0 4.5-1.5 5.9-1.5 1.2-1.5 7c0 4.1-.5 6.4-1.9 8.1a17 17 0 0 0-2.4 6.9 66 66 0 0 1-4.7 20.7c-.6 2.3-1.5 4.5-2 4.8s-1 1.9-1 3.4c0 1.6-.9 3.9-1.9 5.3a14 14 0 0 0-2.6 5.4 61 61 0 0 1-5.9 14.4c-.7.8-2.5 4.4-4.1 8a52 52 0 0 1-4.1 8.1c-.8.8-1.4 2.2-1.4 3 0 1.4-6.6 12.3-11.9 19.5a56 56 0 0 0-4.6 8c-.9 2.2-3.8 6.1-6.4 8.9a40 40 0 0 0-6.4 8c-.9 1.6-3.6 5-6.1 7.5-2.5 2.4-4.6 5.1-4.6 5.9 0 1.9-41 43.1-42.8 43.1-.8 0-3.9 2.4-7 5.4-3.1 2.9-7 6-8.7 6.9-1.6.8-4.3 2.9-5.9 4.6s-3.4 3.1-3.9 3.1a26 26 0 0 0-5.9 4 28 28 0 0 1-6 4c-.6 0-2.3 1.1-4 2.5-1.6 1.4-3.5 2.5-4.2 2.5s-2.1 1-3.2 2.1c-1 1.2-4.2 3.2-7 4.4a21 21 0 0 0-5.8 3.4 3 3 0 0 1-2.2 1.1c-.9 0-4.2 1.6-7.5 3.5a44 44 0 0 1-8.7 4.1c-1.5.4-3.6 1.4-4.7 2.3q-3.8 3.1-16.5 6.7c-3.6.9-6.9 2.1-7.5 2.6s-2.1.8-3.5.8a9 9 0 0 0-4.9 1.9q-2.2 2-6.7 1.8c-2.8 0-5.1.6-6 1.5-1.2 1.2-3.1 1.4-8.4 1-5-.3-7.6 0-10 1.2-4.7 2.3-40.6 2.4-47.1.1a30 30 0 0 0-10.4-1.3c-3.3.1-7-.4-8.2-1s-3.7-1.2-5.5-1.2-5-.9-7.1-2-4.8-2-6.2-2c-3.3 0-17.6-4.8-19.6-6.6-.8-.8-2.9-1.4-4.6-1.4a7 7 0 0 1-4.7-1.9c-.9-1-3-2.1-4.5-2.4s-5.5-2.2-8.9-4.1c-3.3-2-7.2-3.6-8.6-3.6s-3.4-.8-4.4-1.8-3.6-2.7-5.7-3.9a110 110 0 0 1-16.1-9.2 10 10 0 0 0-3.7-2.1c-.5 0-2.4-1.2-4.2-2.7-3-2.6-6.6-5-12.4-8.2-1.5-.8-2.8-1.7-3.1-2a39 39 0 0 0-8.7-6.1c-.5 0-2.2-1.4-3.9-3.1a24 24 0 0 0-5.9-4.6 156 156 0 0 1-18.2-15.6c-10.8-11-22.4-24-24.1-26.7a51 51 0 0 0-6.6-8c-2.5-2.4-4.6-5.2-4.6-6.1s-.9-2.4-2-3.4-3.9-4.9-6.2-8.7c-2.4-3.9-5.6-8.5-7.1-10.3a29 29 0 0 1-4.3-7.9c-.9-2.4-2.2-5-3-5.7-.8-.6-1.4-1.7-1.4-2.4a19 19 0 0 0-3.5-5.6c-1.9-2.4-3.8-6-4.1-7.9a50 50 0 0 0-3.8-9.5 54 54 0 0 1-4.6-12 54 54 0 0 0-2.7-8.5c-.7-1.4-1.3-3.4-1.3-4.5a12 12 0 0 0-2-5q-1.8-2.9-1.4-5.2c.3-1.2-.1-3.6-1-5.4s-1.6-4.4-1.6-5.9-.7-4.5-1.6-6.5c-1-2.4-1.3-5.1-.9-7.2.4-2.5.1-4-1.4-6q-2.1-2.6-2.1-6.8c0-2.6-.6-4.8-1.5-5.5s-1.5-2.7-1.5-4.6-.4-3.6-1-3.9-1-1.9-1-3.4c0-1.7-1.3-4.3-3.3-6.7a20 20 0 0 1-4.1-6.8c-1.2-4.9-10.4-13.1-16.3-14.5a29 29 0 0 1-7-2.6c-2.6-2-6.7-1.8-11 .5-2.1 1.1-4.8 2-6 2s-2.5.4-2.8 1c-.9 1.5-4.5 1.2-4.5-.4 0-.7-.9-2.5-2-3.9s-2-3.8-2-5.3-.6-3.5-1.4-4.3a75 75 0 0 1-6.3-17.6c-.3-1.7-1.4-4-2.4-5.3a6 6 0 0 1-1.3-5.1c.4-1.7-.1-4.1-1-5.9-.9-1.7-1.6-4.4-1.6-6s-.7-4.6-1.5-6.6c-1-2.3-1.3-5-1-6.9.5-2.4.1-3.9-1.4-5.9-1.6-2-2.1-4.1-2.1-8.6q0-6-1.4-7.2c-2.3-1.8-4.1-57.3-2.1-66 1.9-8.9 10.6-10.9 15.2-3.7.5.7 3.6 3.1 7.1 5.4 11.5 7.8 33.2 5.3 33.2-3.7 0-.9.9-2.5 2-3.5 2-1.8 2-3 2-29.1-.1-17.4.3-28 .9-29.3.7-1.2 1.1-11.7 1.1-28.1 0-21.5.3-26.6 1.5-29.1 1.2-2.2 1.5-5.7 1.4-13.5-.1-8.4.2-10.8 1.5-12.3 1.1-1.3 1.6-3.7 1.6-8.7 0-5.2.5-7.6 2-9.9a8 8 0 0 0 1.4-6.2c-.4-2 0-4.9 1-7.4.9-2.3 1.4-4.9 1.1-5.8s.4-3.4 1.4-5.4c1.3-2.6 1.7-4.9 1.4-7.8-.5-3.1-.1-4.7 1.6-6.9 1.1-1.6 2.1-3.9 2.1-5.2a8 8 0 0 1 1.5-4.2 9 9 0 0 0 1.5-4.7c0-1.5.5-3.1 1-3.4s1-1.7 1-2.9a33 33 0 0 1 3.5-9c1.9-3.7 3.5-7.5 3.5-8.5a244 244 0 0 1 29.7-52.3c2.4-2.7 4.3-5.4 4.3-6 0-1.6 23.2-24.8 24.8-24.8.7 0 4.8-3.3 9.1-7.3 4.2-3.9 9-8 10.6-8.9l9.7-6c1.5-1 3.3-1.8 4.1-1.8s2.2-.9 3.2-2 4.1-3.1 6.9-4.5 5.8-2.9 6.6-3.5l11.5-5.6a139 139 0 0 0 11.5-5.9c.8-.7 2.9-1.5 4.5-1.8a53 53 0 0 0 16.6-5.6c3.4-1.7 7.7-3.1 9.5-3.1a16 16 0 0 0 6.1-1.4 36 36 0 0 1 12-3.6 5 5 0 0 0 3.3-1.5q1.2-1.5 6.9-1.5c3.5 0 6.5-.6 7.7-1.5 1-.8 4.1-1.5 6.7-1.5s5.8-.6 7-1.2c3.7-2.1 18.4-3 63.7-3.6 43.8-.7 48.1-.6 51.2.9"/><path d="M752.5 559.1c-2.7 1.6-6.2 3.5-7.7 4.2a42 42 0 0 0-14.3 14.5c-.3 1.5-1.2 4-2 5.5-2.8 5.5-2.1 30 1 33.3 1.4 1.5 2.5 3.1 2.5 3.7 0 3 6.7 8.6 16 13.4 5.7 2.9 30.7 3.5 33 .8.7-.8 1.9-1.5 2.7-1.5 3 0 12.3-10.4 16.3-18.3 4.5-8.9 5.8-22.7 2.5-28.5-.8-1.5-1.9-4.6-2.5-7-1.2-4.8-8.3-13.8-11.7-14.7-1.2-.4-2.9-1.5-3.9-2.6-.9-1-3-1.9-4.5-1.9-1.6 0-4.3-.9-6.1-2-5.2-3.2-14.9-2.7-21.3 1.1m-296.1 7.1a8 8 0 0 1-4.2 1.8c-1.2 0-2.4.5-2.7 1s-2.4 1.9-4.5 3-4.3 3.1-4.9 4.7c-.6 1.5-2.7 5-4.6 7.8-3.1 4.4-3.5 5.7-3.5 11.1 0 4.8-.4 6.5-2 7.9-1.5 1.3-2 3.1-2 6.6 0 3.8.4 5.1 2 5.9q2 1 2 4.5c0 6 8.1 16.2 17.8 22.3 5.4 3.4 28.3 3 33.1-.6 1.7-1.2 3.7-2.2 4.5-2.2s2.3-1.1 3.3-2.5l5.3-7.3c6.6-8.9 7-10.4 7-24.3 0-10-.3-12.9-1.5-13.9a6 6 0 0 1-1.5-3.9c0-3.6-16.4-20.1-19.9-20.1-1.4 0-3.2-.6-4-1.4-2.6-2.3-16.9-2.6-19.7-.4M597.5 601c-11.1 1-12.2 1.7-17 12l-3.1 6.3a19 19 0 0 0-1.4 7.1q0 4.3-2 6.9-2 2.5-2 6.9c0 2.4-.6 5.3-1.4 6.4-1.6 2.2-2.3 11.4-3.2 38.4-.5 16.2-.4 16.6 2.2 23 3 7.2 9.9 14.6 14.6 15.6 1.5.4 3.3 1.3 3.9 2 2.6 3.2 12.1 6.6 16.7 6.1 2.7-.3 6.2.1 8.5.9 4.8 1.7 12 1.8 14.9.3 1.2-.6 3.9-1.1 6.2-1.1 11.1.2 21.1-15.1 16.1-24.7-3.7-7.3-6-8.1-23.6-8.1-15.9 0-15.9 0-18.9-4.2-3.8-5.2-4.3-14.3-1-18.5 1.6-2.1 2-4.1 2-10.7 0-5.2.5-8.7 1.2-9.4a21 21 0 0 0 2-8c1.3-12.3 2.4-18.2 3.6-19.4.8-.8 1.2-4.6 1.2-10.5 0-9.2 0-9.2-4.5-13-5.7-4.8-6.5-5-15-4.3m138.9 189.1c-.9 1-2.4 1.9-3.3 1.9s-4.1 2.5-7.1 5.5-6 5.5-6.6 5.5c-.7 0-2.6 1.1-4.2 2.5a14 14 0 0 1-3.7 2.5c-.5 0-2.7 1.6-5.1 3.5-2.4 2-5.8 4.1-7.6 4.7s-5.4 2.4-7.9 3.9-5.7 3-7 3.4a13 13 0 0 0-3.9 2c-1.4 1.2-3.4 1.7-11.7 3.2-1.8.3-3.8 1.1-4.4 1.9s-3 1.4-5.6 1.4a11 11 0 0 0-6.8 1.9c-1.9 1.4-3.5 1.7-7.2 1.4q-4.9-.4-8.7 1.1c-5.5 2.3-56.5 2.4-61.9.1-2-.8-6.5-1.5-10-1.5q-6.5 0-7.7-1.5c-.7-.9-2.9-1.5-5.4-1.5-2.3 0-5.1-.7-6.2-1.5-1-.8-3.1-1.5-4.6-1.5s-3-.5-3.3-1-2-1-3.7-1c-1.6 0-4.1-.9-5.5-2a9 9 0 0 0-3.8-2c-.6 0-2-1-3.1-2.1-1-1.2-4.2-3.2-7-4.4a54 54 0 0 1-14.1-11.3 66 66 0 0 0-14.3-11.7q-1.3-1.5-6.5-1.5c-7.1 0-18.5 11.1-18.5 17.9 0 3.8 4 13.3 6 14.6.6.4 1.9 2.3 2.9 4.4 2.3 4.3 15.8 17.9 22.8 22.6 6.6 4.5 30.6 16.5 33 16.5 1.2 0 2.6.6 3.2 1.4 1.2 1.4 4.7 2.3 13.3 3.2 2.6.3 5.2 1.2 5.9 2q1.2 1.4 6.6 1.4c3.4 0 6.8.7 9.3 2 6.1 3.1 76.3 3.1 80.3 0 2-1.6 4-2 9.5-2q7 0 8.1-1.4c.7-.8 3.3-1.6 5.9-1.9 7.5-.9 11.6-1.8 13.2-3.2.8-.7 2.9-1.5 4.5-1.8a130 130 0 0 0 35.5-16.2 32 32 0 0 1 7.1-4c1.4-.3 3.9-1.9 5.4-3.5s3.5-3 4.4-3c2.3 0 22.1-20.8 24.2-25.4 3.9-8.6.4-19.7-8-25.3-3.9-2.5-14.5-2.7-16.7-.2M29 793.5c-1.4.8-3.5 1.4-4.8 1.5-1.2 0-3.2 1.1-4.4 2.5s-2.9 2.5-3.7 2.5c-2.7.1-7.6 5.4-10.7 11.5a22 22 0 0 1-4.1 6.2c-2.5 1-1.8 217 .7 218.3 1.6.8 2 2.1 2 5.9q0 4.8 1.5 6.1c.8.7 1.5 2.7 1.5 4.4 0 1.9 1.1 4.7 2.5 6.6s2.5 4.4 2.5 5.5c0 2.9 7.2 17.1 9.9 19.6 1.2 1.1 2.1 2.6 2.1 3.3 0 1.2 1.9 4 8.2 12 1.3 1.7 2.8 4 3.3 5.3 1.4 3.3 32.4 34.2 36 35.9 3.3 1.6 8.5 5.1 12.9 8.9 1.5 1.4 3.4 2.5 4 2.5a158 158 0 0 1 20.6 10.2c1.4.8 6.6 2.7 11.5 4.3s10.2 3.3 11.7 4.1c1.4.8 4.8 1.4 7.5 1.4q4.8 0 7.8 2c4.7 3.1 225.2 3.1 228 0 1-1.1 2.9-2 4.2-2 4.8 0 13.9-8 20.9-18.5 4.7-6.9 5.1-22.7.7-30.3a47 47 0 0 0-29.3-22.8c-2.5-.4-48.2-.8-101.6-1.1-84.6-.3-97.3-.5-98.4-1.8q-1.2-1.5-7.6-1.5c-4.1 0-7.9-.7-10.6-1.9-2.4-1.1-7.7-2.9-11.8-4.2-4.1-1.2-8.6-3-9.9-4a8 8 0 0 0-4.1-1.9c-.9 0-2.6-1.1-3.8-2.5s-2.9-2.5-3.7-2.5c-1.8 0-23.5-20.8-23.5-22.6 0-.7-1-2.5-2.3-4.1a37 37 0 0 1-3.5-5.3l-3.7-7a37 37 0 0 1-3.1-8.3c-.4-2-1.1-4-1.5-4.3-.5-.3-.9-1.8-.9-3.3s-.5-3.2-1.1-3.8a51 51 0 0 1-1-15c.2-12.6 0-14.2-1.9-16.5-2-2.6-2-3.6-2-85.7 0-83.1 0-83.1-3.5-90.1-4.8-9.6-16-18-24-18-1.2 0-2.8-.7-3.5-1.5-1.6-2-12.6-2-16 0m1154 5c-1.4.8-3.6 1.4-5 1.5-2.8 0-12.5 5.9-15.3 9.3a37 37 0 0 0-6.7 11c0 .8-.9 2.2-2 3.2-1.6 1.4-2 3.1-2 7.9 0 3.8-.6 7-1.5 8.3-1.3 1.8-1.5 13.4-1.4 87.7 0 58.2-.3 86.2-1 87.5-.6 1.1-1.1 4.4-1.1 7.4q0 5.5-1.5 6.7c-.8.7-1.5 1.9-1.5 2.7s-.9 2.6-2 4c-1.2 1.5-1.8 3.4-1.5 4.4q.5 1.8-1.4 3.8a21 21 0 0 0-3.6 5.3l-3.3 6.5a72 72 0 0 1-16.4 16.3c-.7 0-3.1 1.7-5.2 3.7a47 47 0 0 1-9.2 6.4 68 68 0 0 0-6.6 3.6c-.7.6-3 1.6-5 2.2s-4.2 1.9-4.8 2.7c-.8.8-3.1 1.4-6 1.4q-4.8 0-7 2c-1.7 1.5-3.7 2-8 2-3.4 0-6.4.6-7.6 1.5-1.6 1.2-15.2 1.4-98.7 1.5-105.6 0-104.7 0-110.8 5.6-1.4 1.3-3 2.4-3.6 2.4-2.2 0-7.9 6.6-10.6 12.2-1.5 3.1-3.2 6-3.7 6.3-2.5 1.5-1.2 22.4 1.7 27.3 3.7 6.5 14 16.9 18.4 18.6 2 .8 3.9 2.2 4.2 3 1.1 2.8 231.7 2.3 234.2-.4q1.8-2 5.7-2c2.1 0 5.5-.9 7.5-2 2.1-1.1 4.3-2 5-2 1.8 0 16.6-5 17.9-6.1 2-1.6 18.8-9.9 20.1-9.9.7 0 2.1-.9 3.1-2.1.9-1.1 3.3-2.9 5.2-3.9s5.1-3.4 6.9-5.4 4.1-3.6 4.9-3.6c2.2 0 23.9-21.6 27.8-27.7 1.9-2.8 3.8-5.4 4.4-5.8a42 42 0 0 0 4.6-6.3l5.5-8.4a10 10 0 0 0 1.9-4.3c0-.8 1-2.5 2.3-3.7a31 31 0 0 0 6.7-13.5c0-1.2.5-2.5 1-2.8 2.6-1.6 5.4-11.2 6.7-22.7.2-2.6 1.1-5.2 1.9-5.9 1.1-.9 1.4-4 1.4-13 0-10.8.2-12 2-13.1 2.4-1.5 3.1-18.2.8-19.1q-1.5-.3-.1-2.5c1-1.6.9-2.3-.2-3.2-1.9-1.5-1.9-4.9-.2-5.6s2.2-13 .7-13.9q-.9-.6.2-2.5c.9-1.4.9-2.2-.1-3.4s-1.1-1.9-.2-3q1.4-1.3-.4-2.6c-1.9-1.6-1.9-5.9 0-6.6 2.6-1 2.2-26.5-.5-28.2q-1.8-1.2-2-2.2c0-.6.9-1.8 2-2.7 2.2-1.9 3.1-19.3 1-19.3-.5 0-1-1.1-1-2.4 0-1.4.5-2.8 1-3.1 2-1.2 1.2-12.9-1-14.3-1.9-1.2-2-2.3-2-26.1 0-15.8-.4-25.2-1-25.6s-1.7-2.2-2.5-4.1-1.8-3.4-2.4-3.4-1.4-1.5-2-3.3q-1.1-3.2-5.8-6.1a42 42 0 0 1-6.6-4.8c-1-1-2.8-1.8-4.1-1.8s-3.7-.7-5.2-1.5a22 22 0 0 0-15.4 0"/></g></svg>';
7213
+ const NEOFACEID_MARK_MONO_SVG = markMonoSvg;
7214
+ function brandMarkMono(sizePx = 18) {
7215
+ return `<span class="neoface-brand-mark" style="display:inline-flex;align-items:center;justify-content:center;width:${sizePx}px;height:${sizePx}px;color:currentColor;">${markMonoSvg}</span>`;
7216
+ }
7196
7217
  class ForgotPasswordModal {
7197
7218
  constructor(applicationToken) {
7198
7219
  __publicField(this, "applicationToken");
@@ -7251,7 +7272,7 @@ class ForgotPasswordModal {
7251
7272
  </button>
7252
7273
 
7253
7274
  <div class="neoface-forgot-branding">
7254
- <img src="/logo-icone-no-background.png" alt="NeoFaceId" class="neoface-forgot-brand-logo" onerror="this.style.display='none'" />
7275
+ ${brandMarkMono(18)}
7255
7276
  <span>NeoFaceId by</span>
7256
7277
  <span class="neoface-forgot-brand-name">OCTA</span>
7257
7278
  </div>
@@ -7286,7 +7307,7 @@ class ForgotPasswordModal {
7286
7307
  </button>
7287
7308
 
7288
7309
  <div class="neoface-forgot-branding">
7289
- <img src="/logo-icone-no-background.png" alt="NeoFaceId" class="neoface-forgot-brand-logo" onerror="this.style.display='none'" />
7310
+ ${brandMarkMono(18)}
7290
7311
  <span>NeoFaceId by</span>
7291
7312
  <span class="neoface-forgot-brand-name">OCTA</span>
7292
7313
  </div>
@@ -8171,7 +8192,7 @@ function BiometricRegistrationModal({
8171
8192
  stepProgress > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "progress-bar", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "progress-fill", style: { width: `${stepProgress}%` } }) })
8172
8193
  ] }),
8173
8194
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "branding-small", children: [
8174
- /* @__PURE__ */ jsxRuntimeExports.jsx("img", { src: "/logo-icone.png", alt: "NeoFaceId", className: "brand-logo-small" }),
8195
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "brand-logo-small", style: { display: "inline-flex", width: 18, height: 18, color: "currentColor" }, dangerouslySetInnerHTML: { __html: NEOFACEID_MARK_MONO_SVG } }),
8175
8196
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "NeoFaceId by" }),
8176
8197
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "brand-name", children: "OCTA" })
8177
8198
  ] })
@@ -8318,12 +8339,11 @@ function BiometricRegistrationModal({
8318
8339
  },
8319
8340
  children: [
8320
8341
  /* @__PURE__ */ jsxRuntimeExports.jsx(
8321
- "img",
8342
+ "span",
8322
8343
  {
8323
- src: "/logo-icone.png",
8324
- alt: "NeoFaceId",
8325
8344
  className: "brand-logo",
8326
- style: { height: "18px" }
8345
+ style: { display: "inline-flex", width: 18, height: 18, color: "currentColor" },
8346
+ dangerouslySetInnerHTML: { __html: NEOFACEID_MARK_MONO_SVG }
8327
8347
  }
8328
8348
  ),
8329
8349
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "NeoFaceId by" }),
@@ -8978,6 +8998,239 @@ function BiometricRegistrationModal({
8978
8998
  /* @__PURE__ */ jsxRuntimeExports.jsx("canvas", { ref: canvasRef })
8979
8999
  ] });
8980
9000
  }
9001
+ function ConsentModalComponent({
9002
+ purpose,
9003
+ legalBasis,
9004
+ privacyPolicyUrl,
9005
+ retentionDays,
9006
+ onAccept,
9007
+ onDecline
9008
+ }) {
9009
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
9010
+ /* @__PURE__ */ jsxRuntimeExports.jsx("style", { children: `
9011
+ @keyframes neofaceidConsentFadeIn {
9012
+ from { opacity: 0; }
9013
+ to { opacity: 1; }
9014
+ }
9015
+
9016
+ @keyframes neofaceidConsentSlideUp {
9017
+ from {
9018
+ opacity: 0;
9019
+ transform: translateY(20px);
9020
+ }
9021
+ to {
9022
+ opacity: 1;
9023
+ transform: translateY(0);
9024
+ }
9025
+ }
9026
+
9027
+ .neofaceid-consent-overlay {
9028
+ position: fixed;
9029
+ inset: 0;
9030
+ background: rgba(0, 0, 0, 0.6);
9031
+ backdrop-filter: blur(8px);
9032
+ display: flex;
9033
+ align-items: center;
9034
+ justify-content: center;
9035
+ z-index: 10001;
9036
+ padding: 20px;
9037
+ animation: neofaceidConsentFadeIn 0.3s ease-out;
9038
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
9039
+ }
9040
+
9041
+ .neofaceid-consent-modal {
9042
+ background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%);
9043
+ border-radius: 20px;
9044
+ padding: 32px;
9045
+ max-width: 420px;
9046
+ width: 100%;
9047
+ box-shadow: 0 24px 48px rgba(0, 0, 0, 0.4), 0 0 0 1px rgba(255, 255, 255, 0.1);
9048
+ animation: neofaceidConsentSlideUp 0.4s ease-out;
9049
+ }
9050
+
9051
+ .neofaceid-consent-title {
9052
+ font-size: 20px;
9053
+ font-weight: 700;
9054
+ color: white;
9055
+ margin: 0 0 12px 0;
9056
+ }
9057
+
9058
+ .neofaceid-consent-message {
9059
+ font-size: 14px;
9060
+ color: rgba(255, 255, 255, 0.7);
9061
+ margin: 0 0 16px 0;
9062
+ line-height: 1.5;
9063
+ }
9064
+
9065
+ .neofaceid-consent-link {
9066
+ display: inline-block;
9067
+ font-size: 14px;
9068
+ color: #a78bfa;
9069
+ text-decoration: underline;
9070
+ margin-bottom: 24px;
9071
+ }
9072
+
9073
+ .neofaceid-consent-link:hover {
9074
+ color: #c4b5fd;
9075
+ }
9076
+
9077
+ .neofaceid-consent-actions {
9078
+ display: flex;
9079
+ flex-direction: column;
9080
+ gap: 12px;
9081
+ }
9082
+
9083
+ .neofaceid-consent-button {
9084
+ padding: 14px 24px;
9085
+ border-radius: 12px;
9086
+ border: none;
9087
+ font-size: 16px;
9088
+ font-weight: 600;
9089
+ cursor: pointer;
9090
+ transition: all 0.2s;
9091
+ font-family: inherit;
9092
+ }
9093
+
9094
+ .neofaceid-consent-button-primary {
9095
+ background: linear-gradient(135deg, #7c3aed 0%, #6d28d9 100%);
9096
+ color: white;
9097
+ box-shadow: 0 4px 16px rgba(124, 58, 237, 0.3);
9098
+ }
9099
+
9100
+ .neofaceid-consent-button-primary:hover {
9101
+ transform: translateY(-2px);
9102
+ box-shadow: 0 8px 24px rgba(124, 58, 237, 0.4);
9103
+ }
9104
+
9105
+ .neofaceid-consent-button-primary:active {
9106
+ transform: translateY(0);
9107
+ }
9108
+
9109
+ .neofaceid-consent-button-secondary {
9110
+ background: rgba(255, 255, 255, 0.1);
9111
+ color: white;
9112
+ border: 1px solid rgba(255, 255, 255, 0.2);
9113
+ }
9114
+
9115
+ .neofaceid-consent-button-secondary:hover {
9116
+ background: rgba(255, 255, 255, 0.15);
9117
+ border-color: rgba(255, 255, 255, 0.3);
9118
+ }
9119
+
9120
+ @media (max-width: 640px) {
9121
+ .neofaceid-consent-modal {
9122
+ padding: 24px;
9123
+ border-radius: 16px;
9124
+ }
9125
+
9126
+ .neofaceid-consent-title {
9127
+ font-size: 18px;
9128
+ }
9129
+ }
9130
+ ` }),
9131
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "neofaceid-consent-overlay", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "neofaceid-consent-modal", children: [
9132
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("h3", { className: "neofaceid-consent-title", children: [
9133
+ "Uso do seu rosto para ",
9134
+ purpose
9135
+ ] }),
9136
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "neofaceid-consent-message", children: [
9137
+ "Esta captura é realizada com base em ",
9138
+ legalBasis,
9139
+ ". Os dados biométricos coletados são retidos por até ",
9140
+ retentionDays,
9141
+ " dias, conforme a finalidade informada."
9142
+ ] }),
9143
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
9144
+ "a",
9145
+ {
9146
+ href: privacyPolicyUrl,
9147
+ target: "_blank",
9148
+ rel: "noopener noreferrer",
9149
+ className: "neofaceid-consent-link",
9150
+ children: "Ver política de privacidade"
9151
+ }
9152
+ ),
9153
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "neofaceid-consent-actions", children: [
9154
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
9155
+ "button",
9156
+ {
9157
+ type: "button",
9158
+ className: "neofaceid-consent-button neofaceid-consent-button-primary",
9159
+ onClick: onAccept,
9160
+ children: "Aceito e continuar"
9161
+ }
9162
+ ),
9163
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
9164
+ "button",
9165
+ {
9166
+ type: "button",
9167
+ className: "neofaceid-consent-button neofaceid-consent-button-secondary",
9168
+ onClick: onDecline,
9169
+ children: "Recusar"
9170
+ }
9171
+ )
9172
+ ] })
9173
+ ] }) })
9174
+ ] });
9175
+ }
9176
+ class ConsentModal {
9177
+ constructor() {
9178
+ __publicField(this, "container", null);
9179
+ __publicField(this, "root", null);
9180
+ }
9181
+ show(props) {
9182
+ if (this.container) {
9183
+ return;
9184
+ }
9185
+ this.container = document.createElement("div");
9186
+ this.container.id = "neofaceid-consent-modal-container";
9187
+ document.body.appendChild(this.container);
9188
+ this.root = clientExports.createRoot(this.container);
9189
+ this.root.render(
9190
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
9191
+ ConsentModalComponent,
9192
+ {
9193
+ ...props,
9194
+ onAccept: () => {
9195
+ this.close();
9196
+ props.onAccept();
9197
+ },
9198
+ onDecline: () => {
9199
+ this.close();
9200
+ props.onDecline();
9201
+ }
9202
+ }
9203
+ )
9204
+ );
9205
+ }
9206
+ close() {
9207
+ if (this.container && document.body.contains(this.container)) {
9208
+ if (this.root) {
9209
+ this.root.unmount();
9210
+ }
9211
+ document.body.removeChild(this.container);
9212
+ this.container = null;
9213
+ this.root = null;
9214
+ }
9215
+ }
9216
+ }
9217
+ const DEFAULT_CONSENT_INFO = {
9218
+ purpose: "autenticação facial",
9219
+ legalBasis: "seu consentimento explícito (Art. 7º, I da LGPD)",
9220
+ privacyPolicyUrl: "https://neofaceid.com/privacidade",
9221
+ retentionDays: 90
9222
+ };
9223
+ function requestConsent(info = {}) {
9224
+ return new Promise((resolve) => {
9225
+ const modal = new ConsentModal();
9226
+ modal.show({
9227
+ ...DEFAULT_CONSENT_INFO,
9228
+ ...info,
9229
+ onAccept: () => resolve(true),
9230
+ onDecline: () => resolve(false)
9231
+ });
9232
+ });
9233
+ }
8981
9234
  class BiometricCaptureModal {
8982
9235
  constructor(options) {
8983
9236
  __publicField(this, "modal", null);
@@ -9667,14 +9920,7 @@ class BiometricStatusOverlay {
9667
9920
  <div class="neofaceid-overlay-container neofaceid-state-${this.currentStatus}">
9668
9921
  <div class="neofaceid-overlay-content">
9669
9922
  <div class="neofaceid-visual-wrapper">
9670
- ${showLogo ? `
9671
- <img
9672
- src="/logo-icone-no-background.png"
9673
- alt="NeoFaceId"
9674
- class="neofaceid-logo ${isPulsing ? "pulsing" : ""}"
9675
- onerror="this.style.display='none'"
9676
- />
9677
- ` : ""}
9923
+ ${showLogo ? `<span class="neofaceid-logo ${isPulsing ? "pulsing" : ""}" style="display:inline-flex;align-items:center;justify-content:center;color:currentColor;">${brandMarkMono(48).replace("width:18px;height:18px", "width:100%;height:100%")}</span>` : ""}
9678
9924
 
9679
9925
  ${showSuccess ? `
9680
9926
  <div class="neofaceid-status-icon">
@@ -10055,7 +10301,7 @@ class EmailPasswordModal {
10055
10301
 
10056
10302
  <!-- Branding -->
10057
10303
  <div class="neoface-email-branding">
10058
- <img src="/logo-icone-no-background.png" alt="NeoFaceId" class="neoface-email-brand-logo" onerror="this.style.display='none'" />
10304
+ ${brandMarkMono(18)}
10059
10305
  <span>NeoFaceId by</span>
10060
10306
  <span class="neoface-email-brand-name">OCTA</span>
10061
10307
  </div>
@@ -10774,7 +11020,13 @@ const biometricLoginFlow = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.
10774
11020
  executeBiometricLoginFlow,
10775
11021
  preloadFaceDetectionModels
10776
11022
  }, Symbol.toStringTag, { value: "Module" }));
11023
+ const CONSENT_DENIED_MESSAGE$1 = "Consentimento recusado pelo usuário.";
10777
11024
  async function startFaceLogin(options) {
11025
+ const consentAccepted = await requestConsent();
11026
+ if (!consentAccepted) {
11027
+ options.onError(new NeoFaceError(CONSENT_DENIED_MESSAGE$1, ErrorType.CONSENT_DENIED));
11028
+ return;
11029
+ }
10778
11030
  try {
10779
11031
  await executeBiometricLoginFlow({
10780
11032
  applicationToken: options.applicationToken,
@@ -10796,13 +11048,18 @@ async function startFaceLogin(options) {
10796
11048
  } catch (error) {
10797
11049
  options.onError(
10798
11050
  new NeoFaceError(
10799
- "Erro ao inicializar login facial: " + error.message,
11051
+ `Erro ao inicializar login facial: ${error.message}`,
10800
11052
  ErrorType.INITIALIZATION_ERROR
10801
11053
  )
10802
11054
  );
10803
11055
  }
10804
11056
  }
10805
11057
  async function startHandLogin(options) {
11058
+ const consentAccepted = await requestConsent();
11059
+ if (!consentAccepted) {
11060
+ options.onError(new NeoFaceError(CONSENT_DENIED_MESSAGE$1, ErrorType.CONSENT_DENIED));
11061
+ return;
11062
+ }
10806
11063
  try {
10807
11064
  const captureOptions = {
10808
11065
  mode: "hand",
@@ -10826,13 +11083,18 @@ async function startHandLogin(options) {
10826
11083
  } catch (error) {
10827
11084
  options.onError(
10828
11085
  new NeoFaceError(
10829
- "Erro ao inicializar login por mão: " + error.message,
11086
+ `Erro ao inicializar login por mão: ${error.message}`,
10830
11087
  ErrorType.INITIALIZATION_ERROR
10831
11088
  )
10832
11089
  );
10833
11090
  }
10834
11091
  }
10835
11092
  async function startAutoLogin(options) {
11093
+ const consentAccepted = await requestConsent();
11094
+ if (!consentAccepted) {
11095
+ options.onError(new NeoFaceError(CONSENT_DENIED_MESSAGE$1, ErrorType.CONSENT_DENIED));
11096
+ return;
11097
+ }
10836
11098
  try {
10837
11099
  const captureOptions = {
10838
11100
  mode: "auto",
@@ -10856,7 +11118,7 @@ async function startAutoLogin(options) {
10856
11118
  } catch (error) {
10857
11119
  options.onError(
10858
11120
  new NeoFaceError(
10859
- "Erro ao inicializar login automático: " + error.message,
11121
+ `Erro ao inicializar login automático: ${error.message}`,
10860
11122
  ErrorType.INITIALIZATION_ERROR
10861
11123
  )
10862
11124
  );
@@ -11086,8 +11348,8 @@ const biometricDetection = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.
11086
11348
  initializeBiometricDetection,
11087
11349
  isAdvancedDetectionAvailable
11088
11350
  }, Symbol.toStringTag, { value: "Module" }));
11089
- const VERSION = "1.24.1";
11090
- const RELEASE_DATE = "2026-03-28";
11351
+ const VERSION = "1.25.5";
11352
+ const RELEASE_DATE = "2026-08-29";
11091
11353
  class OnboardingCaptureModal {
11092
11354
  constructor(options) {
11093
11355
  __publicField(this, "overlay", null);
@@ -11296,6 +11558,11 @@ class OnboardingCaptureModal {
11296
11558
  const startOnboarding = async (options) => {
11297
11559
  const { applicationToken, onboardingToken, countdown, title, subtitle, onSuccess, onError } = options;
11298
11560
  try {
11561
+ const consentAccepted = await requestConsent();
11562
+ if (!consentAccepted) {
11563
+ onError(new NeoFaceError("Consentimento recusado pelo usuário.", ErrorType.CONSENT_DENIED));
11564
+ return;
11565
+ }
11299
11566
  const details = await getOnboardingDetails(applicationToken, onboardingToken);
11300
11567
  if (!(details == null ? void 0 : details.is_valid)) {
11301
11568
  throw new NeoFaceError("Link de onboarding inválido ou expirado", ErrorType.VALIDATION_ERROR);
@@ -11670,6 +11937,10 @@ const authorizeOperation = async (applicationToken, cpf, options) => {
11670
11937
  }
11671
11938
  const capturedPhotos = [];
11672
11939
  const captureDelay = (options == null ? void 0 : options.captureDelay) || 2e3;
11940
+ const consentAccepted = await requestConsent();
11941
+ if (!consentAccepted) {
11942
+ throw new NeoFaceError("Consentimento recusado pelo usuário.", ErrorType.CONSENT_DENIED);
11943
+ }
11673
11944
  try {
11674
11945
  if (!navigator.mediaDevices || !navigator.mediaDevices.getUserMedia) {
11675
11946
  throw new NeoFaceError("Camera not available", ErrorType.NO_CAMERA);
@@ -12035,9 +12306,7 @@ class DocumentCaptureModal {
12035
12306
  renderBranding() {
12036
12307
  return `
12037
12308
  <div class="neoface-doc-branding">
12038
- <img src="/logo-icone-no-background.png"
12039
- alt="NeoFaceId" class="neoface-doc-brand-icon"
12040
- onerror="this.style.display='none'" />
12309
+ ${brandMarkMono(18)}
12041
12310
  <span class="neoface-doc-brand-name-text">NeoFaceId</span>
12042
12311
  <span class="neoface-doc-brand-text">by</span>
12043
12312
  <span class="neoface-doc-brand-name">OCTA</span>
@@ -12770,116 +13039,137 @@ const DocumentCaptureModal$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Obj
12770
13039
  DocumentCaptureModal,
12771
13040
  startDocumentCapture
12772
13041
  }, Symbol.toStringTag, { value: "Module" }));
13042
+ const CONSENT_DENIED_MESSAGE = "Consentimento recusado pelo usuário.";
12773
13043
  function start(applicationToken, callbacks) {
12774
- const container = document.createElement("div");
12775
- container.id = "neoface-modal-container";
12776
- document.body.appendChild(container);
12777
- const cleanup = () => {
12778
- if (document.body.contains(container)) {
12779
- document.body.removeChild(container);
13044
+ requestConsent().then((accepted) => {
13045
+ if (!accepted) {
13046
+ callbacks.onError("CONSENT_DENIED", CONSENT_DENIED_MESSAGE);
13047
+ return;
12780
13048
  }
12781
- };
12782
- validateToken(applicationToken).then(() => {
12783
- const modalElement = React.createElement(FaceCaptureModal, {
12784
- accessToken: applicationToken,
12785
- onClose: cleanup,
12786
- onSuccess: (result) => {
12787
- cleanup();
12788
- callbacks.onSuccess({
12789
- name: result.data.faceId,
12790
- email: result.data.faceId,
12791
- documentId: result.data.faceId
12792
- });
13049
+ const container = document.createElement("div");
13050
+ container.id = "neoface-modal-container";
13051
+ document.body.appendChild(container);
13052
+ const cleanup = () => {
13053
+ if (document.body.contains(container)) {
13054
+ document.body.removeChild(container);
12793
13055
  }
13056
+ };
13057
+ validateToken(applicationToken).then(() => {
13058
+ const modalElement = React.createElement(FaceCaptureModal, {
13059
+ accessToken: applicationToken,
13060
+ onClose: cleanup,
13061
+ onSuccess: (result) => {
13062
+ cleanup();
13063
+ callbacks.onSuccess({
13064
+ name: result.data.faceId,
13065
+ email: result.data.faceId,
13066
+ documentId: result.data.faceId
13067
+ });
13068
+ }
13069
+ });
13070
+ const root = clientExports.createRoot(container);
13071
+ root.render(modalElement);
13072
+ }).catch((error) => {
13073
+ cleanup();
13074
+ callbacks.onError("TOKEN_VALIDATION_ERROR", error.message || "Failed to validate token");
12794
13075
  });
12795
- const root = clientExports.createRoot(container);
12796
- root.render(modalElement);
12797
- }).catch((error) => {
12798
- cleanup();
12799
- callbacks.onError("TOKEN_VALIDATION_ERROR", error.message || "Failed to validate token");
12800
13076
  });
12801
13077
  }
12802
13078
  function startBiometricRegistration(personData, applicationToken, callbacks, options) {
12803
- const container = document.createElement("div");
12804
- container.id = "neoface-biometric-registration-container";
12805
- document.body.appendChild(container);
12806
- let rootRef = null;
12807
- const cleanup = () => {
12808
- if (rootRef) {
12809
- rootRef.unmount();
12810
- rootRef = null;
12811
- }
12812
- if (document.body.contains(container)) {
12813
- document.body.removeChild(container);
13079
+ requestConsent().then((accepted) => {
13080
+ if (!accepted) {
13081
+ callbacks.onError("CONSENT_DENIED", CONSENT_DENIED_MESSAGE);
13082
+ return;
12814
13083
  }
12815
- };
12816
- validateToken(applicationToken).then(() => {
12817
- const modalElement = React.createElement(BiometricRegistrationModal, {
12818
- personData,
12819
- applicationToken,
12820
- useRealApi: (options == null ? void 0 : options.useRealApi) ?? true,
12821
- onClose: cleanup,
12822
- onSuccess: (result) => {
12823
- cleanup();
12824
- callbacks.onSuccess(result);
12825
- },
12826
- onError: (error) => {
12827
- cleanup();
12828
- callbacks.onError("BIOMETRIC_REGISTRATION_ERROR", error);
13084
+ const container = document.createElement("div");
13085
+ container.id = "neoface-biometric-registration-container";
13086
+ document.body.appendChild(container);
13087
+ let rootRef = null;
13088
+ const cleanup = () => {
13089
+ if (rootRef) {
13090
+ rootRef.unmount();
13091
+ rootRef = null;
13092
+ }
13093
+ if (document.body.contains(container)) {
13094
+ document.body.removeChild(container);
12829
13095
  }
13096
+ };
13097
+ validateToken(applicationToken).then(() => {
13098
+ const modalElement = React.createElement(BiometricRegistrationModal, {
13099
+ personData,
13100
+ applicationToken,
13101
+ useRealApi: (options == null ? void 0 : options.useRealApi) ?? true,
13102
+ onClose: cleanup,
13103
+ onSuccess: (result) => {
13104
+ cleanup();
13105
+ callbacks.onSuccess(result);
13106
+ },
13107
+ onError: (error) => {
13108
+ cleanup();
13109
+ callbacks.onError("BIOMETRIC_REGISTRATION_ERROR", error);
13110
+ }
13111
+ });
13112
+ rootRef = clientExports.createRoot(container);
13113
+ rootRef.render(modalElement);
13114
+ }).catch((error) => {
13115
+ cleanup();
13116
+ callbacks.onError("TOKEN_VALIDATION_ERROR", error.message || "Failed to validate token");
12830
13117
  });
12831
- rootRef = clientExports.createRoot(container);
12832
- rootRef.render(modalElement);
12833
- }).catch((error) => {
12834
- cleanup();
12835
- callbacks.onError("TOKEN_VALIDATION_ERROR", error.message || "Failed to validate token");
12836
13118
  });
12837
13119
  }
12838
13120
  function startLivenessCapture(applicationToken, callbacks) {
12839
- const container = document.createElement("div");
12840
- container.id = "neoface-liveness-capture-container";
12841
- document.body.appendChild(container);
12842
- let completed = false;
12843
- let rootRef = null;
12844
- const cleanup = () => {
12845
- if (rootRef) {
12846
- rootRef.unmount();
12847
- rootRef = null;
12848
- }
12849
- if (document.body.contains(container)) {
12850
- document.body.removeChild(container);
12851
- }
12852
- };
12853
- const handleClose = () => {
12854
- cleanup();
12855
- if (!completed && callbacks.onCancel) {
12856
- callbacks.onCancel();
13121
+ requestConsent().then((accepted) => {
13122
+ if (!accepted) {
13123
+ callbacks.onError("CONSENT_DENIED", CONSENT_DENIED_MESSAGE);
13124
+ return;
12857
13125
  }
12858
- };
12859
- validateToken(applicationToken).then(() => {
12860
- const modalElement = React.createElement(BiometricRegistrationModal, {
12861
- applicationToken,
12862
- onClose: handleClose,
12863
- onPhotosCaptured: (photos) => {
12864
- completed = true;
12865
- callbacks.onSuccess(photos);
12866
- },
12867
- onError: (error) => {
12868
- cleanup();
12869
- callbacks.onError("LIVENESS_CAPTURE_ERROR", error);
13126
+ const container = document.createElement("div");
13127
+ container.id = "neoface-liveness-capture-container";
13128
+ document.body.appendChild(container);
13129
+ let completed = false;
13130
+ let rootRef = null;
13131
+ const cleanup = () => {
13132
+ if (rootRef) {
13133
+ rootRef.unmount();
13134
+ rootRef = null;
12870
13135
  }
13136
+ if (document.body.contains(container)) {
13137
+ document.body.removeChild(container);
13138
+ }
13139
+ };
13140
+ const handleClose = () => {
13141
+ cleanup();
13142
+ if (!completed && callbacks.onCancel) {
13143
+ callbacks.onCancel();
13144
+ }
13145
+ };
13146
+ validateToken(applicationToken).then(() => {
13147
+ const modalElement = React.createElement(BiometricRegistrationModal, {
13148
+ applicationToken,
13149
+ onClose: handleClose,
13150
+ onPhotosCaptured: (photos) => {
13151
+ completed = true;
13152
+ callbacks.onSuccess(photos);
13153
+ },
13154
+ onError: (error) => {
13155
+ cleanup();
13156
+ callbacks.onError("LIVENESS_CAPTURE_ERROR", error);
13157
+ }
13158
+ });
13159
+ rootRef = clientExports.createRoot(container);
13160
+ rootRef.render(modalElement);
13161
+ }).catch((error) => {
13162
+ cleanup();
13163
+ callbacks.onError("TOKEN_VALIDATION_ERROR", error.message || "Failed to validate token");
12871
13164
  });
12872
- rootRef = clientExports.createRoot(container);
12873
- rootRef.render(modalElement);
12874
- }).catch((error) => {
12875
- cleanup();
12876
- callbacks.onError("TOKEN_VALIDATION_ERROR", error.message || "Failed to validate token");
12877
13165
  });
12878
13166
  }
12879
13167
  export {
12880
13168
  BiometricCaptureModal,
12881
13169
  BiometricRegistrationModal,
12882
13170
  BiometricStatusOverlay,
13171
+ ConsentModal,
13172
+ DEFAULT_CONSENT_INFO,
12883
13173
  DocumentCaptureModal,
12884
13174
  ENVIRONMENT_URLS,
12885
13175
  EmailPasswordModal,
@@ -12918,6 +13208,7 @@ export {
12918
13208
  registerBiometric,
12919
13209
  registerPersonWithBiometric,
12920
13210
  registerPersonWithoutFace,
13211
+ requestConsent,
12921
13212
  requestPasswordReset,
12922
13213
  simpleIdentification,
12923
13214
  start,