@neofaceid/web-sdk 1.24.1 → 1.25.4

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.";
@@ -7193,6 +7197,11 @@ function FaceCaptureModal({ accessToken, onClose, onSuccess }) {
7193
7197
  ] })
7194
7198
  ] });
7195
7199
  }
7200
+ 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>';
7201
+ const NEOFACEID_MARK_MONO_SVG = markMonoSvg;
7202
+ function brandMarkMono(sizePx = 18) {
7203
+ 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>`;
7204
+ }
7196
7205
  class ForgotPasswordModal {
7197
7206
  constructor(applicationToken) {
7198
7207
  __publicField(this, "applicationToken");
@@ -7251,7 +7260,7 @@ class ForgotPasswordModal {
7251
7260
  </button>
7252
7261
 
7253
7262
  <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'" />
7263
+ ${brandMarkMono(18)}
7255
7264
  <span>NeoFaceId by</span>
7256
7265
  <span class="neoface-forgot-brand-name">OCTA</span>
7257
7266
  </div>
@@ -7286,7 +7295,7 @@ class ForgotPasswordModal {
7286
7295
  </button>
7287
7296
 
7288
7297
  <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'" />
7298
+ ${brandMarkMono(18)}
7290
7299
  <span>NeoFaceId by</span>
7291
7300
  <span class="neoface-forgot-brand-name">OCTA</span>
7292
7301
  </div>
@@ -8171,7 +8180,7 @@ function BiometricRegistrationModal({
8171
8180
  stepProgress > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "progress-bar", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "progress-fill", style: { width: `${stepProgress}%` } }) })
8172
8181
  ] }),
8173
8182
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "branding-small", children: [
8174
- /* @__PURE__ */ jsxRuntimeExports.jsx("img", { src: "/logo-icone.png", alt: "NeoFaceId", className: "brand-logo-small" }),
8183
+ /* @__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
8184
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "NeoFaceId by" }),
8176
8185
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "brand-name", children: "OCTA" })
8177
8186
  ] })
@@ -8318,12 +8327,11 @@ function BiometricRegistrationModal({
8318
8327
  },
8319
8328
  children: [
8320
8329
  /* @__PURE__ */ jsxRuntimeExports.jsx(
8321
- "img",
8330
+ "span",
8322
8331
  {
8323
- src: "/logo-icone.png",
8324
- alt: "NeoFaceId",
8325
8332
  className: "brand-logo",
8326
- style: { height: "18px" }
8333
+ style: { display: "inline-flex", width: 18, height: 18, color: "currentColor" },
8334
+ dangerouslySetInnerHTML: { __html: NEOFACEID_MARK_MONO_SVG }
8327
8335
  }
8328
8336
  ),
8329
8337
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "NeoFaceId by" }),
@@ -8978,6 +8986,239 @@ function BiometricRegistrationModal({
8978
8986
  /* @__PURE__ */ jsxRuntimeExports.jsx("canvas", { ref: canvasRef })
8979
8987
  ] });
8980
8988
  }
8989
+ function ConsentModalComponent({
8990
+ purpose,
8991
+ legalBasis,
8992
+ privacyPolicyUrl,
8993
+ retentionDays,
8994
+ onAccept,
8995
+ onDecline
8996
+ }) {
8997
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
8998
+ /* @__PURE__ */ jsxRuntimeExports.jsx("style", { children: `
8999
+ @keyframes neofaceidConsentFadeIn {
9000
+ from { opacity: 0; }
9001
+ to { opacity: 1; }
9002
+ }
9003
+
9004
+ @keyframes neofaceidConsentSlideUp {
9005
+ from {
9006
+ opacity: 0;
9007
+ transform: translateY(20px);
9008
+ }
9009
+ to {
9010
+ opacity: 1;
9011
+ transform: translateY(0);
9012
+ }
9013
+ }
9014
+
9015
+ .neofaceid-consent-overlay {
9016
+ position: fixed;
9017
+ inset: 0;
9018
+ background: rgba(0, 0, 0, 0.6);
9019
+ backdrop-filter: blur(8px);
9020
+ display: flex;
9021
+ align-items: center;
9022
+ justify-content: center;
9023
+ z-index: 10001;
9024
+ padding: 20px;
9025
+ animation: neofaceidConsentFadeIn 0.3s ease-out;
9026
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
9027
+ }
9028
+
9029
+ .neofaceid-consent-modal {
9030
+ background: linear-gradient(135deg, #1a1a2e 0%, #16213e 100%);
9031
+ border-radius: 20px;
9032
+ padding: 32px;
9033
+ max-width: 420px;
9034
+ width: 100%;
9035
+ box-shadow: 0 24px 48px rgba(0, 0, 0, 0.4), 0 0 0 1px rgba(255, 255, 255, 0.1);
9036
+ animation: neofaceidConsentSlideUp 0.4s ease-out;
9037
+ }
9038
+
9039
+ .neofaceid-consent-title {
9040
+ font-size: 20px;
9041
+ font-weight: 700;
9042
+ color: white;
9043
+ margin: 0 0 12px 0;
9044
+ }
9045
+
9046
+ .neofaceid-consent-message {
9047
+ font-size: 14px;
9048
+ color: rgba(255, 255, 255, 0.7);
9049
+ margin: 0 0 16px 0;
9050
+ line-height: 1.5;
9051
+ }
9052
+
9053
+ .neofaceid-consent-link {
9054
+ display: inline-block;
9055
+ font-size: 14px;
9056
+ color: #a78bfa;
9057
+ text-decoration: underline;
9058
+ margin-bottom: 24px;
9059
+ }
9060
+
9061
+ .neofaceid-consent-link:hover {
9062
+ color: #c4b5fd;
9063
+ }
9064
+
9065
+ .neofaceid-consent-actions {
9066
+ display: flex;
9067
+ flex-direction: column;
9068
+ gap: 12px;
9069
+ }
9070
+
9071
+ .neofaceid-consent-button {
9072
+ padding: 14px 24px;
9073
+ border-radius: 12px;
9074
+ border: none;
9075
+ font-size: 16px;
9076
+ font-weight: 600;
9077
+ cursor: pointer;
9078
+ transition: all 0.2s;
9079
+ font-family: inherit;
9080
+ }
9081
+
9082
+ .neofaceid-consent-button-primary {
9083
+ background: linear-gradient(135deg, #7c3aed 0%, #6d28d9 100%);
9084
+ color: white;
9085
+ box-shadow: 0 4px 16px rgba(124, 58, 237, 0.3);
9086
+ }
9087
+
9088
+ .neofaceid-consent-button-primary:hover {
9089
+ transform: translateY(-2px);
9090
+ box-shadow: 0 8px 24px rgba(124, 58, 237, 0.4);
9091
+ }
9092
+
9093
+ .neofaceid-consent-button-primary:active {
9094
+ transform: translateY(0);
9095
+ }
9096
+
9097
+ .neofaceid-consent-button-secondary {
9098
+ background: rgba(255, 255, 255, 0.1);
9099
+ color: white;
9100
+ border: 1px solid rgba(255, 255, 255, 0.2);
9101
+ }
9102
+
9103
+ .neofaceid-consent-button-secondary:hover {
9104
+ background: rgba(255, 255, 255, 0.15);
9105
+ border-color: rgba(255, 255, 255, 0.3);
9106
+ }
9107
+
9108
+ @media (max-width: 640px) {
9109
+ .neofaceid-consent-modal {
9110
+ padding: 24px;
9111
+ border-radius: 16px;
9112
+ }
9113
+
9114
+ .neofaceid-consent-title {
9115
+ font-size: 18px;
9116
+ }
9117
+ }
9118
+ ` }),
9119
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "neofaceid-consent-overlay", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "neofaceid-consent-modal", children: [
9120
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("h3", { className: "neofaceid-consent-title", children: [
9121
+ "Uso do seu rosto para ",
9122
+ purpose
9123
+ ] }),
9124
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "neofaceid-consent-message", children: [
9125
+ "Esta captura é realizada com base em ",
9126
+ legalBasis,
9127
+ ". Os dados biométricos coletados são retidos por até ",
9128
+ retentionDays,
9129
+ " dias, conforme a finalidade informada."
9130
+ ] }),
9131
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
9132
+ "a",
9133
+ {
9134
+ href: privacyPolicyUrl,
9135
+ target: "_blank",
9136
+ rel: "noopener noreferrer",
9137
+ className: "neofaceid-consent-link",
9138
+ children: "Ver política de privacidade"
9139
+ }
9140
+ ),
9141
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "neofaceid-consent-actions", children: [
9142
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
9143
+ "button",
9144
+ {
9145
+ type: "button",
9146
+ className: "neofaceid-consent-button neofaceid-consent-button-primary",
9147
+ onClick: onAccept,
9148
+ children: "Aceito e continuar"
9149
+ }
9150
+ ),
9151
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
9152
+ "button",
9153
+ {
9154
+ type: "button",
9155
+ className: "neofaceid-consent-button neofaceid-consent-button-secondary",
9156
+ onClick: onDecline,
9157
+ children: "Recusar"
9158
+ }
9159
+ )
9160
+ ] })
9161
+ ] }) })
9162
+ ] });
9163
+ }
9164
+ class ConsentModal {
9165
+ constructor() {
9166
+ __publicField(this, "container", null);
9167
+ __publicField(this, "root", null);
9168
+ }
9169
+ show(props) {
9170
+ if (this.container) {
9171
+ return;
9172
+ }
9173
+ this.container = document.createElement("div");
9174
+ this.container.id = "neofaceid-consent-modal-container";
9175
+ document.body.appendChild(this.container);
9176
+ this.root = clientExports.createRoot(this.container);
9177
+ this.root.render(
9178
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
9179
+ ConsentModalComponent,
9180
+ {
9181
+ ...props,
9182
+ onAccept: () => {
9183
+ this.close();
9184
+ props.onAccept();
9185
+ },
9186
+ onDecline: () => {
9187
+ this.close();
9188
+ props.onDecline();
9189
+ }
9190
+ }
9191
+ )
9192
+ );
9193
+ }
9194
+ close() {
9195
+ if (this.container && document.body.contains(this.container)) {
9196
+ if (this.root) {
9197
+ this.root.unmount();
9198
+ }
9199
+ document.body.removeChild(this.container);
9200
+ this.container = null;
9201
+ this.root = null;
9202
+ }
9203
+ }
9204
+ }
9205
+ const DEFAULT_CONSENT_INFO = {
9206
+ purpose: "autenticação facial",
9207
+ legalBasis: "seu consentimento explícito (Art. 7º, I da LGPD)",
9208
+ privacyPolicyUrl: "https://neofaceid.com/privacidade",
9209
+ retentionDays: 90
9210
+ };
9211
+ function requestConsent(info = {}) {
9212
+ return new Promise((resolve) => {
9213
+ const modal = new ConsentModal();
9214
+ modal.show({
9215
+ ...DEFAULT_CONSENT_INFO,
9216
+ ...info,
9217
+ onAccept: () => resolve(true),
9218
+ onDecline: () => resolve(false)
9219
+ });
9220
+ });
9221
+ }
8981
9222
  class BiometricCaptureModal {
8982
9223
  constructor(options) {
8983
9224
  __publicField(this, "modal", null);
@@ -9667,14 +9908,7 @@ class BiometricStatusOverlay {
9667
9908
  <div class="neofaceid-overlay-container neofaceid-state-${this.currentStatus}">
9668
9909
  <div class="neofaceid-overlay-content">
9669
9910
  <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
- ` : ""}
9911
+ ${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
9912
 
9679
9913
  ${showSuccess ? `
9680
9914
  <div class="neofaceid-status-icon">
@@ -10055,7 +10289,7 @@ class EmailPasswordModal {
10055
10289
 
10056
10290
  <!-- Branding -->
10057
10291
  <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'" />
10292
+ ${brandMarkMono(18)}
10059
10293
  <span>NeoFaceId by</span>
10060
10294
  <span class="neoface-email-brand-name">OCTA</span>
10061
10295
  </div>
@@ -10774,7 +11008,13 @@ const biometricLoginFlow = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.
10774
11008
  executeBiometricLoginFlow,
10775
11009
  preloadFaceDetectionModels
10776
11010
  }, Symbol.toStringTag, { value: "Module" }));
11011
+ const CONSENT_DENIED_MESSAGE$1 = "Consentimento recusado pelo usuário.";
10777
11012
  async function startFaceLogin(options) {
11013
+ const consentAccepted = await requestConsent();
11014
+ if (!consentAccepted) {
11015
+ options.onError(new NeoFaceError(CONSENT_DENIED_MESSAGE$1, ErrorType.CONSENT_DENIED));
11016
+ return;
11017
+ }
10778
11018
  try {
10779
11019
  await executeBiometricLoginFlow({
10780
11020
  applicationToken: options.applicationToken,
@@ -10796,13 +11036,18 @@ async function startFaceLogin(options) {
10796
11036
  } catch (error) {
10797
11037
  options.onError(
10798
11038
  new NeoFaceError(
10799
- "Erro ao inicializar login facial: " + error.message,
11039
+ `Erro ao inicializar login facial: ${error.message}`,
10800
11040
  ErrorType.INITIALIZATION_ERROR
10801
11041
  )
10802
11042
  );
10803
11043
  }
10804
11044
  }
10805
11045
  async function startHandLogin(options) {
11046
+ const consentAccepted = await requestConsent();
11047
+ if (!consentAccepted) {
11048
+ options.onError(new NeoFaceError(CONSENT_DENIED_MESSAGE$1, ErrorType.CONSENT_DENIED));
11049
+ return;
11050
+ }
10806
11051
  try {
10807
11052
  const captureOptions = {
10808
11053
  mode: "hand",
@@ -10826,13 +11071,18 @@ async function startHandLogin(options) {
10826
11071
  } catch (error) {
10827
11072
  options.onError(
10828
11073
  new NeoFaceError(
10829
- "Erro ao inicializar login por mão: " + error.message,
11074
+ `Erro ao inicializar login por mão: ${error.message}`,
10830
11075
  ErrorType.INITIALIZATION_ERROR
10831
11076
  )
10832
11077
  );
10833
11078
  }
10834
11079
  }
10835
11080
  async function startAutoLogin(options) {
11081
+ const consentAccepted = await requestConsent();
11082
+ if (!consentAccepted) {
11083
+ options.onError(new NeoFaceError(CONSENT_DENIED_MESSAGE$1, ErrorType.CONSENT_DENIED));
11084
+ return;
11085
+ }
10836
11086
  try {
10837
11087
  const captureOptions = {
10838
11088
  mode: "auto",
@@ -10856,7 +11106,7 @@ async function startAutoLogin(options) {
10856
11106
  } catch (error) {
10857
11107
  options.onError(
10858
11108
  new NeoFaceError(
10859
- "Erro ao inicializar login automático: " + error.message,
11109
+ `Erro ao inicializar login automático: ${error.message}`,
10860
11110
  ErrorType.INITIALIZATION_ERROR
10861
11111
  )
10862
11112
  );
@@ -11086,8 +11336,8 @@ const biometricDetection = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.
11086
11336
  initializeBiometricDetection,
11087
11337
  isAdvancedDetectionAvailable
11088
11338
  }, Symbol.toStringTag, { value: "Module" }));
11089
- const VERSION = "1.24.1";
11090
- const RELEASE_DATE = "2026-03-28";
11339
+ const VERSION = "1.25.4";
11340
+ const RELEASE_DATE = "2026-08-29";
11091
11341
  class OnboardingCaptureModal {
11092
11342
  constructor(options) {
11093
11343
  __publicField(this, "overlay", null);
@@ -11296,6 +11546,11 @@ class OnboardingCaptureModal {
11296
11546
  const startOnboarding = async (options) => {
11297
11547
  const { applicationToken, onboardingToken, countdown, title, subtitle, onSuccess, onError } = options;
11298
11548
  try {
11549
+ const consentAccepted = await requestConsent();
11550
+ if (!consentAccepted) {
11551
+ onError(new NeoFaceError("Consentimento recusado pelo usuário.", ErrorType.CONSENT_DENIED));
11552
+ return;
11553
+ }
11299
11554
  const details = await getOnboardingDetails(applicationToken, onboardingToken);
11300
11555
  if (!(details == null ? void 0 : details.is_valid)) {
11301
11556
  throw new NeoFaceError("Link de onboarding inválido ou expirado", ErrorType.VALIDATION_ERROR);
@@ -11670,6 +11925,10 @@ const authorizeOperation = async (applicationToken, cpf, options) => {
11670
11925
  }
11671
11926
  const capturedPhotos = [];
11672
11927
  const captureDelay = (options == null ? void 0 : options.captureDelay) || 2e3;
11928
+ const consentAccepted = await requestConsent();
11929
+ if (!consentAccepted) {
11930
+ throw new NeoFaceError("Consentimento recusado pelo usuário.", ErrorType.CONSENT_DENIED);
11931
+ }
11673
11932
  try {
11674
11933
  if (!navigator.mediaDevices || !navigator.mediaDevices.getUserMedia) {
11675
11934
  throw new NeoFaceError("Camera not available", ErrorType.NO_CAMERA);
@@ -12035,9 +12294,7 @@ class DocumentCaptureModal {
12035
12294
  renderBranding() {
12036
12295
  return `
12037
12296
  <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'" />
12297
+ ${brandMarkMono(18)}
12041
12298
  <span class="neoface-doc-brand-name-text">NeoFaceId</span>
12042
12299
  <span class="neoface-doc-brand-text">by</span>
12043
12300
  <span class="neoface-doc-brand-name">OCTA</span>
@@ -12770,116 +13027,137 @@ const DocumentCaptureModal$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Obj
12770
13027
  DocumentCaptureModal,
12771
13028
  startDocumentCapture
12772
13029
  }, Symbol.toStringTag, { value: "Module" }));
13030
+ const CONSENT_DENIED_MESSAGE = "Consentimento recusado pelo usuário.";
12773
13031
  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);
13032
+ requestConsent().then((accepted) => {
13033
+ if (!accepted) {
13034
+ callbacks.onError("CONSENT_DENIED", CONSENT_DENIED_MESSAGE);
13035
+ return;
12780
13036
  }
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
- });
13037
+ const container = document.createElement("div");
13038
+ container.id = "neoface-modal-container";
13039
+ document.body.appendChild(container);
13040
+ const cleanup = () => {
13041
+ if (document.body.contains(container)) {
13042
+ document.body.removeChild(container);
12793
13043
  }
13044
+ };
13045
+ validateToken(applicationToken).then(() => {
13046
+ const modalElement = React.createElement(FaceCaptureModal, {
13047
+ accessToken: applicationToken,
13048
+ onClose: cleanup,
13049
+ onSuccess: (result) => {
13050
+ cleanup();
13051
+ callbacks.onSuccess({
13052
+ name: result.data.faceId,
13053
+ email: result.data.faceId,
13054
+ documentId: result.data.faceId
13055
+ });
13056
+ }
13057
+ });
13058
+ const root = clientExports.createRoot(container);
13059
+ root.render(modalElement);
13060
+ }).catch((error) => {
13061
+ cleanup();
13062
+ callbacks.onError("TOKEN_VALIDATION_ERROR", error.message || "Failed to validate token");
12794
13063
  });
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
13064
  });
12801
13065
  }
12802
13066
  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);
13067
+ requestConsent().then((accepted) => {
13068
+ if (!accepted) {
13069
+ callbacks.onError("CONSENT_DENIED", CONSENT_DENIED_MESSAGE);
13070
+ return;
12814
13071
  }
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);
13072
+ const container = document.createElement("div");
13073
+ container.id = "neoface-biometric-registration-container";
13074
+ document.body.appendChild(container);
13075
+ let rootRef = null;
13076
+ const cleanup = () => {
13077
+ if (rootRef) {
13078
+ rootRef.unmount();
13079
+ rootRef = null;
13080
+ }
13081
+ if (document.body.contains(container)) {
13082
+ document.body.removeChild(container);
12829
13083
  }
13084
+ };
13085
+ validateToken(applicationToken).then(() => {
13086
+ const modalElement = React.createElement(BiometricRegistrationModal, {
13087
+ personData,
13088
+ applicationToken,
13089
+ useRealApi: (options == null ? void 0 : options.useRealApi) ?? true,
13090
+ onClose: cleanup,
13091
+ onSuccess: (result) => {
13092
+ cleanup();
13093
+ callbacks.onSuccess(result);
13094
+ },
13095
+ onError: (error) => {
13096
+ cleanup();
13097
+ callbacks.onError("BIOMETRIC_REGISTRATION_ERROR", error);
13098
+ }
13099
+ });
13100
+ rootRef = clientExports.createRoot(container);
13101
+ rootRef.render(modalElement);
13102
+ }).catch((error) => {
13103
+ cleanup();
13104
+ callbacks.onError("TOKEN_VALIDATION_ERROR", error.message || "Failed to validate token");
12830
13105
  });
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
13106
  });
12837
13107
  }
12838
13108
  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();
13109
+ requestConsent().then((accepted) => {
13110
+ if (!accepted) {
13111
+ callbacks.onError("CONSENT_DENIED", CONSENT_DENIED_MESSAGE);
13112
+ return;
12857
13113
  }
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);
13114
+ const container = document.createElement("div");
13115
+ container.id = "neoface-liveness-capture-container";
13116
+ document.body.appendChild(container);
13117
+ let completed = false;
13118
+ let rootRef = null;
13119
+ const cleanup = () => {
13120
+ if (rootRef) {
13121
+ rootRef.unmount();
13122
+ rootRef = null;
12870
13123
  }
13124
+ if (document.body.contains(container)) {
13125
+ document.body.removeChild(container);
13126
+ }
13127
+ };
13128
+ const handleClose = () => {
13129
+ cleanup();
13130
+ if (!completed && callbacks.onCancel) {
13131
+ callbacks.onCancel();
13132
+ }
13133
+ };
13134
+ validateToken(applicationToken).then(() => {
13135
+ const modalElement = React.createElement(BiometricRegistrationModal, {
13136
+ applicationToken,
13137
+ onClose: handleClose,
13138
+ onPhotosCaptured: (photos) => {
13139
+ completed = true;
13140
+ callbacks.onSuccess(photos);
13141
+ },
13142
+ onError: (error) => {
13143
+ cleanup();
13144
+ callbacks.onError("LIVENESS_CAPTURE_ERROR", error);
13145
+ }
13146
+ });
13147
+ rootRef = clientExports.createRoot(container);
13148
+ rootRef.render(modalElement);
13149
+ }).catch((error) => {
13150
+ cleanup();
13151
+ callbacks.onError("TOKEN_VALIDATION_ERROR", error.message || "Failed to validate token");
12871
13152
  });
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
13153
  });
12878
13154
  }
12879
13155
  export {
12880
13156
  BiometricCaptureModal,
12881
13157
  BiometricRegistrationModal,
12882
13158
  BiometricStatusOverlay,
13159
+ ConsentModal,
13160
+ DEFAULT_CONSENT_INFO,
12883
13161
  DocumentCaptureModal,
12884
13162
  ENVIRONMENT_URLS,
12885
13163
  EmailPasswordModal,
@@ -12918,6 +13196,7 @@ export {
12918
13196
  registerBiometric,
12919
13197
  registerPersonWithBiometric,
12920
13198
  registerPersonWithoutFace,
13199
+ requestConsent,
12921
13200
  requestPasswordReset,
12922
13201
  simpleIdentification,
12923
13202
  start,