@zoreal/oauth2-react 0.2.14 → 0.2.15

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.
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@ import { createContext, useContext, useMemo, useState as useState2 } from "react
5
5
 
6
6
  // src/wire.ts
7
7
  var WIRE_VERSION = 1;
8
- var SDK_VERSION = "0.2.14";
8
+ var SDK_VERSION = "0.2.15";
9
9
  var DEFAULT_ISSUER = "https://id.zoreal.com";
10
10
  var POLL_INTERVAL_MS = 2e3;
11
11
  var POLL_INTERVAL_ENROLLING_MS = 5e3;
@@ -89,7 +89,6 @@ var en = {
89
89
  titlePresence: "Scan to prove you are a real human",
90
90
  titleApprove: "Approve on your phone",
91
91
  bodyScan: "Scan with your phone camera or the ZOREAL ID app.",
92
- bodyLink: "Approve this sign-in in the ZOREAL ID app on this phone.",
93
92
  bodyApprove: "Approve the login in your ZOREAL ID app.",
94
93
  bodyEnrolling: "Finish setting up ZOREAL ID on your phone, then approve the login.",
95
94
  waiting: "Waiting for scan",
@@ -101,8 +100,7 @@ var en = {
101
100
  cancel: "Cancel",
102
101
  close: "Close",
103
102
  qrAlt: "QR code to sign in with ZOREAL",
104
- buttonContinue: "Continue with ZOREAL",
105
- openApp: "Open ZOREAL ID"
103
+ buttonContinue: "Continue with ZOREAL"
106
104
  };
107
105
  var TRANSLATIONS = {
108
106
  en,
@@ -112,7 +110,6 @@ var TRANSLATIONS = {
112
110
  titlePresence: "Skanna f\xF6r att bevisa att du \xE4r en riktig m\xE4nniska",
113
111
  titleApprove: "Godk\xE4nn p\xE5 telefonen",
114
112
  bodyScan: "Skanna med telefonens kamera eller ZOREAL ID-appen.",
115
- bodyLink: "Godk\xE4nn inloggningen i ZOREAL ID-appen p\xE5 den h\xE4r telefonen.",
116
113
  bodyApprove: "Godk\xE4nn inloggningen i ZOREAL ID-appen.",
117
114
  bodyEnrolling: "Slutf\xF6r konfigurationen av ZOREAL ID p\xE5 telefonen och godk\xE4nn sedan inloggningen.",
118
115
  waiting: "V\xE4ntar p\xE5 skanning",
@@ -124,8 +121,7 @@ var TRANSLATIONS = {
124
121
  cancel: "Avbryt",
125
122
  close: "St\xE4ng",
126
123
  qrAlt: "QR-kod f\xF6r att logga in med ZOREAL",
127
- buttonContinue: "Forts\xE4tt med ZOREAL",
128
- openApp: "\xD6ppna ZOREAL ID"
124
+ buttonContinue: "Forts\xE4tt med ZOREAL"
129
125
  },
130
126
  es: {
131
127
  title: "Escanea para iniciar sesi\xF3n",
@@ -133,7 +129,6 @@ var TRANSLATIONS = {
133
129
  titlePresence: "Escanea para demostrar que eres una persona real",
134
130
  titleApprove: "Apru\xE9balo en tu tel\xE9fono",
135
131
  bodyScan: "Escanea con la c\xE1mara de tu tel\xE9fono o con la app ZOREAL ID.",
136
- bodyLink: "Aprueba este inicio de sesi\xF3n en la app ZOREAL ID de este tel\xE9fono.",
137
132
  bodyApprove: "Aprueba el inicio de sesi\xF3n en tu app ZOREAL ID.",
138
133
  bodyEnrolling: "Termina de configurar ZOREAL ID en tu tel\xE9fono y luego aprueba el inicio de sesi\xF3n.",
139
134
  waiting: "Esperando el escaneo",
@@ -145,8 +140,7 @@ var TRANSLATIONS = {
145
140
  cancel: "Cancelar",
146
141
  close: "Cerrar",
147
142
  qrAlt: "C\xF3digo QR para iniciar sesi\xF3n con ZOREAL",
148
- buttonContinue: "Continuar con ZOREAL",
149
- openApp: "Abrir ZOREAL ID"
143
+ buttonContinue: "Continuar con ZOREAL"
150
144
  },
151
145
  pt: {
152
146
  title: "Digitalize para entrar",
@@ -154,7 +148,6 @@ var TRANSLATIONS = {
154
148
  titlePresence: "Digitalize para provar que \xE9 uma pessoa real",
155
149
  titleApprove: "Aprove no seu telefone",
156
150
  bodyScan: "Digitalize com a c\xE2mara do seu telefone ou com a app ZOREAL ID.",
157
- bodyLink: "Aprove este in\xEDcio de sess\xE3o na app ZOREAL ID neste telem\xF3vel.",
158
151
  bodyApprove: "Aprove o login no app ZOREAL ID.",
159
152
  bodyEnrolling: "Termine de configurar o ZOREAL ID no seu telefone e depois aprove o login.",
160
153
  waiting: "Aguardando digitaliza\xE7\xE3o",
@@ -166,8 +159,7 @@ var TRANSLATIONS = {
166
159
  cancel: "Cancelar",
167
160
  close: "Fechar",
168
161
  qrAlt: "C\xF3digo QR para entrar com ZOREAL",
169
- buttonContinue: "Continuar com ZOREAL",
170
- openApp: "Abrir ZOREAL ID"
162
+ buttonContinue: "Continuar com ZOREAL"
171
163
  },
172
164
  fr: {
173
165
  title: "Scannez pour vous connecter",
@@ -175,7 +167,6 @@ var TRANSLATIONS = {
175
167
  titlePresence: "Scannez pour prouver que vous \xEAtes bien un humain",
176
168
  titleApprove: "Approuvez sur votre t\xE9l\xE9phone",
177
169
  bodyScan: "Scannez avec l'appareil photo de votre t\xE9l\xE9phone ou l'app ZOREAL ID.",
178
- bodyLink: "Approuvez cette connexion dans l'app ZOREAL ID sur ce t\xE9l\xE9phone.",
179
170
  bodyApprove: "Approuvez la connexion dans votre app ZOREAL ID.",
180
171
  bodyEnrolling: "Terminez la configuration de ZOREAL ID sur votre t\xE9l\xE9phone, puis approuvez la connexion.",
181
172
  waiting: "En attente du scan",
@@ -187,8 +178,7 @@ var TRANSLATIONS = {
187
178
  cancel: "Annuler",
188
179
  close: "Fermer",
189
180
  qrAlt: "Code QR pour se connecter avec ZOREAL",
190
- buttonContinue: "Continuer avec ZOREAL",
191
- openApp: "Ouvrir ZOREAL ID"
181
+ buttonContinue: "Continuer avec ZOREAL"
192
182
  },
193
183
  de: {
194
184
  title: "Zum Anmelden scannen",
@@ -196,7 +186,6 @@ var TRANSLATIONS = {
196
186
  titlePresence: "Scannen, um zu beweisen, dass Sie ein echter Mensch sind",
197
187
  titleApprove: "Auf dem Handy best\xE4tigen",
198
188
  bodyScan: "Mit der Handykamera oder der ZOREAL ID App scannen.",
199
- bodyLink: "Best\xE4tigen Sie diese Anmeldung in der ZOREAL ID-App auf diesem Telefon.",
200
189
  bodyApprove: "Anmeldung in der ZOREAL ID App best\xE4tigen.",
201
190
  bodyEnrolling: "ZOREAL ID auf dem Handy fertig einrichten und dann die Anmeldung best\xE4tigen.",
202
191
  waiting: "Warten auf Scan",
@@ -208,8 +197,7 @@ var TRANSLATIONS = {
208
197
  cancel: "Abbrechen",
209
198
  close: "Schlie\xDFen",
210
199
  qrAlt: "QR-Code f\xFCr die Anmeldung mit ZOREAL",
211
- buttonContinue: "Weiter mit ZOREAL",
212
- openApp: "ZOREAL ID \xF6ffnen"
200
+ buttonContinue: "Weiter mit ZOREAL"
213
201
  },
214
202
  ru: {
215
203
  title: "\u041E\u0442\u0441\u043A\u0430\u043D\u0438\u0440\u0443\u0439\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u0432\u043E\u0439\u0442\u0438",
@@ -217,7 +205,6 @@ var TRANSLATIONS = {
217
205
  titlePresence: "\u041E\u0442\u0441\u043A\u0430\u043D\u0438\u0440\u0443\u0439\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u0434\u043E\u043A\u0430\u0437\u0430\u0442\u044C, \u0447\u0442\u043E \u0432\u044B \u0440\u0435\u0430\u043B\u044C\u043D\u044B\u0439 \u0447\u0435\u043B\u043E\u0432\u0435\u043A",
218
206
  titleApprove: "\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u043D\u0430 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0435",
219
207
  bodyScan: "\u041E\u0442\u0441\u043A\u0430\u043D\u0438\u0440\u0443\u0439\u0442\u0435 \u043A\u0430\u043C\u0435\u0440\u043E\u0439 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430 \u0438\u043B\u0438 \u0447\u0435\u0440\u0435\u0437 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 ZOREAL ID.",
220
- bodyLink: "\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u044D\u0442\u043E\u0442 \u0432\u0445\u043E\u0434 \u0432 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 ZOREAL ID \u043D\u0430 \u044D\u0442\u043E\u043C \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0435.",
221
208
  bodyApprove: "\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u0432\u0445\u043E\u0434 \u0432 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0438 ZOREAL ID.",
222
209
  bodyEnrolling: "\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0443 ZOREAL ID \u043D\u0430 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0435, \u0437\u0430\u0442\u0435\u043C \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u0432\u0445\u043E\u0434.",
223
210
  waiting: "\u041E\u0436\u0438\u0434\u0430\u043D\u0438\u0435 \u0441\u043A\u0430\u043D\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u044F",
@@ -229,8 +216,7 @@ var TRANSLATIONS = {
229
216
  cancel: "\u041E\u0442\u043C\u0435\u043D\u0430",
230
217
  close: "\u0417\u0430\u043A\u0440\u044B\u0442\u044C",
231
218
  qrAlt: "QR-\u043A\u043E\u0434 \u0434\u043B\u044F \u0432\u0445\u043E\u0434\u0430 \u0447\u0435\u0440\u0435\u0437 ZOREAL",
232
- buttonContinue: "\u041F\u0440\u043E\u0434\u043E\u043B\u0436\u0438\u0442\u044C \u0441 ZOREAL",
233
- openApp: "\u041E\u0442\u043A\u0440\u044B\u0442\u044C ZOREAL ID"
219
+ buttonContinue: "\u041F\u0440\u043E\u0434\u043E\u043B\u0436\u0438\u0442\u044C \u0441 ZOREAL"
234
220
  },
235
221
  ja: {
236
222
  title: "\u30B9\u30AD\u30E3\u30F3\u3057\u3066\u30ED\u30B0\u30A4\u30F3",
@@ -238,7 +224,6 @@ var TRANSLATIONS = {
238
224
  titlePresence: "\u30B9\u30AD\u30E3\u30F3\u3057\u3066\u5B9F\u5728\u306E\u4EBA\u7269\u3067\u3042\u308B\u3053\u3068\u3092\u8A3C\u660E",
239
225
  titleApprove: "\u30B9\u30DE\u30FC\u30C8\u30D5\u30A9\u30F3\u3067\u627F\u8A8D",
240
226
  bodyScan: "\u30B9\u30DE\u30FC\u30C8\u30D5\u30A9\u30F3\u306E\u30AB\u30E1\u30E9\u307E\u305F\u306FZOREAL ID\u30A2\u30D7\u30EA\u3067\u30B9\u30AD\u30E3\u30F3\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
241
- bodyLink: "\u3053\u306E\u30B9\u30DE\u30FC\u30C8\u30D5\u30A9\u30F3\u306EZOREAL ID\u30A2\u30D7\u30EA\u3067\u3053\u306E\u30ED\u30B0\u30A4\u30F3\u3092\u627F\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
242
227
  bodyApprove: "ZOREAL ID\u30A2\u30D7\u30EA\u3067\u30ED\u30B0\u30A4\u30F3\u3092\u627F\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
243
228
  bodyEnrolling: "\u30B9\u30DE\u30FC\u30C8\u30D5\u30A9\u30F3\u3067ZOREAL ID\u306E\u8A2D\u5B9A\u3092\u5B8C\u4E86\u3057\u3001\u30ED\u30B0\u30A4\u30F3\u3092\u627F\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
244
229
  waiting: "\u30B9\u30AD\u30E3\u30F3\u5F85\u3061",
@@ -250,8 +235,7 @@ var TRANSLATIONS = {
250
235
  cancel: "\u30AD\u30E3\u30F3\u30BB\u30EB",
251
236
  close: "\u9589\u3058\u308B",
252
237
  qrAlt: "ZOREAL\u3067\u30ED\u30B0\u30A4\u30F3\u3059\u308B\u305F\u3081\u306EQR\u30B3\u30FC\u30C9",
253
- buttonContinue: "ZOREAL\u3067\u7D9A\u884C",
254
- openApp: "ZOREAL ID\u3092\u958B\u304F"
238
+ buttonContinue: "ZOREAL\u3067\u7D9A\u884C"
255
239
  },
256
240
  hi: {
257
241
  title: "\u0938\u093E\u0907\u0928 \u0907\u0928 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0938\u094D\u0915\u0948\u0928 \u0915\u0930\u0947\u0902",
@@ -259,7 +243,6 @@ var TRANSLATIONS = {
259
243
  titlePresence: "\u092F\u0939 \u0938\u093E\u092C\u093F\u0924 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0938\u094D\u0915\u0948\u0928 \u0915\u0930\u0947\u0902 \u0915\u093F \u0906\u092A \u090F\u0915 \u0935\u093E\u0938\u094D\u0924\u0935\u093F\u0915 \u0907\u0902\u0938\u093E\u0928 \u0939\u0948\u0902",
260
244
  titleApprove: "\u0905\u092A\u0928\u0947 \u092B\u094B\u0928 \u092A\u0930 \u0938\u094D\u0935\u0940\u0915\u0943\u0924 \u0915\u0930\u0947\u0902",
261
245
  bodyScan: "\u0905\u092A\u0928\u0947 \u092B\u094B\u0928 \u0915\u0947 \u0915\u0948\u092E\u0930\u0947 \u092F\u093E ZOREAL ID \u0910\u092A \u0938\u0947 \u0938\u094D\u0915\u0948\u0928 \u0915\u0930\u0947\u0902\u0964",
262
- bodyLink: "\u0907\u0938 \u092B\u093C\u094B\u0928 \u092A\u0930 ZOREAL ID \u0910\u092A \u092E\u0947\u0902 \u0907\u0938 \u0938\u093E\u0907\u0928 \u0907\u0928 \u0915\u094B \u0938\u094D\u0935\u0940\u0915\u0943\u0924 \u0915\u0930\u0947\u0902\u0964",
263
246
  bodyApprove: "\u0905\u092A\u0928\u0947 ZOREAL ID \u0910\u092A \u092E\u0947\u0902 \u0932\u0949\u0917\u093F\u0928 \u0938\u094D\u0935\u0940\u0915\u0943\u0924 \u0915\u0930\u0947\u0902\u0964",
264
247
  bodyEnrolling: "\u0905\u092A\u0928\u0947 \u092B\u094B\u0928 \u092A\u0930 ZOREAL ID \u0938\u0947\u091F\u0905\u092A \u092A\u0942\u0930\u093E \u0915\u0930\u0947\u0902, \u092B\u093F\u0930 \u0932\u0949\u0917\u093F\u0928 \u0938\u094D\u0935\u0940\u0915\u0943\u0924 \u0915\u0930\u0947\u0902\u0964",
265
248
  waiting: "\u0938\u094D\u0915\u0948\u0928 \u0915\u0940 \u092A\u094D\u0930\u0924\u0940\u0915\u094D\u0937\u093E \u0939\u0948",
@@ -271,8 +254,7 @@ var TRANSLATIONS = {
271
254
  cancel: "\u0930\u0926\u094D\u0926 \u0915\u0930\u0947\u0902",
272
255
  close: "\u092C\u0902\u0926 \u0915\u0930\u0947\u0902",
273
256
  qrAlt: "ZOREAL \u0938\u0947 \u0938\u093E\u0907\u0928 \u0907\u0928 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F QR \u0915\u094B\u0921",
274
- buttonContinue: "ZOREAL \u0915\u0947 \u0938\u093E\u0925 \u091C\u093E\u0930\u0940 \u0930\u0916\u0947\u0902",
275
- openApp: "ZOREAL ID \u0916\u094B\u0932\u0947\u0902"
257
+ buttonContinue: "ZOREAL \u0915\u0947 \u0938\u093E\u0925 \u091C\u093E\u0930\u0940 \u0930\u0916\u0947\u0902"
276
258
  },
277
259
  zhs: {
278
260
  title: "\u626B\u7801\u767B\u5F55",
@@ -280,7 +262,6 @@ var TRANSLATIONS = {
280
262
  titlePresence: "\u626B\u7801\u8BC1\u660E\u60A8\u662F\u771F\u4EBA",
281
263
  titleApprove: "\u5728\u624B\u673A\u4E0A\u6279\u51C6",
282
264
  bodyScan: "\u4F7F\u7528\u624B\u673A\u76F8\u673A\u6216 ZOREAL ID \u5E94\u7528\u626B\u63CF\u3002",
283
- bodyLink: "\u8BF7\u5728\u672C\u624B\u673A\u7684 ZOREAL ID \u5E94\u7528\u4E2D\u6279\u51C6\u6B64\u6B21\u767B\u5F55\u3002",
284
265
  bodyApprove: "\u8BF7\u5728 ZOREAL ID \u5E94\u7528\u4E2D\u6279\u51C6\u767B\u5F55\u3002",
285
266
  bodyEnrolling: "\u8BF7\u5728\u624B\u673A\u4E0A\u5B8C\u6210 ZOREAL ID \u8BBE\u7F6E\uFF0C\u7136\u540E\u6279\u51C6\u767B\u5F55\u3002",
286
267
  waiting: "\u7B49\u5F85\u626B\u63CF",
@@ -292,8 +273,7 @@ var TRANSLATIONS = {
292
273
  cancel: "\u53D6\u6D88",
293
274
  close: "\u5173\u95ED",
294
275
  qrAlt: "\u4F7F\u7528 ZOREAL \u767B\u5F55\u7684\u4E8C\u7EF4\u7801",
295
- buttonContinue: "\u4F7F\u7528 ZOREAL \u7EE7\u7EED",
296
- openApp: "\u6253\u5F00 ZOREAL ID"
276
+ buttonContinue: "\u4F7F\u7528 ZOREAL \u7EE7\u7EED"
297
277
  },
298
278
  zht: {
299
279
  title: "\u6383\u78BC\u767B\u5165",
@@ -301,7 +281,6 @@ var TRANSLATIONS = {
301
281
  titlePresence: "\u6383\u78BC\u8B49\u660E\u60A8\u662F\u771F\u4EBA",
302
282
  titleApprove: "\u5728\u624B\u6A5F\u4E0A\u6838\u51C6",
303
283
  bodyScan: "\u4F7F\u7528\u624B\u6A5F\u76F8\u6A5F\u6216 ZOREAL ID \u61C9\u7528\u7A0B\u5F0F\u6383\u63CF\u3002",
304
- bodyLink: "\u8ACB\u5728\u672C\u624B\u6A5F\u7684 ZOREAL ID \u61C9\u7528\u7A0B\u5F0F\u4E2D\u6838\u51C6\u6B64\u6B21\u767B\u5165\u3002",
305
284
  bodyApprove: "\u8ACB\u5728 ZOREAL ID \u61C9\u7528\u7A0B\u5F0F\u4E2D\u6838\u51C6\u767B\u5165\u3002",
306
285
  bodyEnrolling: "\u8ACB\u5728\u624B\u6A5F\u4E0A\u5B8C\u6210 ZOREAL ID \u8A2D\u5B9A\uFF0C\u7136\u5F8C\u6838\u51C6\u767B\u5165\u3002",
307
286
  waiting: "\u7B49\u5F85\u6383\u63CF",
@@ -313,8 +292,7 @@ var TRANSLATIONS = {
313
292
  cancel: "\u53D6\u6D88",
314
293
  close: "\u95DC\u9589",
315
294
  qrAlt: "\u4F7F\u7528 ZOREAL \u767B\u5165\u7684 QR code",
316
- buttonContinue: "\u4F7F\u7528 ZOREAL \u7E7C\u7E8C",
317
- openApp: "\u958B\u555F ZOREAL ID"
295
+ buttonContinue: "\u4F7F\u7528 ZOREAL \u7E7C\u7E8C"
318
296
  },
319
297
  ar: {
320
298
  title: "\u0627\u0645\u0633\u062D \u0644\u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644",
@@ -322,7 +300,6 @@ var TRANSLATIONS = {
322
300
  titlePresence: "\u0627\u0645\u0633\u062D \u0644\u0625\u062B\u0628\u0627\u062A \u0623\u0646\u0643 \u0625\u0646\u0633\u0627\u0646 \u062D\u0642\u064A\u0642\u064A",
323
301
  titleApprove: "\u0648\u0627\u0641\u0642 \u0639\u0644\u0649 \u0647\u0627\u062A\u0641\u0643",
324
302
  bodyScan: "\u0627\u0645\u0633\u062D \u0628\u0627\u0633\u062A\u062E\u062F\u0627\u0645 \u0643\u0627\u0645\u064A\u0631\u0627 \u0647\u0627\u062A\u0641\u0643 \u0623\u0648 \u062A\u0637\u0628\u064A\u0642 ZOREAL ID.",
325
- bodyLink: "\u0648\u0627\u0641\u0642 \u0639\u0644\u0649 \u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644 \u0647\u0630\u0627 \u0641\u064A \u062A\u0637\u0628\u064A\u0642 ZOREAL ID \u0639\u0644\u0649 \u0647\u0630\u0627 \u0627\u0644\u0647\u0627\u062A\u0641.",
326
303
  bodyApprove: "\u0648\u0627\u0641\u0642 \u0639\u0644\u0649 \u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644 \u0641\u064A \u062A\u0637\u0628\u064A\u0642 ZOREAL ID.",
327
304
  bodyEnrolling: "\u0623\u0643\u0645\u0644 \u0625\u0639\u062F\u0627\u062F ZOREAL ID \u0639\u0644\u0649 \u0647\u0627\u062A\u0641\u0643\u060C \u062B\u0645 \u0648\u0627\u0641\u0642 \u0639\u0644\u0649 \u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644.",
328
305
  waiting: "\u0641\u064A \u0627\u0646\u062A\u0638\u0627\u0631 \u0627\u0644\u0645\u0633\u062D",
@@ -334,8 +311,7 @@ var TRANSLATIONS = {
334
311
  cancel: "\u0625\u0644\u063A\u0627\u0621",
335
312
  close: "\u0625\u063A\u0644\u0627\u0642",
336
313
  qrAlt: "\u0631\u0645\u0632 QR \u0644\u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644 \u0628\u0627\u0633\u062A\u062E\u062F\u0627\u0645 ZOREAL",
337
- buttonContinue: "\u0627\u0644\u0645\u062A\u0627\u0628\u0639\u0629 \u0628\u0627\u0633\u062A\u062E\u062F\u0627\u0645 ZOREAL",
338
- openApp: "\u0641\u062A\u062D ZOREAL ID"
314
+ buttonContinue: "\u0627\u0644\u0645\u062A\u0627\u0628\u0639\u0629 \u0628\u0627\u0633\u062A\u062E\u062F\u0627\u0645 ZOREAL"
339
315
  },
340
316
  ko: {
341
317
  title: "\uC2A4\uCE94\uD558\uC5EC \uB85C\uADF8\uC778",
@@ -343,7 +319,6 @@ var TRANSLATIONS = {
343
319
  titlePresence: "\uC2A4\uCE94\uD558\uC5EC \uC2E4\uC81C \uC0AC\uB78C\uC784\uC744 \uC99D\uBA85",
344
320
  titleApprove: "\uD734\uB300\uD3F0\uC5D0\uC11C \uC2B9\uC778",
345
321
  bodyScan: "\uD734\uB300\uD3F0 \uCE74\uBA54\uB77C \uB610\uB294 ZOREAL ID \uC571\uC73C\uB85C \uC2A4\uCE94\uD558\uC138\uC694.",
346
- bodyLink: "\uC774 \uD734\uB300\uD3F0\uC758 ZOREAL ID \uC571\uC5D0\uC11C \uC774 \uB85C\uADF8\uC778\uC744 \uC2B9\uC778\uD558\uC138\uC694.",
347
322
  bodyApprove: "ZOREAL ID \uC571\uC5D0\uC11C \uB85C\uADF8\uC778\uC744 \uC2B9\uC778\uD558\uC138\uC694.",
348
323
  bodyEnrolling: "\uD734\uB300\uD3F0\uC5D0\uC11C ZOREAL ID \uC124\uC815\uC744 \uC644\uB8CC\uD55C \uD6C4 \uB85C\uADF8\uC778\uC744 \uC2B9\uC778\uD558\uC138\uC694.",
349
324
  waiting: "\uC2A4\uCE94 \uB300\uAE30 \uC911",
@@ -355,8 +330,7 @@ var TRANSLATIONS = {
355
330
  cancel: "\uCDE8\uC18C",
356
331
  close: "\uB2EB\uAE30",
357
332
  qrAlt: "ZOREAL\uB85C \uB85C\uADF8\uC778\uD558\uAE30 \uC704\uD55C QR \uCF54\uB4DC",
358
- buttonContinue: "ZOREAL\uB85C \uACC4\uC18D",
359
- openApp: "ZOREAL ID \uC5F4\uAE30"
333
+ buttonContinue: "ZOREAL\uB85C \uACC4\uC18D"
360
334
  },
361
335
  // Български
362
336
  bg: {
@@ -365,7 +339,6 @@ var TRANSLATIONS = {
365
339
  titlePresence: "\u0421\u043A\u0430\u043D\u0438\u0440\u0430\u0439\u0442\u0435, \u0437\u0430 \u0434\u0430 \u0434\u043E\u043A\u0430\u0436\u0435\u0442\u0435, \u0447\u0435 \u0441\u0442\u0435 \u0438\u0441\u0442\u0438\u043D\u0441\u043A\u0438 \u0447\u043E\u0432\u0435\u043A",
366
340
  titleApprove: "\u041F\u043E\u0442\u0432\u044A\u0440\u0434\u0435\u0442\u0435 \u043D\u0430 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430 \u0441\u0438",
367
341
  bodyScan: "\u0421\u043A\u0430\u043D\u0438\u0440\u0430\u0439\u0442\u0435 \u0441 \u043A\u0430\u043C\u0435\u0440\u0430\u0442\u0430 \u043D\u0430 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430 \u0438\u043B\u0438 \u0441 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435\u0442\u043E ZOREAL ID.",
368
- bodyLink: "\u041E\u0434\u043E\u0431\u0440\u0435\u0442\u0435 \u0442\u043E\u0437\u0438 \u0432\u0445\u043E\u0434 \u0432 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435\u0442\u043E ZOREAL ID \u043D\u0430 \u0442\u043E\u0437\u0438 \u0442\u0435\u043B\u0435\u0444\u043E\u043D.",
369
342
  bodyApprove: "\u041F\u043E\u0442\u0432\u044A\u0440\u0434\u0435\u0442\u0435 \u0432\u0445\u043E\u0434\u0430 \u0432 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435\u0442\u043E ZOREAL ID.",
370
343
  bodyEnrolling: "\u0414\u043E\u0432\u044A\u0440\u0448\u0435\u0442\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0430\u0442\u0430 \u043D\u0430 ZOREAL ID \u043D\u0430 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430 \u0441\u0438, \u0441\u043B\u0435\u0434 \u043A\u043E\u0435\u0442\u043E \u043F\u043E\u0442\u0432\u044A\u0440\u0434\u0435\u0442\u0435 \u0432\u0445\u043E\u0434\u0430.",
371
344
  waiting: "\u0418\u0437\u0447\u0430\u043A\u0432\u0430\u043D\u0435 \u043D\u0430 \u0441\u043A\u0430\u043D\u0438\u0440\u0430\u043D\u0435",
@@ -377,8 +350,7 @@ var TRANSLATIONS = {
377
350
  cancel: "\u041E\u0442\u043A\u0430\u0437",
378
351
  close: "\u0417\u0430\u0442\u0432\u043E\u0440\u0438",
379
352
  qrAlt: "QR \u043A\u043E\u0434 \u0437\u0430 \u0432\u0445\u043E\u0434 \u0441\u044A\u0441 ZOREAL",
380
- buttonContinue: "\u041F\u0440\u043E\u0434\u044A\u043B\u0436\u0438 \u0441\u044A\u0441 ZOREAL",
381
- openApp: "\u041E\u0442\u0432\u043E\u0440\u0438 ZOREAL ID"
353
+ buttonContinue: "\u041F\u0440\u043E\u0434\u044A\u043B\u0436\u0438 \u0441\u044A\u0441 ZOREAL"
382
354
  },
383
355
  // বাংলা
384
356
  bn: {
@@ -387,7 +359,6 @@ var TRANSLATIONS = {
387
359
  titlePresence: "\u0986\u09AA\u09A8\u09BF \u098F\u0995\u099C\u09A8 \u09AA\u09CD\u09B0\u0995\u09C3\u09A4 \u09AE\u09BE\u09A8\u09C1\u09B7 \u09A4\u09BE \u09AA\u09CD\u09B0\u09AE\u09BE\u09A3 \u0995\u09B0\u09A4\u09C7 \u09B8\u09CD\u0995\u09CD\u09AF\u09BE\u09A8 \u0995\u09B0\u09C1\u09A8",
388
360
  titleApprove: "\u0986\u09AA\u09A8\u09BE\u09B0 \u09AB\u09CB\u09A8\u09C7 \u0985\u09A8\u09C1\u09AE\u09CB\u09A6\u09A8 \u0995\u09B0\u09C1\u09A8",
389
361
  bodyScan: "\u0986\u09AA\u09A8\u09BE\u09B0 \u09AB\u09CB\u09A8\u09C7\u09B0 \u0995\u09CD\u09AF\u09BE\u09AE\u09C7\u09B0\u09BE \u09AC\u09BE ZOREAL ID \u0985\u09CD\u09AF\u09BE\u09AA \u09A6\u09BF\u09AF\u09BC\u09C7 \u09B8\u09CD\u0995\u09CD\u09AF\u09BE\u09A8 \u0995\u09B0\u09C1\u09A8\u0964",
390
- bodyLink: "\u098F\u0987 \u09AB\u09CB\u09A8\u09C7\u09B0 ZOREAL ID \u0985\u09CD\u09AF\u09BE\u09AA\u09C7 \u098F\u0987 \u09B8\u09BE\u0987\u09A8 \u0987\u09A8 \u0985\u09A8\u09C1\u09AE\u09CB\u09A6\u09A8 \u0995\u09B0\u09C1\u09A8\u0964",
391
362
  bodyApprove: "\u0986\u09AA\u09A8\u09BE\u09B0 ZOREAL ID \u0985\u09CD\u09AF\u09BE\u09AA\u09C7 \u09B2\u0997\u0987\u09A8 \u0985\u09A8\u09C1\u09AE\u09CB\u09A6\u09A8 \u0995\u09B0\u09C1\u09A8\u0964",
392
363
  bodyEnrolling: "\u0986\u09AA\u09A8\u09BE\u09B0 \u09AB\u09CB\u09A8\u09C7 ZOREAL ID \u09B8\u09C7\u099F\u0986\u09AA \u09B8\u09AE\u09CD\u09AA\u09C2\u09B0\u09CD\u09A3 \u0995\u09B0\u09C1\u09A8, \u09A4\u09BE\u09B0\u09AA\u09B0 \u09B2\u0997\u0987\u09A8 \u0985\u09A8\u09C1\u09AE\u09CB\u09A6\u09A8 \u0995\u09B0\u09C1\u09A8\u0964",
393
364
  waiting: "\u09B8\u09CD\u0995\u09CD\u09AF\u09BE\u09A8\u09C7\u09B0 \u0985\u09AA\u09C7\u0995\u09CD\u09B7\u09BE\u09AF\u09BC",
@@ -399,8 +370,7 @@ var TRANSLATIONS = {
399
370
  cancel: "\u09AC\u09BE\u09A4\u09BF\u09B2",
400
371
  close: "\u09AC\u09A8\u09CD\u09A7",
401
372
  qrAlt: "ZOREAL \u09A6\u09BF\u09AF\u09BC\u09C7 \u09B8\u09BE\u0987\u09A8 \u0987\u09A8 \u0995\u09B0\u09BE\u09B0 \u099C\u09A8\u09CD\u09AF QR \u0995\u09CB\u09A1",
402
- buttonContinue: "ZOREAL \u09A6\u09BF\u09AF\u09BC\u09C7 \u099A\u09BE\u09B2\u09BF\u09AF\u09BC\u09C7 \u09AF\u09BE\u09A8",
403
- openApp: "ZOREAL ID \u0996\u09C1\u09B2\u09C1\u09A8"
373
+ buttonContinue: "ZOREAL \u09A6\u09BF\u09AF\u09BC\u09C7 \u099A\u09BE\u09B2\u09BF\u09AF\u09BC\u09C7 \u09AF\u09BE\u09A8"
404
374
  },
405
375
  // Bosanski
406
376
  bs: {
@@ -409,7 +379,6 @@ var TRANSLATIONS = {
409
379
  titlePresence: "Skenirajte da doka\u017Eete da ste stvarna osoba",
410
380
  titleApprove: "Odobrite na svom telefonu",
411
381
  bodyScan: "Skenirajte kamerom svog telefona ili aplikacijom ZOREAL ID.",
412
- bodyLink: "Odobrite ovu prijavu u aplikaciji ZOREAL ID na ovom telefonu.",
413
382
  bodyApprove: "Odobrite prijavu u aplikaciji ZOREAL ID.",
414
383
  bodyEnrolling: "Zavr\u0161ite pode\u0161avanje ZOREAL ID-a na svom telefonu, a zatim odobrite prijavu.",
415
384
  waiting: "\u010Ceka se skeniranje",
@@ -421,8 +390,7 @@ var TRANSLATIONS = {
421
390
  cancel: "Otka\u017Ei",
422
391
  close: "Zatvori",
423
392
  qrAlt: "QR kod za prijavu putem ZOREAL-a",
424
- buttonContinue: "Nastavi sa ZOREAL-om",
425
- openApp: "Otvori ZOREAL ID"
393
+ buttonContinue: "Nastavi sa ZOREAL-om"
426
394
  },
427
395
  // Čeština
428
396
  cs: {
@@ -431,7 +399,6 @@ var TRANSLATIONS = {
431
399
  titlePresence: "Naskenujte a proka\u017Ete, \u017Ee jste skute\u010Dn\xFD \u010Dlov\u011Bk",
432
400
  titleApprove: "Potvr\u010Fte v telefonu",
433
401
  bodyScan: "Naskenujte fotoapar\xE1tem telefonu nebo aplikac\xED ZOREAL ID.",
434
- bodyLink: "Schvalte toto p\u0159ihl\xE1\u0161en\xED v aplikaci ZOREAL ID na tomto telefonu.",
435
402
  bodyApprove: "Potvr\u010Fte p\u0159ihl\xE1\u0161en\xED v aplikaci ZOREAL ID.",
436
403
  bodyEnrolling: "Dokon\u010Dete nastaven\xED ZOREAL ID v telefonu a pot\xE9 potvr\u010Fte p\u0159ihl\xE1\u0161en\xED.",
437
404
  waiting: "\u010Cek\xE1n\xED na naskenov\xE1n\xED",
@@ -443,8 +410,7 @@ var TRANSLATIONS = {
443
410
  cancel: "Zru\u0161it",
444
411
  close: "Zav\u0159\xEDt",
445
412
  qrAlt: "QR k\xF3d pro p\u0159ihl\xE1\u0161en\xED pomoc\xED ZOREAL",
446
- buttonContinue: "Pokra\u010Dovat se ZOREAL",
447
- openApp: "Otev\u0159\xEDt ZOREAL ID"
413
+ buttonContinue: "Pokra\u010Dovat se ZOREAL"
448
414
  },
449
415
  // Dansk
450
416
  da: {
@@ -453,7 +419,6 @@ var TRANSLATIONS = {
453
419
  titlePresence: "Scan for at bevise, at du er et rigtigt menneske",
454
420
  titleApprove: "Godkend p\xE5 din telefon",
455
421
  bodyScan: "Scan med telefonens kamera eller ZOREAL ID-appen.",
456
- bodyLink: "Godkend dette login i ZOREAL ID-appen p\xE5 denne telefon.",
457
422
  bodyApprove: "Godkend login i din ZOREAL ID-app.",
458
423
  bodyEnrolling: "F\xE6rdigg\xF8r ops\xE6tningen af ZOREAL ID p\xE5 din telefon, og godkend derefter login.",
459
424
  waiting: "Venter p\xE5 scanning",
@@ -465,8 +430,7 @@ var TRANSLATIONS = {
465
430
  cancel: "Annuller",
466
431
  close: "Luk",
467
432
  qrAlt: "QR-kode til at logge ind med ZOREAL",
468
- buttonContinue: "Forts\xE6t med ZOREAL",
469
- openApp: "\xC5bn ZOREAL ID"
433
+ buttonContinue: "Forts\xE6t med ZOREAL"
470
434
  },
471
435
  // Ελληνικά
472
436
  el: {
@@ -475,7 +439,6 @@ var TRANSLATIONS = {
475
439
  titlePresence: "\u03A3\u03AC\u03C1\u03C9\u03C3\u03B7 \u03B3\u03B9\u03B1 \u03BD\u03B1 \u03B1\u03C0\u03BF\u03B4\u03B5\u03AF\u03BE\u03B5\u03C4\u03B5 \u03CC\u03C4\u03B9 \u03B5\u03AF\u03C3\u03C4\u03B5 \u03C0\u03C1\u03B1\u03B3\u03BC\u03B1\u03C4\u03B9\u03BA\u03CC\u03C2 \u03AC\u03BD\u03B8\u03C1\u03C9\u03C0\u03BF\u03C2",
476
440
  titleApprove: "\u0388\u03B3\u03BA\u03C1\u03B9\u03C3\u03B7 \u03B1\u03C0\u03CC \u03C4\u03BF \u03BA\u03B9\u03BD\u03B7\u03C4\u03CC \u03C3\u03B1\u03C2",
477
441
  bodyScan: "\u03A3\u03B1\u03C1\u03CE\u03C3\u03C4\u03B5 \u03BC\u03B5 \u03C4\u03B7\u03BD \u03BA\u03AC\u03BC\u03B5\u03C1\u03B1 \u03C4\u03BF\u03C5 \u03BA\u03B9\u03BD\u03B7\u03C4\u03BF\u03CD \u03C3\u03B1\u03C2 \u03AE \u03C4\u03B7\u03BD \u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE ZOREAL ID.",
478
- bodyLink: "\u0395\u03B3\u03BA\u03C1\u03AF\u03BD\u03B5\u03C4\u03B5 \u03B1\u03C5\u03C4\u03AE \u03C4\u03B7 \u03C3\u03CD\u03BD\u03B4\u03B5\u03C3\u03B7 \u03C3\u03C4\u03B7\u03BD \u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE ZOREAL ID \u03C3\u03B5 \u03B1\u03C5\u03C4\u03CC \u03C4\u03BF \u03C4\u03B7\u03BB\u03AD\u03C6\u03C9\u03BD\u03BF.",
479
442
  bodyApprove: "\u0395\u03B3\u03BA\u03C1\u03AF\u03BD\u03B5\u03C4\u03B5 \u03C4\u03B7 \u03C3\u03CD\u03BD\u03B4\u03B5\u03C3\u03B7 \u03C3\u03C4\u03B7\u03BD \u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE ZOREAL ID.",
480
443
  bodyEnrolling: "\u039F\u03BB\u03BF\u03BA\u03BB\u03B7\u03C1\u03CE\u03C3\u03C4\u03B5 \u03C4\u03B7 \u03C1\u03CD\u03B8\u03BC\u03B9\u03C3\u03B7 \u03C4\u03BF\u03C5 ZOREAL ID \u03C3\u03C4\u03BF \u03BA\u03B9\u03BD\u03B7\u03C4\u03CC \u03C3\u03B1\u03C2 \u03BA\u03B1\u03B9 \u03AD\u03C0\u03B5\u03B9\u03C4\u03B1 \u03B5\u03B3\u03BA\u03C1\u03AF\u03BD\u03B5\u03C4\u03B5 \u03C4\u03B7 \u03C3\u03CD\u03BD\u03B4\u03B5\u03C3\u03B7.",
481
444
  waiting: "\u0391\u03BD\u03B1\u03BC\u03BF\u03BD\u03AE \u03C3\u03AC\u03C1\u03C9\u03C3\u03B7\u03C2",
@@ -487,8 +450,7 @@ var TRANSLATIONS = {
487
450
  cancel: "\u0386\u03BA\u03C5\u03C1\u03BF",
488
451
  close: "\u039A\u03BB\u03B5\u03AF\u03C3\u03B9\u03BC\u03BF",
489
452
  qrAlt: "\u039A\u03C9\u03B4\u03B9\u03BA\u03CC\u03C2 QR \u03B3\u03B9\u03B1 \u03C3\u03CD\u03BD\u03B4\u03B5\u03C3\u03B7 \u03BC\u03B5 ZOREAL",
490
- buttonContinue: "\u03A3\u03C5\u03BD\u03AD\u03C7\u03B5\u03B9\u03B1 \u03BC\u03B5 ZOREAL",
491
- openApp: "\u0386\u03BD\u03BF\u03B9\u03B3\u03BC\u03B1 ZOREAL ID"
453
+ buttonContinue: "\u03A3\u03C5\u03BD\u03AD\u03C7\u03B5\u03B9\u03B1 \u03BC\u03B5 ZOREAL"
492
454
  },
493
455
  // Español (LA)
494
456
  "es-419": {
@@ -497,7 +459,6 @@ var TRANSLATIONS = {
497
459
  titlePresence: "Escanea para demostrar que eres una persona real",
498
460
  titleApprove: "Aprueba desde tu celular",
499
461
  bodyScan: "Escanea con la c\xE1mara de tu celular o con la app ZOREAL ID.",
500
- bodyLink: "Aprueba este inicio de sesi\xF3n en la app ZOREAL ID de este tel\xE9fono.",
501
462
  bodyApprove: "Aprueba el inicio de sesi\xF3n en tu app ZOREAL ID.",
502
463
  bodyEnrolling: "Termina de configurar ZOREAL ID en tu celular y luego aprueba el inicio de sesi\xF3n.",
503
464
  waiting: "Esperando escaneo",
@@ -509,8 +470,7 @@ var TRANSLATIONS = {
509
470
  cancel: "Cancelar",
510
471
  close: "Cerrar",
511
472
  qrAlt: "C\xF3digo QR para iniciar sesi\xF3n con ZOREAL",
512
- buttonContinue: "Continuar con ZOREAL",
513
- openApp: "Abrir ZOREAL ID"
473
+ buttonContinue: "Continuar con ZOREAL"
514
474
  },
515
475
  // Suomi
516
476
  fi: {
@@ -519,7 +479,6 @@ var TRANSLATIONS = {
519
479
  titlePresence: "Todista skannaamalla, ett\xE4 olet oikea ihminen",
520
480
  titleApprove: "Hyv\xE4ksy puhelimessasi",
521
481
  bodyScan: "Skannaa puhelimesi kameralla tai ZOREAL ID -sovelluksella.",
522
- bodyLink: "Hyv\xE4ksy t\xE4m\xE4 kirjautuminen ZOREAL ID -sovelluksessa t\xE4ll\xE4 puhelimella.",
523
482
  bodyApprove: "Hyv\xE4ksy kirjautuminen ZOREAL ID -sovelluksessasi.",
524
483
  bodyEnrolling: "Viimeistele ZOREAL ID -sovelluksen k\xE4ytt\xF6\xF6notto puhelimellasi ja hyv\xE4ksy sitten kirjautuminen.",
525
484
  waiting: "Odotetaan skannausta",
@@ -531,8 +490,7 @@ var TRANSLATIONS = {
531
490
  cancel: "Peruuta",
532
491
  close: "Sulje",
533
492
  qrAlt: "QR-koodi ZOREAL-kirjautumista varten",
534
- buttonContinue: "Jatka ZOREALilla",
535
- openApp: "Avaa ZOREAL ID"
493
+ buttonContinue: "Jatka ZOREALilla"
536
494
  },
537
495
  // עברית
538
496
  he: {
@@ -541,7 +499,6 @@ var TRANSLATIONS = {
541
499
  titlePresence: "\u05E1\u05E8\u05D5\u05E7 \u05DB\u05D3\u05D9 \u05DC\u05D4\u05D5\u05DB\u05D9\u05D7 \u05E9\u05D0\u05EA\u05D4 \u05D0\u05D3\u05DD \u05D0\u05DE\u05D9\u05EA\u05D9",
542
500
  titleApprove: "\u05D0\u05E9\u05E8 \u05D1\u05D8\u05DC\u05E4\u05D5\u05DF \u05E9\u05DC\u05DA",
543
501
  bodyScan: "\u05E1\u05E8\u05D5\u05E7 \u05D1\u05D0\u05DE\u05E6\u05E2\u05D5\u05EA \u05DE\u05E6\u05DC\u05DE\u05EA \u05D4\u05D8\u05DC\u05E4\u05D5\u05DF \u05E9\u05DC\u05DA \u05D0\u05D5 \u05D0\u05E4\u05DC\u05D9\u05E7\u05E6\u05D9\u05D9\u05EA ZOREAL ID.",
544
- bodyLink: "\u05D0\u05E9\u05E8 \u05D0\u05EA \u05D4\u05D4\u05EA\u05D7\u05D1\u05E8\u05D5\u05EA \u05D4\u05D6\u05D5 \u05D1\u05D0\u05E4\u05DC\u05D9\u05E7\u05E6\u05D9\u05D9\u05EA ZOREAL ID \u05D1\u05D8\u05DC\u05E4\u05D5\u05DF \u05D4\u05D6\u05D4.",
545
502
  bodyApprove: "\u05D0\u05E9\u05E8 \u05D0\u05EA \u05D4\u05D4\u05EA\u05D7\u05D1\u05E8\u05D5\u05EA \u05D1\u05D0\u05E4\u05DC\u05D9\u05E7\u05E6\u05D9\u05D9\u05EA ZOREAL ID \u05E9\u05DC\u05DA.",
546
503
  bodyEnrolling: "\u05E1\u05D9\u05D9\u05DD \u05DC\u05D4\u05D2\u05D3\u05D9\u05E8 \u05D0\u05EA ZOREAL ID \u05D1\u05D8\u05DC\u05E4\u05D5\u05DF \u05E9\u05DC\u05DA, \u05D5\u05D0\u05D6 \u05D0\u05E9\u05E8 \u05D0\u05EA \u05D4\u05D4\u05EA\u05D7\u05D1\u05E8\u05D5\u05EA.",
547
504
  waiting: "\u05DE\u05DE\u05EA\u05D9\u05DF \u05DC\u05E1\u05E8\u05D9\u05E7\u05D4",
@@ -553,8 +510,7 @@ var TRANSLATIONS = {
553
510
  cancel: "\u05D1\u05D9\u05D8\u05D5\u05DC",
554
511
  close: "\u05E1\u05D2\u05D5\u05E8",
555
512
  qrAlt: "\u05E7\u05D5\u05D3 QR \u05DC\u05D4\u05EA\u05D7\u05D1\u05E8\u05D5\u05EA \u05E2\u05DD ZOREAL",
556
- buttonContinue: "\u05D4\u05DE\u05E9\u05DA \u05E2\u05DD ZOREAL",
557
- openApp: "\u05E4\u05EA\u05D7 \u05D0\u05EA ZOREAL ID"
513
+ buttonContinue: "\u05D4\u05DE\u05E9\u05DA \u05E2\u05DD ZOREAL"
558
514
  },
559
515
  // Hrvatski
560
516
  hr: {
@@ -563,7 +519,6 @@ var TRANSLATIONS = {
563
519
  titlePresence: "Skenirajte kako biste dokazali da ste stvarna osoba",
564
520
  titleApprove: "Odobrite na svom mobitelu",
565
521
  bodyScan: "Skenirajte kamerom svog mobitela ili aplikacijom ZOREAL ID.",
566
- bodyLink: "Odobrite ovu prijavu u aplikaciji ZOREAL ID na ovom telefonu.",
567
522
  bodyApprove: "Odobrite prijavu u aplikaciji ZOREAL ID.",
568
523
  bodyEnrolling: "Dovr\u0161ite postavljanje ZOREAL ID-a na svom mobitelu, a zatim odobrite prijavu.",
569
524
  waiting: "\u010Ceka se skeniranje",
@@ -575,8 +530,7 @@ var TRANSLATIONS = {
575
530
  cancel: "Odustani",
576
531
  close: "Zatvori",
577
532
  qrAlt: "QR kod za prijavu putem ZOREAL-a",
578
- buttonContinue: "Nastavi sa ZOREAL-om",
579
- openApp: "Otvori ZOREAL ID"
533
+ buttonContinue: "Nastavi sa ZOREAL-om"
580
534
  },
581
535
  // Magyar
582
536
  hu: {
@@ -585,7 +539,6 @@ var TRANSLATIONS = {
585
539
  titlePresence: "Olvassa be annak igazol\xE1s\xE1hoz, hogy val\xF3di ember",
586
540
  titleApprove: "J\xF3v\xE1hagy\xE1s a telefonj\xE1n",
587
541
  bodyScan: "Olvassa be a telefonja kamer\xE1j\xE1val, vagy a ZOREAL ID alkalmaz\xE1ssal.",
588
- bodyLink: "Hagyja j\xF3v\xE1 ezt a bejelentkez\xE9st a ZOREAL ID alkalmaz\xE1sban ezen a telefonon.",
589
542
  bodyApprove: "Hagyja j\xF3v\xE1 a bejelentkez\xE9st a ZOREAL ID alkalmaz\xE1sban.",
590
543
  bodyEnrolling: "Fejezze be a ZOREAL ID be\xE1ll\xEDt\xE1s\xE1t a telefonj\xE1n, majd hagyja j\xF3v\xE1 a bejelentkez\xE9st.",
591
544
  waiting: "V\xE1rakoz\xE1s beolvas\xE1sra",
@@ -597,8 +550,7 @@ var TRANSLATIONS = {
597
550
  cancel: "M\xE9gse",
598
551
  close: "Bez\xE1r\xE1s",
599
552
  qrAlt: "QR-k\xF3d a ZOREAL-lal val\xF3 bejelentkez\xE9shez",
600
- buttonContinue: "Folytat\xE1s a ZOREAL-lal",
601
- openApp: "ZOREAL ID megnyit\xE1sa"
553
+ buttonContinue: "Folytat\xE1s a ZOREAL-lal"
602
554
  },
603
555
  // Bahasa Indonesia
604
556
  id: {
@@ -607,7 +559,6 @@ var TRANSLATIONS = {
607
559
  titlePresence: "Pindai untuk membuktikan bahwa Anda manusia sungguhan",
608
560
  titleApprove: "Setujui di ponsel Anda",
609
561
  bodyScan: "Pindai dengan kamera ponsel atau aplikasi ZOREAL ID.",
610
- bodyLink: "Setujui masuk ini di aplikasi ZOREAL ID pada ponsel ini.",
611
562
  bodyApprove: "Setujui proses masuk di aplikasi ZOREAL ID Anda.",
612
563
  bodyEnrolling: "Selesaikan pengaturan ZOREAL ID di ponsel Anda, lalu setujui proses masuk.",
613
564
  waiting: "Menunggu pemindaian",
@@ -619,8 +570,7 @@ var TRANSLATIONS = {
619
570
  cancel: "Batal",
620
571
  close: "Tutup",
621
572
  qrAlt: "Kode QR untuk masuk dengan ZOREAL",
622
- buttonContinue: "Lanjutkan dengan ZOREAL",
623
- openApp: "Buka ZOREAL ID"
573
+ buttonContinue: "Lanjutkan dengan ZOREAL"
624
574
  },
625
575
  // Italiano
626
576
  it: {
@@ -629,7 +579,6 @@ var TRANSLATIONS = {
629
579
  titlePresence: "Scansiona per dimostrare di essere una persona reale",
630
580
  titleApprove: "Approva sul tuo telefono",
631
581
  bodyScan: "Scansiona con la fotocamera del telefono o con l'app ZOREAL ID.",
632
- bodyLink: "Approva questo accesso nell'app ZOREAL ID su questo telefono.",
633
582
  bodyApprove: "Approva l'accesso nell'app ZOREAL ID.",
634
583
  bodyEnrolling: "Completa la configurazione di ZOREAL ID sul telefono, poi approva l'accesso.",
635
584
  waiting: "In attesa della scansione",
@@ -641,8 +590,7 @@ var TRANSLATIONS = {
641
590
  cancel: "Annulla",
642
591
  close: "Chiudi",
643
592
  qrAlt: "Codice QR per accedere con ZOREAL",
644
- buttonContinue: "Continua con ZOREAL",
645
- openApp: "Apri ZOREAL ID"
593
+ buttonContinue: "Continua con ZOREAL"
646
594
  },
647
595
  // Bahasa Melayu
648
596
  ms: {
@@ -651,7 +599,6 @@ var TRANSLATIONS = {
651
599
  titlePresence: "Imbas untuk membuktikan anda manusia sebenar",
652
600
  titleApprove: "Luluskan di telefon anda",
653
601
  bodyScan: "Imbas dengan kamera telefon atau aplikasi ZOREAL ID.",
654
- bodyLink: "Luluskan log masuk ini dalam aplikasi ZOREAL ID pada telefon ini.",
655
602
  bodyApprove: "Luluskan log masuk dalam aplikasi ZOREAL ID anda.",
656
603
  bodyEnrolling: "Selesaikan persediaan ZOREAL ID di telefon anda, kemudian luluskan log masuk.",
657
604
  waiting: "Menunggu imbasan",
@@ -663,8 +610,7 @@ var TRANSLATIONS = {
663
610
  cancel: "Batal",
664
611
  close: "Tutup",
665
612
  qrAlt: "Kod QR untuk log masuk dengan ZOREAL",
666
- buttonContinue: "Teruskan dengan ZOREAL",
667
- openApp: "Buka ZOREAL ID"
613
+ buttonContinue: "Teruskan dengan ZOREAL"
668
614
  },
669
615
  // Nederlands
670
616
  nl: {
@@ -673,7 +619,6 @@ var TRANSLATIONS = {
673
619
  titlePresence: "Scan om te bewijzen dat je een echt mens bent",
674
620
  titleApprove: "Keur goed op je telefoon",
675
621
  bodyScan: "Scan met de camera van je telefoon of de ZOREAL ID-app.",
676
- bodyLink: "Keur deze aanmelding goed in de ZOREAL ID-app op deze telefoon.",
677
622
  bodyApprove: "Keur de aanmelding goed in je ZOREAL ID-app.",
678
623
  bodyEnrolling: "Rond het instellen van ZOREAL ID op je telefoon af en keur daarna de aanmelding goed.",
679
624
  waiting: "Wachten op scan",
@@ -685,8 +630,7 @@ var TRANSLATIONS = {
685
630
  cancel: "Annuleren",
686
631
  close: "Sluiten",
687
632
  qrAlt: "QR-code om in te loggen met ZOREAL",
688
- buttonContinue: "Doorgaan met ZOREAL",
689
- openApp: "ZOREAL ID openen"
633
+ buttonContinue: "Doorgaan met ZOREAL"
690
634
  },
691
635
  // Norsk
692
636
  no: {
@@ -695,7 +639,6 @@ var TRANSLATIONS = {
695
639
  titlePresence: "Skann for \xE5 bevise at du er et ekte menneske",
696
640
  titleApprove: "Godkjenn p\xE5 telefonen din",
697
641
  bodyScan: "Skann med telefonens kamera eller ZOREAL ID-appen.",
698
- bodyLink: "Godkjenn denne innloggingen i ZOREAL ID-appen p\xE5 denne telefonen.",
699
642
  bodyApprove: "Godkjenn innloggingen i ZOREAL ID-appen din.",
700
643
  bodyEnrolling: "Fullf\xF8r oppsettet av ZOREAL ID p\xE5 telefonen din, og godkjenn deretter innloggingen.",
701
644
  waiting: "Venter p\xE5 skanning",
@@ -707,8 +650,7 @@ var TRANSLATIONS = {
707
650
  cancel: "Avbryt",
708
651
  close: "Lukk",
709
652
  qrAlt: "QR-kode for \xE5 logge inn med ZOREAL",
710
- buttonContinue: "Fortsett med ZOREAL",
711
- openApp: "\xC5pne ZOREAL ID"
653
+ buttonContinue: "Fortsett med ZOREAL"
712
654
  },
713
655
  // Polski
714
656
  pl: {
@@ -717,7 +659,6 @@ var TRANSLATIONS = {
717
659
  titlePresence: "Zeskanuj, aby udowodni\u0107, \u017Ce jeste\u015B prawdziwym cz\u0142owiekiem",
718
660
  titleApprove: "Zatwierd\u017A w telefonie",
719
661
  bodyScan: "Zeskanuj aparatem telefonu lub aplikacj\u0105 ZOREAL ID.",
720
- bodyLink: "Zatwierd\u017A to logowanie w aplikacji ZOREAL ID na tym telefonie.",
721
662
  bodyApprove: "Zatwierd\u017A logowanie w aplikacji ZOREAL ID.",
722
663
  bodyEnrolling: "Doko\u0144cz konfiguracj\u0119 ZOREAL ID w telefonie, a nast\u0119pnie zatwierd\u017A logowanie.",
723
664
  waiting: "Czekanie na skan",
@@ -729,8 +670,7 @@ var TRANSLATIONS = {
729
670
  cancel: "Anuluj",
730
671
  close: "Zamknij",
731
672
  qrAlt: "Kod QR do logowania za pomoc\u0105 ZOREAL",
732
- buttonContinue: "Kontynuuj z ZOREAL",
733
- openApp: "Otw\xF3rz ZOREAL ID"
673
+ buttonContinue: "Kontynuuj z ZOREAL"
734
674
  },
735
675
  // Português (BR)
736
676
  "pt-br": {
@@ -739,7 +679,6 @@ var TRANSLATIONS = {
739
679
  titlePresence: "Escaneie para provar que voc\xEA \xE9 uma pessoa real",
740
680
  titleApprove: "Aprove no seu celular",
741
681
  bodyScan: "Escaneie com a c\xE2mera do seu celular ou com o app ZOREAL ID.",
742
- bodyLink: "Aprove este login no app ZOREAL ID neste celular.",
743
682
  bodyApprove: "Aprove o login no app ZOREAL ID.",
744
683
  bodyEnrolling: "Termine de configurar o ZOREAL ID no seu celular e depois aprove o login.",
745
684
  waiting: "Aguardando escaneamento",
@@ -751,8 +690,7 @@ var TRANSLATIONS = {
751
690
  cancel: "Cancelar",
752
691
  close: "Fechar",
753
692
  qrAlt: "C\xF3digo QR para entrar com ZOREAL",
754
- buttonContinue: "Continuar com ZOREAL",
755
- openApp: "Abrir ZOREAL ID"
693
+ buttonContinue: "Continuar com ZOREAL"
756
694
  },
757
695
  // Română
758
696
  ro: {
@@ -761,7 +699,6 @@ var TRANSLATIONS = {
761
699
  titlePresence: "Scana\u021Bi pentru a dovedi c\u0103 sunte\u021Bi o persoan\u0103 real\u0103",
762
700
  titleApprove: "Aproba\u021Bi de pe telefon",
763
701
  bodyScan: "Scana\u021Bi cu camera telefonului sau cu aplica\u021Bia ZOREAL ID.",
764
- bodyLink: "Aproba\u021Bi aceast\u0103 conectare \xEEn aplica\u021Bia ZOREAL ID de pe acest telefon.",
765
702
  bodyApprove: "Aproba\u021Bi conectarea \xEEn aplica\u021Bia ZOREAL ID.",
766
703
  bodyEnrolling: "Finaliza\u021Bi configurarea ZOREAL ID pe telefon, apoi aproba\u021Bi conectarea.",
767
704
  waiting: "Se a\u0219teapt\u0103 scanarea",
@@ -773,8 +710,7 @@ var TRANSLATIONS = {
773
710
  cancel: "Anuleaz\u0103",
774
711
  close: "\xCEnchide",
775
712
  qrAlt: "Cod QR pentru conectare cu ZOREAL",
776
- buttonContinue: "Continua\u021Bi cu ZOREAL",
777
- openApp: "Deschide\u021Bi ZOREAL ID"
713
+ buttonContinue: "Continua\u021Bi cu ZOREAL"
778
714
  },
779
715
  // Српски
780
716
  sr: {
@@ -783,7 +719,6 @@ var TRANSLATIONS = {
783
719
  titlePresence: "\u0421\u043A\u0435\u043D\u0438\u0440\u0430\u0458\u0442\u0435 \u0434\u0430 \u0434\u043E\u043A\u0430\u0436\u0435\u0442\u0435 \u0434\u0430 \u0441\u0442\u0435 \u043F\u0440\u0430\u0432\u0430 \u043E\u0441\u043E\u0431\u0430",
784
720
  titleApprove: "\u041E\u0434\u043E\u0431\u0440\u0438\u0442\u0435 \u043D\u0430 \u0441\u0432\u043E\u043C \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0443",
785
721
  bodyScan: "\u0421\u043A\u0435\u043D\u0438\u0440\u0430\u0458\u0442\u0435 \u043A\u0430\u043C\u0435\u0440\u043E\u043C \u0441\u0432\u043E\u0433 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430 \u0438\u043B\u0438 \u0430\u043F\u043B\u0438\u043A\u0430\u0446\u0438\u0458\u043E\u043C ZOREAL ID.",
786
- bodyLink: "\u041E\u0434\u043E\u0431\u0440\u0438\u0442\u0435 \u043E\u0432\u0443 \u043F\u0440\u0438\u0458\u0430\u0432\u0443 \u0443 \u0430\u043F\u043B\u0438\u043A\u0430\u0446\u0438\u0458\u0438 ZOREAL ID \u043D\u0430 \u043E\u0432\u043E\u043C \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0443.",
787
722
  bodyApprove: "\u041E\u0434\u043E\u0431\u0440\u0438\u0442\u0435 \u043F\u0440\u0438\u0458\u0430\u0432\u0443 \u0443 \u0430\u043F\u043B\u0438\u043A\u0430\u0446\u0438\u0458\u0438 ZOREAL ID.",
788
723
  bodyEnrolling: "\u0414\u043E\u0432\u0440\u0448\u0438\u0442\u0435 \u043F\u043E\u0434\u0435\u0448\u0430\u0432\u0430\u045A\u0435 ZOREAL ID-\u0430 \u043D\u0430 \u0441\u0432\u043E\u043C \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0443, \u043F\u0430 \u043E\u0434\u043E\u0431\u0440\u0438\u0442\u0435 \u043F\u0440\u0438\u0458\u0430\u0432\u0443.",
789
724
  waiting: "\u0427\u0435\u043A\u0430 \u0441\u0435 \u0441\u043A\u0435\u043D\u0438\u0440\u0430\u045A\u0435",
@@ -795,8 +730,7 @@ var TRANSLATIONS = {
795
730
  cancel: "\u041E\u0442\u043A\u0430\u0436\u0438",
796
731
  close: "\u0417\u0430\u0442\u0432\u043E\u0440\u0438",
797
732
  qrAlt: "QR \u043A\u043E\u0434 \u0437\u0430 \u043F\u0440\u0438\u0458\u0430\u0432\u0443 \u043F\u0440\u0435\u043A\u043E ZOREAL-\u0430",
798
- buttonContinue: "\u041D\u0430\u0441\u0442\u0430\u0432\u0438 \u0441\u0430 ZOREAL-\u043E\u043C",
799
- openApp: "\u041E\u0442\u0432\u043E\u0440\u0438 ZOREAL ID"
733
+ buttonContinue: "\u041D\u0430\u0441\u0442\u0430\u0432\u0438 \u0441\u0430 ZOREAL-\u043E\u043C"
800
734
  },
801
735
  // ไทย
802
736
  th: {
@@ -805,7 +739,6 @@ var TRANSLATIONS = {
805
739
  titlePresence: "\u0E2A\u0E41\u0E01\u0E19\u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E1E\u0E34\u0E2A\u0E39\u0E08\u0E19\u0E4C\u0E27\u0E48\u0E32\u0E04\u0E38\u0E13\u0E40\u0E1B\u0E47\u0E19\u0E21\u0E19\u0E38\u0E29\u0E22\u0E4C\u0E08\u0E23\u0E34\u0E07",
806
740
  titleApprove: "\u0E2D\u0E19\u0E38\u0E21\u0E31\u0E15\u0E34\u0E1A\u0E19\u0E42\u0E17\u0E23\u0E28\u0E31\u0E1E\u0E17\u0E4C\u0E02\u0E2D\u0E07\u0E04\u0E38\u0E13",
807
741
  bodyScan: "\u0E2A\u0E41\u0E01\u0E19\u0E14\u0E49\u0E27\u0E22\u0E01\u0E25\u0E49\u0E2D\u0E07\u0E42\u0E17\u0E23\u0E28\u0E31\u0E1E\u0E17\u0E4C\u0E2B\u0E23\u0E37\u0E2D\u0E41\u0E2D\u0E1B ZOREAL ID",
808
- bodyLink: "\u0E2D\u0E19\u0E38\u0E21\u0E31\u0E15\u0E34\u0E01\u0E32\u0E23\u0E40\u0E02\u0E49\u0E32\u0E2A\u0E39\u0E48\u0E23\u0E30\u0E1A\u0E1A\u0E19\u0E35\u0E49\u0E43\u0E19\u0E41\u0E2D\u0E1B ZOREAL ID \u0E1A\u0E19\u0E42\u0E17\u0E23\u0E28\u0E31\u0E1E\u0E17\u0E4C\u0E40\u0E04\u0E23\u0E37\u0E48\u0E2D\u0E07\u0E19\u0E35\u0E49",
809
742
  bodyApprove: "\u0E2D\u0E19\u0E38\u0E21\u0E31\u0E15\u0E34\u0E01\u0E32\u0E23\u0E40\u0E02\u0E49\u0E32\u0E2A\u0E39\u0E48\u0E23\u0E30\u0E1A\u0E1A\u0E43\u0E19\u0E41\u0E2D\u0E1B ZOREAL ID \u0E02\u0E2D\u0E07\u0E04\u0E38\u0E13",
810
743
  bodyEnrolling: "\u0E15\u0E31\u0E49\u0E07\u0E04\u0E48\u0E32 ZOREAL ID \u0E1A\u0E19\u0E42\u0E17\u0E23\u0E28\u0E31\u0E1E\u0E17\u0E4C\u0E02\u0E2D\u0E07\u0E04\u0E38\u0E13\u0E43\u0E2B\u0E49\u0E40\u0E2A\u0E23\u0E47\u0E08\u0E2A\u0E34\u0E49\u0E19 \u0E41\u0E25\u0E49\u0E27\u0E2D\u0E19\u0E38\u0E21\u0E31\u0E15\u0E34\u0E01\u0E32\u0E23\u0E40\u0E02\u0E49\u0E32\u0E2A\u0E39\u0E48\u0E23\u0E30\u0E1A\u0E1A",
811
744
  waiting: "\u0E23\u0E2D\u0E01\u0E32\u0E23\u0E2A\u0E41\u0E01\u0E19",
@@ -817,8 +750,7 @@ var TRANSLATIONS = {
817
750
  cancel: "\u0E22\u0E01\u0E40\u0E25\u0E34\u0E01",
818
751
  close: "\u0E1B\u0E34\u0E14",
819
752
  qrAlt: "\u0E04\u0E34\u0E27\u0E2D\u0E32\u0E23\u0E4C\u0E42\u0E04\u0E49\u0E14\u0E2A\u0E33\u0E2B\u0E23\u0E31\u0E1A\u0E40\u0E02\u0E49\u0E32\u0E2A\u0E39\u0E48\u0E23\u0E30\u0E1A\u0E1A\u0E14\u0E49\u0E27\u0E22 ZOREAL",
820
- buttonContinue: "\u0E14\u0E33\u0E40\u0E19\u0E34\u0E19\u0E01\u0E32\u0E23\u0E15\u0E48\u0E2D\u0E14\u0E49\u0E27\u0E22 ZOREAL",
821
- openApp: "\u0E40\u0E1B\u0E34\u0E14 ZOREAL ID"
753
+ buttonContinue: "\u0E14\u0E33\u0E40\u0E19\u0E34\u0E19\u0E01\u0E32\u0E23\u0E15\u0E48\u0E2D\u0E14\u0E49\u0E27\u0E22 ZOREAL"
822
754
  },
823
755
  // Tagalog
824
756
  tl: {
@@ -827,7 +759,6 @@ var TRANSLATIONS = {
827
759
  titlePresence: "I-scan para patunayang tunay kang tao",
828
760
  titleApprove: "I-approve sa iyong telepono",
829
761
  bodyScan: "I-scan gamit ang camera ng iyong telepono o ang ZOREAL ID app.",
830
- bodyLink: "Aprubahan ang pag-sign in na ito sa ZOREAL ID app sa teleponong ito.",
831
762
  bodyApprove: "I-approve ang login sa iyong ZOREAL ID app.",
832
763
  bodyEnrolling: "Tapusin muna ang pag-set up ng ZOREAL ID sa iyong telepono, pagkatapos ay i-approve ang login.",
833
764
  waiting: "Naghihintay ng scan",
@@ -839,8 +770,7 @@ var TRANSLATIONS = {
839
770
  cancel: "Kanselahin",
840
771
  close: "Isara",
841
772
  qrAlt: "QR code para mag-sign in gamit ang ZOREAL",
842
- buttonContinue: "Magpatuloy gamit ang ZOREAL",
843
- openApp: "Buksan ang ZOREAL ID"
773
+ buttonContinue: "Magpatuloy gamit ang ZOREAL"
844
774
  },
845
775
  // Türkçe
846
776
  tr: {
@@ -849,7 +779,6 @@ var TRANSLATIONS = {
849
779
  titlePresence: "Ger\xE7ek bir insan oldu\u011Funuzu kan\u0131tlamak i\xE7in taray\u0131n",
850
780
  titleApprove: "Telefonunuzdan onaylay\u0131n",
851
781
  bodyScan: "Telefonunuzun kameras\u0131yla veya ZOREAL ID uygulamas\u0131yla taray\u0131n.",
852
- bodyLink: "Bu giri\u015Fi bu telefondaki ZOREAL ID uygulamas\u0131nda onaylay\u0131n.",
853
782
  bodyApprove: "Giri\u015Fi ZOREAL ID uygulaman\u0131zdan onaylay\u0131n.",
854
783
  bodyEnrolling: "Telefonunuzda ZOREAL ID kurulumunu tamamlay\u0131n, ard\u0131ndan giri\u015Fi onaylay\u0131n.",
855
784
  waiting: "Tarama bekleniyor",
@@ -861,8 +790,7 @@ var TRANSLATIONS = {
861
790
  cancel: "\u0130ptal",
862
791
  close: "Kapat",
863
792
  qrAlt: "ZOREAL ile giri\u015F yapmak i\xE7in QR kodu",
864
- buttonContinue: "ZOREAL ile devam et",
865
- openApp: "ZOREAL ID'yi a\xE7"
793
+ buttonContinue: "ZOREAL ile devam et"
866
794
  },
867
795
  // Українська
868
796
  uk: {
@@ -871,7 +799,6 @@ var TRANSLATIONS = {
871
799
  titlePresence: "\u0421\u043A\u0430\u043D\u0443\u0439\u0442\u0435, \u0449\u043E\u0431 \u0434\u043E\u0432\u0435\u0441\u0442\u0438, \u0449\u043E \u0432\u0438 \u0441\u043F\u0440\u0430\u0432\u0436\u043D\u044F \u043B\u044E\u0434\u0438\u043D\u0430",
872
800
  titleApprove: "\u041F\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u044C\u0442\u0435 \u043D\u0430 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0456",
873
801
  bodyScan: "\u0421\u043A\u0430\u043D\u0443\u0439\u0442\u0435 \u043A\u0430\u043C\u0435\u0440\u043E\u044E \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0443 \u0430\u0431\u043E \u0434\u043E\u0434\u0430\u0442\u043A\u043E\u043C ZOREAL ID.",
874
- bodyLink: "\u041F\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u044C\u0442\u0435 \u0446\u0435\u0439 \u0432\u0445\u0456\u0434 \u0443 \u0437\u0430\u0441\u0442\u043E\u0441\u0443\u043D\u043A\u0443 ZOREAL ID \u043D\u0430 \u0446\u044C\u043E\u043C\u0443 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0456.",
875
802
  bodyApprove: "\u041F\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u044C\u0442\u0435 \u0432\u0445\u0456\u0434 \u0443 \u0434\u043E\u0434\u0430\u0442\u043A\u0443 ZOREAL ID.",
876
803
  bodyEnrolling: "\u0417\u0430\u0432\u0435\u0440\u0448\u0456\u0442\u044C \u043D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u043D\u044F ZOREAL ID \u043D\u0430 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0456, \u0430 \u043F\u043E\u0442\u0456\u043C \u043F\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u044C\u0442\u0435 \u0432\u0445\u0456\u0434.",
877
804
  waiting: "\u041E\u0447\u0456\u043A\u0443\u0432\u0430\u043D\u043D\u044F \u0441\u043A\u0430\u043D\u0443\u0432\u0430\u043D\u043D\u044F",
@@ -883,8 +810,7 @@ var TRANSLATIONS = {
883
810
  cancel: "\u0421\u043A\u0430\u0441\u0443\u0432\u0430\u0442\u0438",
884
811
  close: "\u0417\u0430\u043A\u0440\u0438\u0442\u0438",
885
812
  qrAlt: "QR-\u043A\u043E\u0434 \u0434\u043B\u044F \u0432\u0445\u043E\u0434\u0443 \u0447\u0435\u0440\u0435\u0437 ZOREAL",
886
- buttonContinue: "\u041F\u0440\u043E\u0434\u043E\u0432\u0436\u0438\u0442\u0438 \u0437 ZOREAL",
887
- openApp: "\u0412\u0456\u0434\u043A\u0440\u0438\u0442\u0438 ZOREAL ID"
813
+ buttonContinue: "\u041F\u0440\u043E\u0434\u043E\u0432\u0436\u0438\u0442\u0438 \u0437 ZOREAL"
888
814
  },
889
815
  // اردو
890
816
  ur: {
@@ -893,7 +819,6 @@ var TRANSLATIONS = {
893
819
  titlePresence: "\u06CC\u06C1 \u062B\u0627\u0628\u062A \u06A9\u0631\u0646\u06D2 \u06A9\u06D2 \u0644\u06CC\u06D2 \u0627\u0633\u06A9\u06CC\u0646 \u06A9\u0631\u06CC\u06BA \u06A9\u06C1 \u0622\u067E \u0627\u06CC\u06A9 \u062D\u0642\u06CC\u0642\u06CC \u0627\u0646\u0633\u0627\u0646 \u06C1\u06CC\u06BA",
894
820
  titleApprove: "\u0627\u067E\u0646\u06D2 \u0641\u0648\u0646 \u067E\u0631 \u0645\u0646\u0638\u0648\u0631\u06CC \u062F\u06CC\u06BA",
895
821
  bodyScan: "\u0627\u067E\u0646\u06D2 \u0641\u0648\u0646 \u06A9\u06D2 \u06A9\u06CC\u0645\u0631\u06D2 \u06CC\u0627 ZOREAL ID \u0627\u06CC\u067E \u0633\u06D2 \u0627\u0633\u06A9\u06CC\u0646 \u06A9\u0631\u06CC\u06BA\u06D4",
896
- bodyLink: "\u0627\u0633 \u0641\u0648\u0646 \u067E\u0631 ZOREAL ID \u0627\u06CC\u067E \u0645\u06CC\u06BA \u0627\u0633 \u0644\u0627\u06AF \u0627\u0650\u0646 \u06A9\u06CC \u0645\u0646\u0638\u0648\u0631\u06CC \u062F\u06CC\u06BA\u06D4",
897
822
  bodyApprove: "\u0627\u067E\u0646\u06CC ZOREAL ID \u0627\u06CC\u067E \u0645\u06CC\u06BA \u0644\u0627\u06AF \u0627\u0650\u0646 \u06A9\u06CC \u0645\u0646\u0638\u0648\u0631\u06CC \u062F\u06CC\u06BA\u06D4",
898
823
  bodyEnrolling: "\u0627\u067E\u0646\u06D2 \u0641\u0648\u0646 \u067E\u0631 ZOREAL ID \u06A9\u06CC \u0633\u06CC\u0679 \u0627\u067E \u0645\u06A9\u0645\u0644 \u06A9\u0631\u06CC\u06BA\u060C \u067E\u06BE\u0631 \u0644\u0627\u06AF \u0627\u0650\u0646 \u06A9\u06CC \u0645\u0646\u0638\u0648\u0631\u06CC \u062F\u06CC\u06BA\u06D4",
899
824
  waiting: "\u0627\u0633\u06A9\u06CC\u0646 \u06A9\u0627 \u0627\u0646\u062A\u0638\u0627\u0631",
@@ -905,8 +830,7 @@ var TRANSLATIONS = {
905
830
  cancel: "\u0645\u0646\u0633\u0648\u062E \u06A9\u0631\u06CC\u06BA",
906
831
  close: "\u0628\u0646\u062F \u06A9\u0631\u06CC\u06BA",
907
832
  qrAlt: "ZOREAL \u06A9\u06D2 \u0633\u0627\u062A\u06BE \u0644\u0627\u06AF \u0627\u0650\u0646 \u06A9\u0631\u0646\u06D2 \u06A9\u06D2 \u0644\u06CC\u06D2 QR \u06A9\u0648\u0688",
908
- buttonContinue: "ZOREAL \u06A9\u06D2 \u0633\u0627\u062A\u06BE \u062C\u0627\u0631\u06CC \u0631\u06A9\u06BE\u06CC\u06BA",
909
- openApp: "ZOREAL ID \u06A9\u06BE\u0648\u0644\u06CC\u06BA"
833
+ buttonContinue: "ZOREAL \u06A9\u06D2 \u0633\u0627\u062A\u06BE \u062C\u0627\u0631\u06CC \u0631\u06A9\u06BE\u06CC\u06BA"
910
834
  },
911
835
  // Tiếng Việt
912
836
  vi: {
@@ -915,7 +839,6 @@ var TRANSLATIONS = {
915
839
  titlePresence: "Qu\xE9t \u0111\u1EC3 ch\u1EE9ng minh b\u1EA1n l\xE0 ng\u01B0\u1EDDi th\u1EADt",
916
840
  titleApprove: "Ph\xEA duy\u1EC7t tr\xEAn \u0111i\u1EC7n tho\u1EA1i c\u1EE7a b\u1EA1n",
917
841
  bodyScan: "Qu\xE9t b\u1EB1ng camera \u0111i\u1EC7n tho\u1EA1i ho\u1EB7c \u1EE9ng d\u1EE5ng ZOREAL ID.",
918
- bodyLink: "Ph\xEA duy\u1EC7t l\u1EA7n \u0111\u0103ng nh\u1EADp n\xE0y trong \u1EE9ng d\u1EE5ng ZOREAL ID tr\xEAn \u0111i\u1EC7n tho\u1EA1i n\xE0y.",
919
842
  bodyApprove: "Ph\xEA duy\u1EC7t \u0111\u0103ng nh\u1EADp trong \u1EE9ng d\u1EE5ng ZOREAL ID c\u1EE7a b\u1EA1n.",
920
843
  bodyEnrolling: "Ho\xE0n t\u1EA5t thi\u1EBFt l\u1EADp ZOREAL ID tr\xEAn \u0111i\u1EC7n tho\u1EA1i, sau \u0111\xF3 ph\xEA duy\u1EC7t \u0111\u0103ng nh\u1EADp.",
921
844
  waiting: "\u0110ang ch\u1EDD qu\xE9t m\xE3",
@@ -927,8 +850,7 @@ var TRANSLATIONS = {
927
850
  cancel: "H\u1EE7y",
928
851
  close: "\u0110\xF3ng",
929
852
  qrAlt: "M\xE3 QR \u0111\u1EC3 \u0111\u0103ng nh\u1EADp b\u1EB1ng ZOREAL",
930
- buttonContinue: "Ti\u1EBFp t\u1EE5c v\u1EDBi ZOREAL",
931
- openApp: "M\u1EDF ZOREAL ID"
853
+ buttonContinue: "Ti\u1EBFp t\u1EE5c v\u1EDBi ZOREAL"
932
854
  }
933
855
  };
934
856
  var RTL = /* @__PURE__ */ new Set(["ar", "he", "iw", "ur"]);
@@ -1249,58 +1171,12 @@ var CSS = `
1249
1171
  dim glow. Paused rather than removed, so it does not jump back to its start
1250
1172
  on the way out. */
1251
1173
  .${PREFIX}-qr-well[data-spent="true"] .${PREFIX}-qr-beam::after,
1252
- .${PREFIX}-qr-well[data-spent="true"] .${PREFIX}-qr-beam-glow-band::after,
1253
- .${PREFIX}-link-well[data-ready="true"] .${PREFIX}-qr-beam::after,
1254
- .${PREFIX}-link-well[data-ready="true"] .${PREFIX}-qr-beam-glow-band::after {
1174
+ .${PREFIX}-qr-well[data-spent="true"] .${PREFIX}-qr-beam-glow-band::after {
1255
1175
  animation-play-state: paused;
1256
1176
  opacity: 0;
1257
1177
  }
1258
- .${PREFIX}-qr-well[data-spent="true"] .${PREFIX}-qr-beam::before,
1259
- .${PREFIX}-link-well[data-ready="true"] .${PREFIX}-qr-beam::before { opacity: 0.55; }
1260
- .${PREFIX}-qr-well[data-spent="true"] .${PREFIX}-qr-beam-glow-band::before,
1261
- .${PREFIX}-link-well[data-ready="true"] .${PREFIX}-qr-beam-glow-band::before { opacity: 0.7; }
1262
-
1263
- /* Same device: no code to scan. A round well with the mark carries the same
1264
- light while the sign-in is being created, and settles once the link below
1265
- it is ready to tap. A circle keeps the sweep even all the way round. */
1266
- .${PREFIX}-link-well {
1267
- position: relative;
1268
- display: grid;
1269
- place-items: center;
1270
- box-sizing: border-box;
1271
- width: 112px;
1272
- height: 112px;
1273
- margin: 20px auto 0;
1274
- border: 1px solid var(--zrl-line);
1275
- border-radius: 999px;
1276
- background: var(--zrl-surface-sunken);
1277
- --zrl-radius: 56px;
1278
- --zrl-beam-time: 4s;
1279
- }
1280
- .${PREFIX}-link-well svg { position: relative; }
1281
-
1282
- /* The control that opens the app: a real link, because a browser hands a
1283
- link to an app only from a tap. It has no address until the sign-in
1284
- exists, and reads as disabled until then. */
1285
- .${PREFIX}-open {
1286
- display: block;
1287
- box-sizing: border-box;
1288
- width: 100%;
1289
- margin: 20px 0 0;
1290
- padding: 12px 16px;
1291
- border-radius: 12px;
1292
- background: var(--zrl-accent);
1293
- color: #ffffff;
1294
- font: inherit;
1295
- font-size: 15px;
1296
- font-weight: 600;
1297
- text-align: center;
1298
- text-decoration: none;
1299
- cursor: pointer;
1300
- transition: opacity 200ms ease-out, transform 150ms ease-out;
1301
- }
1302
- .${PREFIX}-open:active { transform: scale(0.99); }
1303
- .${PREFIX}-open[aria-disabled="true"] { opacity: 0.45; cursor: default; pointer-events: none; }
1178
+ .${PREFIX}-qr-well[data-spent="true"] .${PREFIX}-qr-beam::before { opacity: 0.55; }
1179
+ .${PREFIX}-qr-well[data-spent="true"] .${PREFIX}-qr-beam-glow-band::before { opacity: 0.7; }
1304
1180
 
1305
1181
  .${PREFIX}-qr {
1306
1182
  display: block;
@@ -1451,6 +1327,65 @@ var CSS = `
1451
1327
  }
1452
1328
 
1453
1329
  @keyframes ${PREFIX}-orbit { to { transform: rotate(360deg) } }
1330
+ /* THE BUSY RING. The light of the QR well, around any control that is
1331
+ waiting on the provider: the button on a phone between the tap and the
1332
+ hand-over to the app. The well's sweep is a cone from the centre, which is
1333
+ even on a square and useless on a wide button: it crawls along the long
1334
+ sides and lights two edges at once near the ends. So here the light is a
1335
+ dash on an SVG outline, which moves at one speed the whole way round
1336
+ whatever the shape, drawn with the well's tokens: its colour and head
1337
+ tint, its line width, its halo, its four second lap. pathLength makes the
1338
+ outline 100 units long, so every dash and offset is a percentage of the
1339
+ way round; the three layers share one head at 30 and differ in length
1340
+ and brightness, which is the comet's tail. Shown only while busy. */
1341
+ .${PREFIX}-ring {
1342
+ position: relative;
1343
+ display: inline-flex;
1344
+ vertical-align: middle;
1345
+ --zrl-beam-time: 4s;
1346
+ }
1347
+ .${PREFIX}-ring-svg {
1348
+ position: absolute;
1349
+ inset: -4px;
1350
+ width: calc(100% + 8px);
1351
+ height: calc(100% + 8px);
1352
+ overflow: visible;
1353
+ pointer-events: none;
1354
+ opacity: 0;
1355
+ transition: opacity 200ms ease-out;
1356
+ }
1357
+ .${PREFIX}-ring[data-busy="true"] > .${PREFIX}-ring-svg { opacity: 1; }
1358
+ .${PREFIX}-ring-svg rect {
1359
+ x: 2px;
1360
+ y: 2px;
1361
+ width: calc(100% - 4px);
1362
+ height: calc(100% - 4px);
1363
+ fill: none;
1364
+ stroke: var(--zrl-beam);
1365
+ stroke-width: var(--zrl-beam-line);
1366
+ stroke-linecap: round;
1367
+ animation: ${PREFIX}-dash var(--zrl-beam-time) linear infinite;
1368
+ }
1369
+ .${PREFIX}-ring-tail { stroke-dasharray: 30 70; stroke-dashoffset: 0; opacity: 0.35; }
1370
+ .${PREFIX}-ring-body { stroke-dasharray: 16 84; stroke-dashoffset: -14; opacity: 0.8; }
1371
+ .${PREFIX}-ring-head { stroke-dasharray: 5 95; stroke-dashoffset: -25; stroke: var(--zrl-beam-head); }
1372
+ .${PREFIX}-ring-halo {
1373
+ stroke-dasharray: 30 70;
1374
+ stroke-dashoffset: 0;
1375
+ stroke-width: calc(var(--zrl-glow-core) * 2 + var(--zrl-beam-line));
1376
+ opacity: calc(var(--zrl-glow-opacity) * 0.5);
1377
+ filter: blur(var(--zrl-glow-blur));
1378
+ }
1379
+ @keyframes ${PREFIX}-dash {
1380
+ to { stroke-dashoffset: calc(var(--zrl-dash-start, 0) - 100); }
1381
+ }
1382
+ .${PREFIX}-ring-body { --zrl-dash-start: -14; }
1383
+ .${PREFIX}-ring-head { --zrl-dash-start: -25; }
1384
+ @media (prefers-reduced-motion: reduce) {
1385
+ .${PREFIX}-ring-svg rect { animation: none; stroke-dasharray: none; opacity: 0.45; }
1386
+ .${PREFIX}-ring-halo, .${PREFIX}-ring-head { display: none; }
1387
+ }
1388
+
1454
1389
 
1455
1390
  @media (prefers-reduced-motion: reduce) {
1456
1391
  .${PREFIX}-scrim,
@@ -1478,7 +1413,7 @@ function ensureStyles() {
1478
1413
  }
1479
1414
 
1480
1415
  // src/PairingModal.tsx
1481
- import { Fragment, jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
1416
+ import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
1482
1417
  var DEFAULT_PAIRING_TIMEOUT_MS = 12e4;
1483
1418
  var URGENT_SECONDS = 20;
1484
1419
  function mmss(totalSeconds) {
@@ -1510,11 +1445,9 @@ function PairingModal({
1510
1445
  const deadlineRef = useRef(0);
1511
1446
  const [remaining, setRemaining] = useState(Math.round(timeoutMs / 1e3));
1512
1447
  const settled = state.status === "claimed" || state.status === "enrolling";
1513
- const linkMode = state.appLink === true;
1514
- const ready = linkMode && Boolean(state.pairUrl);
1515
1448
  const [frameUrl, setFrameUrl] = useState(qrUrl);
1516
1449
  useEffect(() => {
1517
- if (linkMode || settled || frameUrl === qrUrl) return;
1450
+ if (settled || frameUrl === qrUrl) return;
1518
1451
  let abandoned = false;
1519
1452
  const next = new Image();
1520
1453
  next.onload = () => {
@@ -1528,7 +1461,7 @@ function PairingModal({
1528
1461
  next.onload = null;
1529
1462
  next.onerror = null;
1530
1463
  };
1531
- }, [qrUrl, settled, frameUrl, linkMode]);
1464
+ }, [qrUrl, settled, frameUrl]);
1532
1465
  const onCancelRef = useRef(onCancel);
1533
1466
  onCancelRef.current = onCancel;
1534
1467
  useEffect(() => {
@@ -1562,7 +1495,7 @@ function PairingModal({
1562
1495
  };
1563
1496
  }, []);
1564
1497
  if (typeof document === "undefined") return null;
1565
- const body = state.status === "enrolling" ? t.bodyEnrolling : settled ? t.bodyApprove : linkMode ? t.bodyLink : t.bodyScan;
1498
+ const body = state.status === "enrolling" ? t.bodyEnrolling : settled ? t.bodyApprove : t.bodyScan;
1566
1499
  return createPortal(
1567
1500
  /* @__PURE__ */ jsx3("div", { className: `${cx("root")} ${cx("scrim")}`, "data-theme": theme, onClick: onCancel, children: /* @__PURE__ */ jsxs3(
1568
1501
  "div",
@@ -1579,30 +1512,13 @@ function PairingModal({
1579
1512
  /* @__PURE__ */ jsx3(ZorealLockup, { height: 44, className: cx("lockup") }),
1580
1513
  /* @__PURE__ */ jsx3("h2", { id: titleId, className: cx("title"), children: settled ? t.titleApprove : titleFor(t, intent) }),
1581
1514
  /* @__PURE__ */ jsx3("p", { className: cx("body-text"), children: body }),
1582
- linkMode ? /* @__PURE__ */ jsxs3(Fragment, { children: [
1583
- /* @__PURE__ */ jsxs3("div", { className: cx("link-well"), "data-ready": ready, children: [
1584
- /* @__PURE__ */ jsx3("span", { className: cx("qr-beam-glow"), "aria-hidden": true, children: /* @__PURE__ */ jsx3("span", { className: cx("qr-beam-glow-band") }) }),
1585
- /* @__PURE__ */ jsx3("span", { className: cx("qr-beam"), "aria-hidden": true }),
1586
- /* @__PURE__ */ jsx3(ZorealMark, { size: 48 })
1587
- ] }),
1588
- /* @__PURE__ */ jsx3(
1589
- "a",
1590
- {
1591
- className: cx("open"),
1592
- href: ready ? state.pairUrl : void 0,
1593
- target: "_blank",
1594
- rel: "noopener",
1595
- "aria-disabled": ready ? void 0 : true,
1596
- children: t.openApp
1597
- }
1598
- )
1599
- ] }) : /* @__PURE__ */ jsxs3("div", { className: cx("qr-well"), "data-spent": settled, children: [
1515
+ /* @__PURE__ */ jsxs3("div", { className: cx("qr-well"), "data-spent": settled, children: [
1600
1516
  /* @__PURE__ */ jsx3("span", { className: cx("qr-beam-glow"), "aria-hidden": true, children: /* @__PURE__ */ jsx3("span", { className: cx("qr-beam-glow-band") }) }),
1601
1517
  /* @__PURE__ */ jsx3("span", { className: cx("qr-beam"), "aria-hidden": true }),
1602
1518
  /* @__PURE__ */ jsx3("img", { className: cx("qr"), "data-spent": settled, src: frameUrl, alt: t.qrAlt, width: 180, height: 180 }),
1603
1519
  settled && /* @__PURE__ */ jsx3("span", { className: cx("qr-overlay"), children: /* @__PURE__ */ jsx3("span", { className: cx("qr-badge"), children: /* @__PURE__ */ jsx3(IconPhone, {}) }) })
1604
1520
  ] }),
1605
- (!linkMode || settled) && /* @__PURE__ */ jsxs3("div", { className: cx("status"), children: [
1521
+ /* @__PURE__ */ jsxs3("div", { className: cx("status"), children: [
1606
1522
  /* @__PURE__ */ jsxs3("span", { className: cx("dot"), children: [
1607
1523
  /* @__PURE__ */ jsx3("i", {}),
1608
1524
  /* @__PURE__ */ jsx3("i", {})
@@ -1611,7 +1527,7 @@ function PairingModal({
1611
1527
  ] }),
1612
1528
  /* @__PURE__ */ jsx3("p", { className: cx("timer"), "data-urgent": remaining <= URGENT_SECONDS, children: interpolate(t.expiresIn, mmss(remaining)) })
1613
1529
  ] }),
1614
- !linkMode && /* @__PURE__ */ jsxs3("div", { className: cx("help"), children: [
1530
+ /* @__PURE__ */ jsxs3("div", { className: cx("help"), children: [
1615
1531
  /* @__PURE__ */ jsx3("p", { className: cx("help-title"), children: t.noIdTitle }),
1616
1532
  /* @__PURE__ */ jsx3("p", { className: cx("help-body"), children: t.noIdBody })
1617
1533
  ] }),
@@ -1678,7 +1594,7 @@ function useZorealOAuth() {
1678
1594
  }
1679
1595
 
1680
1596
  // src/ZorealLogin.tsx
1681
- import { useMemo as useMemo2 } from "react";
1597
+ import { useMemo as useMemo2, useState as useState4 } from "react";
1682
1598
 
1683
1599
  // src/useZorealLogin.ts
1684
1600
  import { useCallback, useEffect as useEffect2, useRef as useRef2, useState as useState3 } from "react";
@@ -1912,18 +1828,6 @@ function useZorealFlow(options) {
1912
1828
  const useAppLink = display === "link";
1913
1829
  const intent = resolveIntent(opts.intent, opts.scope, opts.acr_values);
1914
1830
  try {
1915
- if (useAppLink) {
1916
- const cancel = () => {
1917
- controller.abort();
1918
- publishRef.current?.(null);
1919
- };
1920
- publishRef.current?.({
1921
- state: { status: "pending", appLink: true, intent, cancel },
1922
- qrUrl: "",
1923
- intent,
1924
- cancel
1925
- });
1926
- }
1927
1831
  const started = await startPairing(issuer, {
1928
1832
  client_id: clientId,
1929
1833
  scope: opts.scope ?? "openid",
@@ -1968,8 +1872,13 @@ function useZorealFlow(options) {
1968
1872
  cancel
1969
1873
  };
1970
1874
  setPairing(active);
1971
- publishRef.current?.({ state: active.state, qrUrl, intent, cancel });
1875
+ if (!useAppLink) {
1876
+ publishRef.current?.({ state: active.state, qrUrl, intent, cancel });
1877
+ }
1972
1878
  opts.onPairingStateChange?.(active.state);
1879
+ if (useAppLink) {
1880
+ window.location.assign(started.pair_url);
1881
+ }
1973
1882
  code = await pollUntilApproved(
1974
1883
  issuer,
1975
1884
  started.request_id,
@@ -1979,7 +1888,9 @@ function useZorealFlow(options) {
1979
1888
  setPairing(
1980
1889
  (p) => p && p.requestId === started.request_id ? { ...p, qrUrl, state: enriched } : p
1981
1890
  );
1982
- publishRef.current?.({ state: enriched, qrUrl, intent, cancel });
1891
+ if (!useAppLink) {
1892
+ publishRef.current?.({ state: enriched, qrUrl, intent, cancel });
1893
+ }
1983
1894
  opts.onPairingStateChange?.(enriched);
1984
1895
  },
1985
1896
  controller.signal,
@@ -2050,8 +1961,45 @@ function useZorealLogin(options) {
2050
1961
  }).login;
2051
1962
  }
2052
1963
 
2053
- // src/ZorealLogin.tsx
1964
+ // src/ring.tsx
1965
+ import { useEffect as useEffect3 } from "react";
2054
1966
  import { jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
1967
+ function ZorealBusyRing({
1968
+ busy,
1969
+ radius = 8,
1970
+ theme = "auto",
1971
+ block = false,
1972
+ className,
1973
+ style,
1974
+ children
1975
+ }) {
1976
+ useEffect3(() => {
1977
+ ensureStyles();
1978
+ }, []);
1979
+ const rx = radius + 2;
1980
+ const layer = (name) => /* @__PURE__ */ jsx5("rect", { className: cx(name), rx, ry: rx, pathLength: 100 });
1981
+ return /* @__PURE__ */ jsxs5(
1982
+ "span",
1983
+ {
1984
+ className: className ? `${cx("root")} ${cx("ring")} ${className}` : `${cx("root")} ${cx("ring")}`,
1985
+ "data-theme": theme,
1986
+ "data-busy": busy,
1987
+ style: block ? { display: "flex", ...style } : style,
1988
+ children: [
1989
+ children,
1990
+ /* @__PURE__ */ jsxs5("svg", { className: cx("ring-svg"), "aria-hidden": "true", children: [
1991
+ layer("ring-halo"),
1992
+ layer("ring-tail"),
1993
+ layer("ring-body"),
1994
+ layer("ring-head")
1995
+ ] })
1996
+ ]
1997
+ }
1998
+ );
1999
+ }
2000
+
2001
+ // src/ZorealLogin.tsx
2002
+ import { jsx as jsx6, jsxs as jsxs6 } from "react/jsx-runtime";
2055
2003
  var TEXTS = {
2056
2004
  continue_with: null,
2057
2005
  signin_with: "Sign in with ZOREAL",
@@ -2060,9 +2008,9 @@ var TEXTS = {
2060
2008
  verify_with: "Verify with ZOREAL ID"
2061
2009
  };
2062
2010
  var SIZES = {
2063
- large: { height: 44, font: 15, pad: 20 },
2064
- medium: { height: 38, font: 14, pad: 16 },
2065
- small: { height: 32, font: 12, pad: 12 }
2011
+ large: { height: 50, font: 14, pad: 20, mark: 22, gap: 12, radius: 12 },
2012
+ medium: { height: 42, font: 14, pad: 16, mark: 20, gap: 10, radius: 10 },
2013
+ small: { height: 34, font: 12, pad: 12, mark: 16, gap: 8, radius: 8 }
2066
2014
  };
2067
2015
  function ZorealLogin(props) {
2068
2016
  const {
@@ -2070,11 +2018,11 @@ function ZorealLogin(props) {
2070
2018
  onError,
2071
2019
  containerProps,
2072
2020
  type = "standard",
2073
- theme = "filled",
2021
+ theme = "outline",
2074
2022
  size = "large",
2075
2023
  text = "continue_with",
2076
2024
  shape = "rectangular",
2077
- logo_alignment = "left",
2025
+ logo_alignment = "center",
2078
2026
  width,
2079
2027
  click_listener,
2080
2028
  flow = "browser-direct",
@@ -2082,21 +2030,36 @@ function ZorealLogin(props) {
2082
2030
  } = props;
2083
2031
  const { locale } = useZorealOAuth();
2084
2032
  const label = TEXTS[text] ?? strings(locale).buttonContinue;
2033
+ const [busy, setBusy] = useState4(false);
2085
2034
  const { login } = useZorealFlow({
2086
2035
  ...request,
2087
2036
  flow,
2088
- onCredential: flow === "browser-direct" ? onSuccess : void 0,
2089
- onCode: flow === "auth-code" ? onSuccess : void 0,
2090
- onError: (e) => onError?.({ type: "unknown", description: e.description ?? e.error }),
2091
- onNonOAuthError: (e) => onError?.(e)
2037
+ onCredential: flow === "browser-direct" ? (r) => {
2038
+ setBusy(false);
2039
+ onSuccess(r);
2040
+ } : void 0,
2041
+ onCode: flow === "auth-code" ? (r) => {
2042
+ setBusy(false);
2043
+ onSuccess(r);
2044
+ } : void 0,
2045
+ onError: (e) => {
2046
+ setBusy(false);
2047
+ onError?.({ type: "unknown", description: e.description ?? e.error });
2048
+ },
2049
+ onNonOAuthError: (e) => {
2050
+ setBusy(false);
2051
+ onError?.(e);
2052
+ }
2092
2053
  });
2093
2054
  const s = SIZES[size];
2055
+ const radius = shape === "pill" ? s.height / 2 : shape === "square" ? 4 : s.radius;
2056
+ const brandMark = theme !== "filled";
2094
2057
  const style = useMemo2(
2095
2058
  () => ({
2096
2059
  display: "inline-flex",
2097
2060
  alignItems: "center",
2098
2061
  justifyContent: logo_alignment === "center" ? "center" : "flex-start",
2099
- gap: 10,
2062
+ gap: s.gap,
2100
2063
  height: s.height,
2101
2064
  padding: `0 ${s.pad}px`,
2102
2065
  width,
@@ -2104,30 +2067,34 @@ function ZorealLogin(props) {
2104
2067
  fontFamily: "inherit",
2105
2068
  fontWeight: 500,
2106
2069
  cursor: "pointer",
2107
- borderRadius: shape === "pill" ? s.height / 2 : shape === "square" ? 4 : 8,
2108
- ...theme === "outline" ? { background: "transparent", color: "inherit", border: "1px solid rgba(128,128,128,0.5)" } : theme === "filled_black" ? { background: "#111", color: "#fff", border: "1px solid #111" } : { background: "#00b4d9", color: "#fff", border: "1px solid #00b4d9" }
2070
+ borderRadius: radius,
2071
+ ...theme === "outline" ? { background: "#ffffff", color: "#16181c", border: "1px solid #e2e4de" } : theme === "filled_black" ? { background: "#111", color: "#fff", border: "1px solid #111" } : { background: "#00b4d9", color: "#fff", border: "1px solid #00b4d9" }
2109
2072
  }),
2110
- [logo_alignment, s, shape, theme, width]
2073
+ [logo_alignment, s, radius, theme, width]
2111
2074
  );
2112
- return /* @__PURE__ */ jsx5("div", { ...containerProps, children: /* @__PURE__ */ jsxs5(
2075
+ return /* @__PURE__ */ jsx6("div", { ...containerProps, children: /* @__PURE__ */ jsx6(ZorealBusyRing, { busy, radius, theme: theme === "outline" ? "auto" : "light", children: /* @__PURE__ */ jsxs6(
2113
2076
  "button",
2114
2077
  {
2115
2078
  type: "button",
2116
- style,
2079
+ style: busy ? { ...style, cursor: "progress" } : style,
2080
+ disabled: busy,
2081
+ "aria-busy": busy,
2117
2082
  onClick: () => {
2083
+ if (busy) return;
2118
2084
  click_listener?.();
2085
+ setBusy(true);
2119
2086
  login();
2120
2087
  },
2121
2088
  children: [
2122
- /* @__PURE__ */ jsx5(ZorealMark, { size: Math.round(s.font * 1.25) }),
2089
+ /* @__PURE__ */ jsx6(ZorealMark, { size: s.mark, brand: brandMark }),
2123
2090
  type === "standard" && label
2124
2091
  ]
2125
2092
  }
2126
- ) });
2093
+ ) }) });
2127
2094
  }
2128
2095
 
2129
2096
  // src/useZorealAutoLogin.ts
2130
- import { useEffect as useEffect3, useRef as useRef3 } from "react";
2097
+ import { useEffect as useEffect4, useRef as useRef3 } from "react";
2131
2098
  function useZorealAutoLogin(options) {
2132
2099
  const { login } = useZorealFlow({
2133
2100
  flow: "browser-direct",
@@ -2145,7 +2112,7 @@ function useZorealAutoLogin(options) {
2145
2112
  onNonOAuthError: (e) => options.onError?.(e)
2146
2113
  });
2147
2114
  const fired = useRef3(false);
2148
- useEffect3(() => {
2115
+ useEffect4(() => {
2149
2116
  if (options.disabled || fired.current) return;
2150
2117
  fired.current = true;
2151
2118
  login();
@@ -2168,6 +2135,7 @@ function hasGrantedAnyScopeZoreal(response, firstScope, ...restScopes) {
2168
2135
  export {
2169
2136
  DEFAULT_PAIRING_TIMEOUT_MS,
2170
2137
  PairingModal,
2138
+ ZorealBusyRing,
2171
2139
  ZorealLogin,
2172
2140
  ZorealOAuthProvider,
2173
2141
  hasGrantedAllScopesZoreal,