@zoreal/oauth2-react 0.2.11 → 0.2.13
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/README.md +3 -2
- package/dist/index.cjs +242 -118
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +26 -2
- package/dist/index.d.ts +26 -2
- package/dist/index.js +241 -118
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
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.
|
|
8
|
+
var SDK_VERSION = "0.2.13";
|
|
9
9
|
var DEFAULT_ISSUER = "https://id.zoreal.com";
|
|
10
10
|
var POLL_INTERVAL_MS = 2e3;
|
|
11
11
|
var POLL_INTERVAL_ENROLLING_MS = 5e3;
|
|
@@ -85,6 +85,8 @@ function ZorealLockup({ height = 22, className }) {
|
|
|
85
85
|
// src/i18n.ts
|
|
86
86
|
var en = {
|
|
87
87
|
title: "Scan to sign in",
|
|
88
|
+
titleIdentify: "Scan to verify your identity",
|
|
89
|
+
titlePresence: "Scan to prove you are a real human",
|
|
88
90
|
titleApprove: "Approve on your phone",
|
|
89
91
|
bodyScan: "Scan with your phone camera or the ZOREAL ID app.",
|
|
90
92
|
bodyApprove: "Approve the login in your ZOREAL ID app.",
|
|
@@ -97,12 +99,15 @@ var en = {
|
|
|
97
99
|
noIdBody: "Scan the same code to download the app and create one for free. It only takes a minute.",
|
|
98
100
|
cancel: "Cancel",
|
|
99
101
|
close: "Close",
|
|
100
|
-
qrAlt: "QR code to sign in with ZOREAL"
|
|
102
|
+
qrAlt: "QR code to sign in with ZOREAL",
|
|
103
|
+
buttonContinue: "Continue with ZOREAL"
|
|
101
104
|
};
|
|
102
105
|
var TRANSLATIONS = {
|
|
103
106
|
en,
|
|
104
107
|
sv: {
|
|
105
108
|
title: "Skanna f\xF6r att logga in",
|
|
109
|
+
titleIdentify: "Skanna f\xF6r att verifiera din identitet",
|
|
110
|
+
titlePresence: "Skanna f\xF6r att bevisa att du \xE4r en riktig m\xE4nniska",
|
|
106
111
|
titleApprove: "Godk\xE4nn p\xE5 telefonen",
|
|
107
112
|
bodyScan: "Skanna med telefonens kamera eller ZOREAL ID-appen.",
|
|
108
113
|
bodyApprove: "Godk\xE4nn inloggningen i ZOREAL ID-appen.",
|
|
@@ -115,10 +120,13 @@ var TRANSLATIONS = {
|
|
|
115
120
|
noIdBody: "Skanna samma kod f\xF6r att ladda ner appen och skapa ett gratis. Det tar bara en minut.",
|
|
116
121
|
cancel: "Avbryt",
|
|
117
122
|
close: "St\xE4ng",
|
|
118
|
-
qrAlt: "QR-kod f\xF6r att logga in med ZOREAL"
|
|
123
|
+
qrAlt: "QR-kod f\xF6r att logga in med ZOREAL",
|
|
124
|
+
buttonContinue: "Forts\xE4tt med ZOREAL"
|
|
119
125
|
},
|
|
120
126
|
es: {
|
|
121
127
|
title: "Escanea para iniciar sesi\xF3n",
|
|
128
|
+
titleIdentify: "Escanea para verificar tu identidad",
|
|
129
|
+
titlePresence: "Escanea para demostrar que eres una persona real",
|
|
122
130
|
titleApprove: "Apru\xE9balo en tu tel\xE9fono",
|
|
123
131
|
bodyScan: "Escanea con la c\xE1mara de tu tel\xE9fono o con la app ZOREAL ID.",
|
|
124
132
|
bodyApprove: "Aprueba el inicio de sesi\xF3n en tu app ZOREAL ID.",
|
|
@@ -131,10 +139,13 @@ var TRANSLATIONS = {
|
|
|
131
139
|
noIdBody: "Escanea el mismo c\xF3digo para descargar la app y crear una gratis. Solo toma un minuto.",
|
|
132
140
|
cancel: "Cancelar",
|
|
133
141
|
close: "Cerrar",
|
|
134
|
-
qrAlt: "C\xF3digo QR para iniciar sesi\xF3n con ZOREAL"
|
|
142
|
+
qrAlt: "C\xF3digo QR para iniciar sesi\xF3n con ZOREAL",
|
|
143
|
+
buttonContinue: "Continuar con ZOREAL"
|
|
135
144
|
},
|
|
136
145
|
pt: {
|
|
137
146
|
title: "Digitalize para entrar",
|
|
147
|
+
titleIdentify: "Digitalize para verificar a sua identidade",
|
|
148
|
+
titlePresence: "Digitalize para provar que \xE9 uma pessoa real",
|
|
138
149
|
titleApprove: "Aprove no seu telefone",
|
|
139
150
|
bodyScan: "Digitalize com a c\xE2mara do seu telefone ou com a app ZOREAL ID.",
|
|
140
151
|
bodyApprove: "Aprove o login no app ZOREAL ID.",
|
|
@@ -147,10 +158,13 @@ var TRANSLATIONS = {
|
|
|
147
158
|
noIdBody: "Digitalize o mesmo c\xF3digo para baixar o app e criar uma conta gr\xE1tis. Leva s\xF3 um minuto.",
|
|
148
159
|
cancel: "Cancelar",
|
|
149
160
|
close: "Fechar",
|
|
150
|
-
qrAlt: "C\xF3digo QR para entrar com ZOREAL"
|
|
161
|
+
qrAlt: "C\xF3digo QR para entrar com ZOREAL",
|
|
162
|
+
buttonContinue: "Continuar com ZOREAL"
|
|
151
163
|
},
|
|
152
164
|
fr: {
|
|
153
165
|
title: "Scannez pour vous connecter",
|
|
166
|
+
titleIdentify: "Scannez pour v\xE9rifier votre identit\xE9",
|
|
167
|
+
titlePresence: "Scannez pour prouver que vous \xEAtes bien un humain",
|
|
154
168
|
titleApprove: "Approuvez sur votre t\xE9l\xE9phone",
|
|
155
169
|
bodyScan: "Scannez avec l'appareil photo de votre t\xE9l\xE9phone ou l'app ZOREAL ID.",
|
|
156
170
|
bodyApprove: "Approuvez la connexion dans votre app ZOREAL ID.",
|
|
@@ -163,10 +177,13 @@ var TRANSLATIONS = {
|
|
|
163
177
|
noIdBody: "Scannez le m\xEAme code pour t\xE9l\xE9charger l'app et en cr\xE9er un gratuitement. Cela prend une minute.",
|
|
164
178
|
cancel: "Annuler",
|
|
165
179
|
close: "Fermer",
|
|
166
|
-
qrAlt: "Code QR pour se connecter avec ZOREAL"
|
|
180
|
+
qrAlt: "Code QR pour se connecter avec ZOREAL",
|
|
181
|
+
buttonContinue: "Continuer avec ZOREAL"
|
|
167
182
|
},
|
|
168
183
|
de: {
|
|
169
184
|
title: "Zum Anmelden scannen",
|
|
185
|
+
titleIdentify: "Scannen, um Ihre Identit\xE4t zu verifizieren",
|
|
186
|
+
titlePresence: "Scannen, um zu beweisen, dass Sie ein echter Mensch sind",
|
|
170
187
|
titleApprove: "Auf dem Handy best\xE4tigen",
|
|
171
188
|
bodyScan: "Mit der Handykamera oder der ZOREAL ID App scannen.",
|
|
172
189
|
bodyApprove: "Anmeldung in der ZOREAL ID App best\xE4tigen.",
|
|
@@ -179,10 +196,13 @@ var TRANSLATIONS = {
|
|
|
179
196
|
noIdBody: "Denselben Code scannen, um die App zu laden und kostenlos eine zu erstellen. Dauert nur eine Minute.",
|
|
180
197
|
cancel: "Abbrechen",
|
|
181
198
|
close: "Schlie\xDFen",
|
|
182
|
-
qrAlt: "QR-Code f\xFCr die Anmeldung mit ZOREAL"
|
|
199
|
+
qrAlt: "QR-Code f\xFCr die Anmeldung mit ZOREAL",
|
|
200
|
+
buttonContinue: "Weiter mit ZOREAL"
|
|
183
201
|
},
|
|
184
202
|
ru: {
|
|
185
203
|
title: "\u041E\u0442\u0441\u043A\u0430\u043D\u0438\u0440\u0443\u0439\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u0432\u043E\u0439\u0442\u0438",
|
|
204
|
+
titleIdentify: "\u041E\u0442\u0441\u043A\u0430\u043D\u0438\u0440\u0443\u0439\u0442\u0435, \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C \u043B\u0438\u0447\u043D\u043E\u0441\u0442\u044C",
|
|
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",
|
|
186
206
|
titleApprove: "\u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 \u043D\u0430 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0435",
|
|
187
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.",
|
|
188
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.",
|
|
@@ -195,10 +215,13 @@ var TRANSLATIONS = {
|
|
|
195
215
|
noIdBody: "\u041E\u0442\u0441\u043A\u0430\u043D\u0438\u0440\u0443\u0439\u0442\u0435 \u0442\u043E\u0442 \u0436\u0435 \u043A\u043E\u0434, \u0447\u0442\u043E\u0431\u044B \u0441\u043A\u0430\u0447\u0430\u0442\u044C \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435 \u0438 \u0441\u043E\u0437\u0434\u0430\u0442\u044C \u0435\u0433\u043E \u0431\u0435\u0441\u043F\u043B\u0430\u0442\u043D\u043E. \u042D\u0442\u043E \u0437\u0430\u0439\u043C\u0451\u0442 \u043C\u0438\u043D\u0443\u0442\u0443.",
|
|
196
216
|
cancel: "\u041E\u0442\u043C\u0435\u043D\u0430",
|
|
197
217
|
close: "\u0417\u0430\u043A\u0440\u044B\u0442\u044C",
|
|
198
|
-
qrAlt: "QR-\u043A\u043E\u0434 \u0434\u043B\u044F \u0432\u0445\u043E\u0434\u0430 \u0447\u0435\u0440\u0435\u0437 ZOREAL"
|
|
218
|
+
qrAlt: "QR-\u043A\u043E\u0434 \u0434\u043B\u044F \u0432\u0445\u043E\u0434\u0430 \u0447\u0435\u0440\u0435\u0437 ZOREAL",
|
|
219
|
+
buttonContinue: "\u041F\u0440\u043E\u0434\u043E\u043B\u0436\u0438\u0442\u044C \u0441 ZOREAL"
|
|
199
220
|
},
|
|
200
221
|
ja: {
|
|
201
222
|
title: "\u30B9\u30AD\u30E3\u30F3\u3057\u3066\u30ED\u30B0\u30A4\u30F3",
|
|
223
|
+
titleIdentify: "\u30B9\u30AD\u30E3\u30F3\u3057\u3066\u672C\u4EBA\u78BA\u8A8D",
|
|
224
|
+
titlePresence: "\u30B9\u30AD\u30E3\u30F3\u3057\u3066\u5B9F\u5728\u306E\u4EBA\u7269\u3067\u3042\u308B\u3053\u3068\u3092\u8A3C\u660E",
|
|
202
225
|
titleApprove: "\u30B9\u30DE\u30FC\u30C8\u30D5\u30A9\u30F3\u3067\u627F\u8A8D",
|
|
203
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",
|
|
204
227
|
bodyApprove: "ZOREAL ID\u30A2\u30D7\u30EA\u3067\u30ED\u30B0\u30A4\u30F3\u3092\u627F\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
@@ -211,10 +234,13 @@ var TRANSLATIONS = {
|
|
|
211
234
|
noIdBody: "\u540C\u3058\u30B3\u30FC\u30C9\u3092\u30B9\u30AD\u30E3\u30F3\u3057\u3066\u30A2\u30D7\u30EA\u3092\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u3057\u3001\u7121\u6599\u3067\u4F5C\u6210\u3067\u304D\u307E\u3059\u30021\u5206\u307B\u3069\u3067\u5B8C\u4E86\u3057\u307E\u3059\u3002",
|
|
212
235
|
cancel: "\u30AD\u30E3\u30F3\u30BB\u30EB",
|
|
213
236
|
close: "\u9589\u3058\u308B",
|
|
214
|
-
qrAlt: "ZOREAL\u3067\u30ED\u30B0\u30A4\u30F3\u3059\u308B\u305F\u3081\u306EQR\u30B3\u30FC\u30C9"
|
|
237
|
+
qrAlt: "ZOREAL\u3067\u30ED\u30B0\u30A4\u30F3\u3059\u308B\u305F\u3081\u306EQR\u30B3\u30FC\u30C9",
|
|
238
|
+
buttonContinue: "ZOREAL\u3067\u7D9A\u884C"
|
|
215
239
|
},
|
|
216
240
|
hi: {
|
|
217
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",
|
|
242
|
+
titleIdentify: "\u0905\u092A\u0928\u0940 \u092A\u0939\u091A\u093E\u0928 \u0938\u0924\u094D\u092F\u093E\u092A\u093F\u0924 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0938\u094D\u0915\u0948\u0928 \u0915\u0930\u0947\u0902",
|
|
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",
|
|
218
244
|
titleApprove: "\u0905\u092A\u0928\u0947 \u092B\u094B\u0928 \u092A\u0930 \u0938\u094D\u0935\u0940\u0915\u0943\u0924 \u0915\u0930\u0947\u0902",
|
|
219
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",
|
|
220
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",
|
|
@@ -227,10 +253,13 @@ var TRANSLATIONS = {
|
|
|
227
253
|
noIdBody: "\u0910\u092A \u0921\u093E\u0909\u0928\u0932\u094B\u0921 \u0915\u0930\u0928\u0947 \u0914\u0930 \u092E\u0941\u092B\u094D\u0924 \u092E\u0947\u0902 \u090F\u0915 \u092C\u0928\u093E\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F \u0935\u0939\u0940 \u0915\u094B\u0921 \u0938\u094D\u0915\u0948\u0928 \u0915\u0930\u0947\u0902\u0964 \u0907\u0938\u092E\u0947\u0902 \u092C\u0938 \u090F\u0915 \u092E\u093F\u0928\u091F \u0932\u0917\u0924\u093E \u0939\u0948\u0964",
|
|
228
254
|
cancel: "\u0930\u0926\u094D\u0926 \u0915\u0930\u0947\u0902",
|
|
229
255
|
close: "\u092C\u0902\u0926 \u0915\u0930\u0947\u0902",
|
|
230
|
-
qrAlt: "ZOREAL \u0938\u0947 \u0938\u093E\u0907\u0928 \u0907\u0928 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F QR \u0915\u094B\u0921"
|
|
256
|
+
qrAlt: "ZOREAL \u0938\u0947 \u0938\u093E\u0907\u0928 \u0907\u0928 \u0915\u0930\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F QR \u0915\u094B\u0921",
|
|
257
|
+
buttonContinue: "ZOREAL \u0915\u0947 \u0938\u093E\u0925 \u091C\u093E\u0930\u0940 \u0930\u0916\u0947\u0902"
|
|
231
258
|
},
|
|
232
259
|
zhs: {
|
|
233
260
|
title: "\u626B\u7801\u767B\u5F55",
|
|
261
|
+
titleIdentify: "\u626B\u7801\u9A8C\u8BC1\u8EAB\u4EFD",
|
|
262
|
+
titlePresence: "\u626B\u7801\u8BC1\u660E\u60A8\u662F\u771F\u4EBA",
|
|
234
263
|
titleApprove: "\u5728\u624B\u673A\u4E0A\u6279\u51C6",
|
|
235
264
|
bodyScan: "\u4F7F\u7528\u624B\u673A\u76F8\u673A\u6216 ZOREAL ID \u5E94\u7528\u626B\u63CF\u3002",
|
|
236
265
|
bodyApprove: "\u8BF7\u5728 ZOREAL ID \u5E94\u7528\u4E2D\u6279\u51C6\u767B\u5F55\u3002",
|
|
@@ -243,10 +272,13 @@ var TRANSLATIONS = {
|
|
|
243
272
|
noIdBody: "\u626B\u63CF\u540C\u4E00\u4E2A\u4E8C\u7EF4\u7801\u5373\u53EF\u4E0B\u8F7D\u5E94\u7528\u5E76\u514D\u8D39\u521B\u5EFA\uFF0C\u53EA\u9700\u4E00\u5206\u949F\u3002",
|
|
244
273
|
cancel: "\u53D6\u6D88",
|
|
245
274
|
close: "\u5173\u95ED",
|
|
246
|
-
qrAlt: "\u4F7F\u7528 ZOREAL \u767B\u5F55\u7684\u4E8C\u7EF4\u7801"
|
|
275
|
+
qrAlt: "\u4F7F\u7528 ZOREAL \u767B\u5F55\u7684\u4E8C\u7EF4\u7801",
|
|
276
|
+
buttonContinue: "\u4F7F\u7528 ZOREAL \u7EE7\u7EED"
|
|
247
277
|
},
|
|
248
278
|
zht: {
|
|
249
279
|
title: "\u6383\u78BC\u767B\u5165",
|
|
280
|
+
titleIdentify: "\u6383\u78BC\u9A57\u8B49\u8EAB\u5206",
|
|
281
|
+
titlePresence: "\u6383\u78BC\u8B49\u660E\u60A8\u662F\u771F\u4EBA",
|
|
250
282
|
titleApprove: "\u5728\u624B\u6A5F\u4E0A\u6838\u51C6",
|
|
251
283
|
bodyScan: "\u4F7F\u7528\u624B\u6A5F\u76F8\u6A5F\u6216 ZOREAL ID \u61C9\u7528\u7A0B\u5F0F\u6383\u63CF\u3002",
|
|
252
284
|
bodyApprove: "\u8ACB\u5728 ZOREAL ID \u61C9\u7528\u7A0B\u5F0F\u4E2D\u6838\u51C6\u767B\u5165\u3002",
|
|
@@ -259,10 +291,13 @@ var TRANSLATIONS = {
|
|
|
259
291
|
noIdBody: "\u6383\u63CF\u540C\u4E00\u500B QR code \u5373\u53EF\u4E0B\u8F09\u61C9\u7528\u7A0B\u5F0F\u4E26\u514D\u8CBB\u5EFA\u7ACB\uFF0C\u53EA\u9700\u4E00\u5206\u9418\u3002",
|
|
260
292
|
cancel: "\u53D6\u6D88",
|
|
261
293
|
close: "\u95DC\u9589",
|
|
262
|
-
qrAlt: "\u4F7F\u7528 ZOREAL \u767B\u5165\u7684 QR code"
|
|
294
|
+
qrAlt: "\u4F7F\u7528 ZOREAL \u767B\u5165\u7684 QR code",
|
|
295
|
+
buttonContinue: "\u4F7F\u7528 ZOREAL \u7E7C\u7E8C"
|
|
263
296
|
},
|
|
264
297
|
ar: {
|
|
265
298
|
title: "\u0627\u0645\u0633\u062D \u0644\u062A\u0633\u062C\u064A\u0644 \u0627\u0644\u062F\u062E\u0648\u0644",
|
|
299
|
+
titleIdentify: "\u0627\u0645\u0633\u062D \u0644\u0644\u062A\u062D\u0642\u0642 \u0645\u0646 \u0647\u0648\u064A\u062A\u0643",
|
|
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",
|
|
266
301
|
titleApprove: "\u0648\u0627\u0641\u0642 \u0639\u0644\u0649 \u0647\u0627\u062A\u0641\u0643",
|
|
267
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.",
|
|
268
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.",
|
|
@@ -275,10 +310,13 @@ var TRANSLATIONS = {
|
|
|
275
310
|
noIdBody: "\u0627\u0645\u0633\u062D \u0627\u0644\u0631\u0645\u0632 \u0646\u0641\u0633\u0647 \u0644\u062A\u0646\u0632\u064A\u0644 \u0627\u0644\u062A\u0637\u0628\u064A\u0642 \u0648\u0625\u0646\u0634\u0627\u0621 \u062D\u0633\u0627\u0628 \u0645\u062C\u0627\u0646\u064A. \u064A\u0633\u062A\u063A\u0631\u0642 \u0627\u0644\u0623\u0645\u0631 \u062F\u0642\u064A\u0642\u0629 \u0648\u0627\u062D\u062F\u0629 \u0641\u0642\u0637.",
|
|
276
311
|
cancel: "\u0625\u0644\u063A\u0627\u0621",
|
|
277
312
|
close: "\u0625\u063A\u0644\u0627\u0642",
|
|
278
|
-
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"
|
|
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",
|
|
314
|
+
buttonContinue: "\u0627\u0644\u0645\u062A\u0627\u0628\u0639\u0629 \u0628\u0627\u0633\u062A\u062E\u062F\u0627\u0645 ZOREAL"
|
|
279
315
|
},
|
|
280
316
|
ko: {
|
|
281
317
|
title: "\uC2A4\uCE94\uD558\uC5EC \uB85C\uADF8\uC778",
|
|
318
|
+
titleIdentify: "\uC2A4\uCE94\uD558\uC5EC \uC2E0\uC6D0 \uD655\uC778",
|
|
319
|
+
titlePresence: "\uC2A4\uCE94\uD558\uC5EC \uC2E4\uC81C \uC0AC\uB78C\uC784\uC744 \uC99D\uBA85",
|
|
282
320
|
titleApprove: "\uD734\uB300\uD3F0\uC5D0\uC11C \uC2B9\uC778",
|
|
283
321
|
bodyScan: "\uD734\uB300\uD3F0 \uCE74\uBA54\uB77C \uB610\uB294 ZOREAL ID \uC571\uC73C\uB85C \uC2A4\uCE94\uD558\uC138\uC694.",
|
|
284
322
|
bodyApprove: "ZOREAL ID \uC571\uC5D0\uC11C \uB85C\uADF8\uC778\uC744 \uC2B9\uC778\uD558\uC138\uC694.",
|
|
@@ -291,11 +329,14 @@ var TRANSLATIONS = {
|
|
|
291
329
|
noIdBody: "\uAC19\uC740 \uCF54\uB4DC\uB97C \uC2A4\uCE94\uD574 \uC571\uC744 \uB0B4\uB824\uBC1B\uACE0 \uBB34\uB8CC\uB85C \uB9CC\uB4DC\uC138\uC694. 1\uBD84\uC774\uBA74 \uB429\uB2C8\uB2E4.",
|
|
292
330
|
cancel: "\uCDE8\uC18C",
|
|
293
331
|
close: "\uB2EB\uAE30",
|
|
294
|
-
qrAlt: "ZOREAL\uB85C \uB85C\uADF8\uC778\uD558\uAE30 \uC704\uD55C QR \uCF54\uB4DC"
|
|
332
|
+
qrAlt: "ZOREAL\uB85C \uB85C\uADF8\uC778\uD558\uAE30 \uC704\uD55C QR \uCF54\uB4DC",
|
|
333
|
+
buttonContinue: "ZOREAL\uB85C \uACC4\uC18D"
|
|
295
334
|
},
|
|
296
335
|
// Български
|
|
297
336
|
bg: {
|
|
298
337
|
title: "\u0421\u043A\u0430\u043D\u0438\u0440\u0430\u0439\u0442\u0435 \u0437\u0430 \u0432\u0445\u043E\u0434",
|
|
338
|
+
titleIdentify: "\u0421\u043A\u0430\u043D\u0438\u0440\u0430\u0439\u0442\u0435, \u0437\u0430 \u0434\u0430 \u043F\u043E\u0442\u0432\u044A\u0440\u0434\u0438\u0442\u0435 \u0441\u0430\u043C\u043E\u043B\u0438\u0447\u043D\u043E\u0441\u0442\u0442\u0430 \u0441\u0438",
|
|
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",
|
|
299
340
|
titleApprove: "\u041F\u043E\u0442\u0432\u044A\u0440\u0434\u0435\u0442\u0435 \u043D\u0430 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430 \u0441\u0438",
|
|
300
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.",
|
|
301
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.",
|
|
@@ -308,11 +349,14 @@ var TRANSLATIONS = {
|
|
|
308
349
|
noIdBody: "\u0421\u043A\u0430\u043D\u0438\u0440\u0430\u0439\u0442\u0435 \u0441\u044A\u0449\u0438\u044F \u043A\u043E\u0434, \u0437\u0430 \u0434\u0430 \u0438\u0437\u0442\u0435\u0433\u043B\u0438\u0442\u0435 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435\u0442\u043E \u0438 \u0434\u0430 \u0441\u0438 \u0441\u044A\u0437\u0434\u0430\u0434\u0435\u0442\u0435 \u0431\u0435\u0437\u043F\u043B\u0430\u0442\u0435\u043D \u0430\u043A\u0430\u0443\u043D\u0442. \u041E\u0442\u043D\u0435\u043C\u0430 \u0441\u0430\u043C\u043E \u043C\u0438\u043D\u0443\u0442\u0430.",
|
|
309
350
|
cancel: "\u041E\u0442\u043A\u0430\u0437",
|
|
310
351
|
close: "\u0417\u0430\u0442\u0432\u043E\u0440\u0438",
|
|
311
|
-
qrAlt: "QR \u043A\u043E\u0434 \u0437\u0430 \u0432\u0445\u043E\u0434 \u0441\u044A\u0441 ZOREAL"
|
|
352
|
+
qrAlt: "QR \u043A\u043E\u0434 \u0437\u0430 \u0432\u0445\u043E\u0434 \u0441\u044A\u0441 ZOREAL",
|
|
353
|
+
buttonContinue: "\u041F\u0440\u043E\u0434\u044A\u043B\u0436\u0438 \u0441\u044A\u0441 ZOREAL"
|
|
312
354
|
},
|
|
313
355
|
// বাংলা
|
|
314
356
|
bn: {
|
|
315
357
|
title: "\u09B8\u09BE\u0987\u09A8 \u0987\u09A8 \u0995\u09B0\u09A4\u09C7 \u09B8\u09CD\u0995\u09CD\u09AF\u09BE\u09A8 \u0995\u09B0\u09C1\u09A8",
|
|
358
|
+
titleIdentify: "\u0986\u09AA\u09A8\u09BE\u09B0 \u09AA\u09B0\u09BF\u099A\u09AF\u09BC \u09AF\u09BE\u099A\u09BE\u0987 \u0995\u09B0\u09A4\u09C7 \u09B8\u09CD\u0995\u09CD\u09AF\u09BE\u09A8 \u0995\u09B0\u09C1\u09A8",
|
|
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",
|
|
316
360
|
titleApprove: "\u0986\u09AA\u09A8\u09BE\u09B0 \u09AB\u09CB\u09A8\u09C7 \u0985\u09A8\u09C1\u09AE\u09CB\u09A6\u09A8 \u0995\u09B0\u09C1\u09A8",
|
|
317
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",
|
|
318
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",
|
|
@@ -325,11 +369,14 @@ var TRANSLATIONS = {
|
|
|
325
369
|
noIdBody: "\u0985\u09CD\u09AF\u09BE\u09AA \u09A1\u09BE\u0989\u09A8\u09B2\u09CB\u09A1 \u0995\u09B0\u09C7 \u09AC\u09BF\u09A8\u09BE\u09AE\u09C2\u09B2\u09CD\u09AF\u09C7 \u098F\u0995\u099F\u09BF \u09A4\u09C8\u09B0\u09BF \u0995\u09B0\u09A4\u09C7 \u098F\u0995\u0987 \u0995\u09CB\u09A1 \u09B8\u09CD\u0995\u09CD\u09AF\u09BE\u09A8 \u0995\u09B0\u09C1\u09A8\u0964 \u098F\u09A4\u09C7 \u09AE\u09BE\u09A4\u09CD\u09B0 \u098F\u0995 \u09AE\u09BF\u09A8\u09BF\u099F \u09B8\u09AE\u09AF\u09BC \u09B2\u09BE\u0997\u09C7\u0964",
|
|
326
370
|
cancel: "\u09AC\u09BE\u09A4\u09BF\u09B2",
|
|
327
371
|
close: "\u09AC\u09A8\u09CD\u09A7",
|
|
328
|
-
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"
|
|
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",
|
|
373
|
+
buttonContinue: "ZOREAL \u09A6\u09BF\u09AF\u09BC\u09C7 \u099A\u09BE\u09B2\u09BF\u09AF\u09BC\u09C7 \u09AF\u09BE\u09A8"
|
|
329
374
|
},
|
|
330
375
|
// Bosanski
|
|
331
376
|
bs: {
|
|
332
377
|
title: "Skenirajte za prijavu",
|
|
378
|
+
titleIdentify: "Skenirajte da potvrdite svoj identitet",
|
|
379
|
+
titlePresence: "Skenirajte da doka\u017Eete da ste stvarna osoba",
|
|
333
380
|
titleApprove: "Odobrite na svom telefonu",
|
|
334
381
|
bodyScan: "Skenirajte kamerom svog telefona ili aplikacijom ZOREAL ID.",
|
|
335
382
|
bodyApprove: "Odobrite prijavu u aplikaciji ZOREAL ID.",
|
|
@@ -342,11 +389,14 @@ var TRANSLATIONS = {
|
|
|
342
389
|
noIdBody: "Skenirajte isti kod da preuzmete aplikaciju i besplatno ga napravite. Traje samo minutu.",
|
|
343
390
|
cancel: "Otka\u017Ei",
|
|
344
391
|
close: "Zatvori",
|
|
345
|
-
qrAlt: "QR kod za prijavu putem ZOREAL-a"
|
|
392
|
+
qrAlt: "QR kod za prijavu putem ZOREAL-a",
|
|
393
|
+
buttonContinue: "Nastavi sa ZOREAL-om"
|
|
346
394
|
},
|
|
347
395
|
// Čeština
|
|
348
396
|
cs: {
|
|
349
397
|
title: "P\u0159ihlaste se naskenov\xE1n\xEDm",
|
|
398
|
+
titleIdentify: "Naskenujte pro ov\u011B\u0159en\xED toto\u017Enosti",
|
|
399
|
+
titlePresence: "Naskenujte a proka\u017Ete, \u017Ee jste skute\u010Dn\xFD \u010Dlov\u011Bk",
|
|
350
400
|
titleApprove: "Potvr\u010Fte v telefonu",
|
|
351
401
|
bodyScan: "Naskenujte fotoapar\xE1tem telefonu nebo aplikac\xED ZOREAL ID.",
|
|
352
402
|
bodyApprove: "Potvr\u010Fte p\u0159ihl\xE1\u0161en\xED v aplikaci ZOREAL ID.",
|
|
@@ -359,11 +409,14 @@ var TRANSLATIONS = {
|
|
|
359
409
|
noIdBody: "Naskenov\xE1n\xEDm stejn\xE9ho k\xF3du si st\xE1hnete aplikaci a zdarma vytvo\u0159\xEDte ZOREAL ID. Zabere to jen minutu.",
|
|
360
410
|
cancel: "Zru\u0161it",
|
|
361
411
|
close: "Zav\u0159\xEDt",
|
|
362
|
-
qrAlt: "QR k\xF3d pro p\u0159ihl\xE1\u0161en\xED pomoc\xED ZOREAL"
|
|
412
|
+
qrAlt: "QR k\xF3d pro p\u0159ihl\xE1\u0161en\xED pomoc\xED ZOREAL",
|
|
413
|
+
buttonContinue: "Pokra\u010Dovat se ZOREAL"
|
|
363
414
|
},
|
|
364
415
|
// Dansk
|
|
365
416
|
da: {
|
|
366
417
|
title: "Scan for at logge ind",
|
|
418
|
+
titleIdentify: "Scan for at bekr\xE6fte din identitet",
|
|
419
|
+
titlePresence: "Scan for at bevise, at du er et rigtigt menneske",
|
|
367
420
|
titleApprove: "Godkend p\xE5 din telefon",
|
|
368
421
|
bodyScan: "Scan med telefonens kamera eller ZOREAL ID-appen.",
|
|
369
422
|
bodyApprove: "Godkend login i din ZOREAL ID-app.",
|
|
@@ -376,11 +429,14 @@ var TRANSLATIONS = {
|
|
|
376
429
|
noIdBody: "Scan den samme kode for at hente appen og oprette et gratis. Det tager kun et minut.",
|
|
377
430
|
cancel: "Annuller",
|
|
378
431
|
close: "Luk",
|
|
379
|
-
qrAlt: "QR-kode til at logge ind med ZOREAL"
|
|
432
|
+
qrAlt: "QR-kode til at logge ind med ZOREAL",
|
|
433
|
+
buttonContinue: "Forts\xE6t med ZOREAL"
|
|
380
434
|
},
|
|
381
435
|
// Ελληνικά
|
|
382
436
|
el: {
|
|
383
437
|
title: "\u03A3\u03AC\u03C1\u03C9\u03C3\u03B7 \u03B3\u03B9\u03B1 \u03C3\u03CD\u03BD\u03B4\u03B5\u03C3\u03B7",
|
|
438
|
+
titleIdentify: "\u03A3\u03AC\u03C1\u03C9\u03C3\u03B7 \u03B3\u03B9\u03B1 \u03B5\u03C0\u03B1\u03BB\u03AE\u03B8\u03B5\u03C5\u03C3\u03B7 \u03C4\u03B1\u03C5\u03C4\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2",
|
|
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",
|
|
384
440
|
titleApprove: "\u0388\u03B3\u03BA\u03C1\u03B9\u03C3\u03B7 \u03B1\u03C0\u03CC \u03C4\u03BF \u03BA\u03B9\u03BD\u03B7\u03C4\u03CC \u03C3\u03B1\u03C2",
|
|
385
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.",
|
|
386
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.",
|
|
@@ -393,11 +449,14 @@ var TRANSLATIONS = {
|
|
|
393
449
|
noIdBody: "\u03A3\u03B1\u03C1\u03CE\u03C3\u03C4\u03B5 \u03C4\u03BF\u03BD \u03AF\u03B4\u03B9\u03BF \u03BA\u03C9\u03B4\u03B9\u03BA\u03CC \u03B3\u03B9\u03B1 \u03BD\u03B1 \u03BA\u03B1\u03C4\u03B5\u03B2\u03AC\u03C3\u03B5\u03C4\u03B5 \u03C4\u03B7\u03BD \u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE \u03BA\u03B1\u03B9 \u03BD\u03B1 \u03B4\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AE\u03C3\u03B5\u03C4\u03B5 \u03AD\u03BD\u03B1 \u03B4\u03C9\u03C1\u03B5\u03AC\u03BD. \u03A7\u03C1\u03B5\u03B9\u03AC\u03B6\u03B5\u03C4\u03B1\u03B9 \u03BC\u03CC\u03BD\u03BF \u03AD\u03BD\u03B1 \u03BB\u03B5\u03C0\u03C4\u03CC.",
|
|
394
450
|
cancel: "\u0386\u03BA\u03C5\u03C1\u03BF",
|
|
395
451
|
close: "\u039A\u03BB\u03B5\u03AF\u03C3\u03B9\u03BC\u03BF",
|
|
396
|
-
qrAlt: "\u039A\u03C9\u03B4\u03B9\u03BA\u03CC\u03C2 QR \u03B3\u03B9\u03B1 \u03C3\u03CD\u03BD\u03B4\u03B5\u03C3\u03B7 \u03BC\u03B5 ZOREAL"
|
|
452
|
+
qrAlt: "\u039A\u03C9\u03B4\u03B9\u03BA\u03CC\u03C2 QR \u03B3\u03B9\u03B1 \u03C3\u03CD\u03BD\u03B4\u03B5\u03C3\u03B7 \u03BC\u03B5 ZOREAL",
|
|
453
|
+
buttonContinue: "\u03A3\u03C5\u03BD\u03AD\u03C7\u03B5\u03B9\u03B1 \u03BC\u03B5 ZOREAL"
|
|
397
454
|
},
|
|
398
455
|
// Español (LA)
|
|
399
456
|
"es-419": {
|
|
400
457
|
title: "Escanea para iniciar sesi\xF3n",
|
|
458
|
+
titleIdentify: "Escanea para verificar tu identidad",
|
|
459
|
+
titlePresence: "Escanea para demostrar que eres una persona real",
|
|
401
460
|
titleApprove: "Aprueba desde tu celular",
|
|
402
461
|
bodyScan: "Escanea con la c\xE1mara de tu celular o con la app ZOREAL ID.",
|
|
403
462
|
bodyApprove: "Aprueba el inicio de sesi\xF3n en tu app ZOREAL ID.",
|
|
@@ -410,11 +469,14 @@ var TRANSLATIONS = {
|
|
|
410
469
|
noIdBody: "Escanea el mismo c\xF3digo para descargar la app y crear uno gratis. Solo toma un minuto.",
|
|
411
470
|
cancel: "Cancelar",
|
|
412
471
|
close: "Cerrar",
|
|
413
|
-
qrAlt: "C\xF3digo QR para iniciar sesi\xF3n con ZOREAL"
|
|
472
|
+
qrAlt: "C\xF3digo QR para iniciar sesi\xF3n con ZOREAL",
|
|
473
|
+
buttonContinue: "Continuar con ZOREAL"
|
|
414
474
|
},
|
|
415
475
|
// Suomi
|
|
416
476
|
fi: {
|
|
417
477
|
title: "Kirjaudu sis\xE4\xE4n skannaamalla",
|
|
478
|
+
titleIdentify: "Vahvista henkil\xF6llisyytesi skannaamalla",
|
|
479
|
+
titlePresence: "Todista skannaamalla, ett\xE4 olet oikea ihminen",
|
|
418
480
|
titleApprove: "Hyv\xE4ksy puhelimessasi",
|
|
419
481
|
bodyScan: "Skannaa puhelimesi kameralla tai ZOREAL ID -sovelluksella.",
|
|
420
482
|
bodyApprove: "Hyv\xE4ksy kirjautuminen ZOREAL ID -sovelluksessasi.",
|
|
@@ -427,11 +489,14 @@ var TRANSLATIONS = {
|
|
|
427
489
|
noIdBody: "Skannaa sama koodi ladataksesi sovelluksen ja luodaksesi tunnuksen ilmaiseksi. Se vie vain minuutin.",
|
|
428
490
|
cancel: "Peruuta",
|
|
429
491
|
close: "Sulje",
|
|
430
|
-
qrAlt: "QR-koodi ZOREAL-kirjautumista varten"
|
|
492
|
+
qrAlt: "QR-koodi ZOREAL-kirjautumista varten",
|
|
493
|
+
buttonContinue: "Jatka ZOREALilla"
|
|
431
494
|
},
|
|
432
495
|
// עברית
|
|
433
496
|
he: {
|
|
434
497
|
title: "\u05E1\u05E8\u05D5\u05E7 \u05DB\u05D3\u05D9 \u05DC\u05D4\u05EA\u05D7\u05D1\u05E8",
|
|
498
|
+
titleIdentify: "\u05E1\u05E8\u05D5\u05E7 \u05DB\u05D3\u05D9 \u05DC\u05D0\u05DE\u05EA \u05D0\u05EA \u05D6\u05D4\u05D5\u05EA\u05DA",
|
|
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",
|
|
435
500
|
titleApprove: "\u05D0\u05E9\u05E8 \u05D1\u05D8\u05DC\u05E4\u05D5\u05DF \u05E9\u05DC\u05DA",
|
|
436
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.",
|
|
437
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.",
|
|
@@ -444,11 +509,14 @@ var TRANSLATIONS = {
|
|
|
444
509
|
noIdBody: "\u05E1\u05E8\u05D5\u05E7 \u05D0\u05EA \u05D0\u05D5\u05EA\u05D5 \u05D4\u05E7\u05D5\u05D3 \u05DB\u05D3\u05D9 \u05DC\u05D4\u05D5\u05E8\u05D9\u05D3 \u05D0\u05EA \u05D4\u05D0\u05E4\u05DC\u05D9\u05E7\u05E6\u05D9\u05D4 \u05D5\u05DC\u05D9\u05E6\u05D5\u05E8 \u05D0\u05D7\u05D3 \u05D1\u05D7\u05D9\u05E0\u05DD. \u05D6\u05D4 \u05DC\u05D5\u05E7\u05D7 \u05E8\u05E7 \u05D3\u05E7\u05D4.",
|
|
445
510
|
cancel: "\u05D1\u05D9\u05D8\u05D5\u05DC",
|
|
446
511
|
close: "\u05E1\u05D2\u05D5\u05E8",
|
|
447
|
-
qrAlt: "\u05E7\u05D5\u05D3 QR \u05DC\u05D4\u05EA\u05D7\u05D1\u05E8\u05D5\u05EA \u05E2\u05DD ZOREAL"
|
|
512
|
+
qrAlt: "\u05E7\u05D5\u05D3 QR \u05DC\u05D4\u05EA\u05D7\u05D1\u05E8\u05D5\u05EA \u05E2\u05DD ZOREAL",
|
|
513
|
+
buttonContinue: "\u05D4\u05DE\u05E9\u05DA \u05E2\u05DD ZOREAL"
|
|
448
514
|
},
|
|
449
515
|
// Hrvatski
|
|
450
516
|
hr: {
|
|
451
517
|
title: "Skenirajte za prijavu",
|
|
518
|
+
titleIdentify: "Skenirajte za potvrdu identiteta",
|
|
519
|
+
titlePresence: "Skenirajte kako biste dokazali da ste stvarna osoba",
|
|
452
520
|
titleApprove: "Odobrite na svom mobitelu",
|
|
453
521
|
bodyScan: "Skenirajte kamerom svog mobitela ili aplikacijom ZOREAL ID.",
|
|
454
522
|
bodyApprove: "Odobrite prijavu u aplikaciji ZOREAL ID.",
|
|
@@ -461,11 +529,14 @@ var TRANSLATIONS = {
|
|
|
461
529
|
noIdBody: "Skenirajte isti kod da preuzmete aplikaciju i besplatno ga izradite. Traje samo minutu.",
|
|
462
530
|
cancel: "Odustani",
|
|
463
531
|
close: "Zatvori",
|
|
464
|
-
qrAlt: "QR kod za prijavu putem ZOREAL-a"
|
|
532
|
+
qrAlt: "QR kod za prijavu putem ZOREAL-a",
|
|
533
|
+
buttonContinue: "Nastavi sa ZOREAL-om"
|
|
465
534
|
},
|
|
466
535
|
// Magyar
|
|
467
536
|
hu: {
|
|
468
537
|
title: "Bejelentkez\xE9s beolvas\xE1ssal",
|
|
538
|
+
titleIdentify: "Olvassa be a szem\xE9lyazonoss\xE1ga igazol\xE1s\xE1hoz",
|
|
539
|
+
titlePresence: "Olvassa be annak igazol\xE1s\xE1hoz, hogy val\xF3di ember",
|
|
469
540
|
titleApprove: "J\xF3v\xE1hagy\xE1s a telefonj\xE1n",
|
|
470
541
|
bodyScan: "Olvassa be a telefonja kamer\xE1j\xE1val, vagy a ZOREAL ID alkalmaz\xE1ssal.",
|
|
471
542
|
bodyApprove: "Hagyja j\xF3v\xE1 a bejelentkez\xE9st a ZOREAL ID alkalmaz\xE1sban.",
|
|
@@ -478,11 +549,14 @@ var TRANSLATIONS = {
|
|
|
478
549
|
noIdBody: "Olvassa be ugyanazt a k\xF3dot az alkalmaz\xE1s let\xF6lt\xE9s\xE9hez, \xE9s hozzon l\xE9tre egyet ingyenesen. Mind\xF6ssze egy percet vesz ig\xE9nybe.",
|
|
479
550
|
cancel: "M\xE9gse",
|
|
480
551
|
close: "Bez\xE1r\xE1s",
|
|
481
|
-
qrAlt: "QR-k\xF3d a ZOREAL-lal val\xF3 bejelentkez\xE9shez"
|
|
552
|
+
qrAlt: "QR-k\xF3d a ZOREAL-lal val\xF3 bejelentkez\xE9shez",
|
|
553
|
+
buttonContinue: "Folytat\xE1s a ZOREAL-lal"
|
|
482
554
|
},
|
|
483
555
|
// Bahasa Indonesia
|
|
484
556
|
id: {
|
|
485
557
|
title: "Pindai untuk masuk",
|
|
558
|
+
titleIdentify: "Pindai untuk memverifikasi identitas Anda",
|
|
559
|
+
titlePresence: "Pindai untuk membuktikan bahwa Anda manusia sungguhan",
|
|
486
560
|
titleApprove: "Setujui di ponsel Anda",
|
|
487
561
|
bodyScan: "Pindai dengan kamera ponsel atau aplikasi ZOREAL ID.",
|
|
488
562
|
bodyApprove: "Setujui proses masuk di aplikasi ZOREAL ID Anda.",
|
|
@@ -495,11 +569,14 @@ var TRANSLATIONS = {
|
|
|
495
569
|
noIdBody: "Pindai kode yang sama untuk mengunduh aplikasi dan membuat akun secara gratis. Hanya butuh waktu satu menit.",
|
|
496
570
|
cancel: "Batal",
|
|
497
571
|
close: "Tutup",
|
|
498
|
-
qrAlt: "Kode QR untuk masuk dengan ZOREAL"
|
|
572
|
+
qrAlt: "Kode QR untuk masuk dengan ZOREAL",
|
|
573
|
+
buttonContinue: "Lanjutkan dengan ZOREAL"
|
|
499
574
|
},
|
|
500
575
|
// Italiano
|
|
501
576
|
it: {
|
|
502
577
|
title: "Scansiona per accedere",
|
|
578
|
+
titleIdentify: "Scansiona per verificare la tua identit\xE0",
|
|
579
|
+
titlePresence: "Scansiona per dimostrare di essere una persona reale",
|
|
503
580
|
titleApprove: "Approva sul tuo telefono",
|
|
504
581
|
bodyScan: "Scansiona con la fotocamera del telefono o con l'app ZOREAL ID.",
|
|
505
582
|
bodyApprove: "Approva l'accesso nell'app ZOREAL ID.",
|
|
@@ -512,11 +589,14 @@ var TRANSLATIONS = {
|
|
|
512
589
|
noIdBody: "Scansiona lo stesso codice per scaricare l'app e crearne uno gratis. Basta un minuto.",
|
|
513
590
|
cancel: "Annulla",
|
|
514
591
|
close: "Chiudi",
|
|
515
|
-
qrAlt: "Codice QR per accedere con ZOREAL"
|
|
592
|
+
qrAlt: "Codice QR per accedere con ZOREAL",
|
|
593
|
+
buttonContinue: "Continua con ZOREAL"
|
|
516
594
|
},
|
|
517
595
|
// Bahasa Melayu
|
|
518
596
|
ms: {
|
|
519
597
|
title: "Imbas untuk log masuk",
|
|
598
|
+
titleIdentify: "Imbas untuk mengesahkan identiti anda",
|
|
599
|
+
titlePresence: "Imbas untuk membuktikan anda manusia sebenar",
|
|
520
600
|
titleApprove: "Luluskan di telefon anda",
|
|
521
601
|
bodyScan: "Imbas dengan kamera telefon atau aplikasi ZOREAL ID.",
|
|
522
602
|
bodyApprove: "Luluskan log masuk dalam aplikasi ZOREAL ID anda.",
|
|
@@ -529,11 +609,14 @@ var TRANSLATIONS = {
|
|
|
529
609
|
noIdBody: "Imbas kod yang sama untuk memuat turun aplikasi dan cipta satu secara percuma. Hanya mengambil masa seminit.",
|
|
530
610
|
cancel: "Batal",
|
|
531
611
|
close: "Tutup",
|
|
532
|
-
qrAlt: "Kod QR untuk log masuk dengan ZOREAL"
|
|
612
|
+
qrAlt: "Kod QR untuk log masuk dengan ZOREAL",
|
|
613
|
+
buttonContinue: "Teruskan dengan ZOREAL"
|
|
533
614
|
},
|
|
534
615
|
// Nederlands
|
|
535
616
|
nl: {
|
|
536
617
|
title: "Scan om in te loggen",
|
|
618
|
+
titleIdentify: "Scan om je identiteit te verifi\xEBren",
|
|
619
|
+
titlePresence: "Scan om te bewijzen dat je een echt mens bent",
|
|
537
620
|
titleApprove: "Keur goed op je telefoon",
|
|
538
621
|
bodyScan: "Scan met de camera van je telefoon of de ZOREAL ID-app.",
|
|
539
622
|
bodyApprove: "Keur de aanmelding goed in je ZOREAL ID-app.",
|
|
@@ -546,11 +629,14 @@ var TRANSLATIONS = {
|
|
|
546
629
|
noIdBody: "Scan dezelfde code om de app te downloaden en gratis een account aan te maken. Dit duurt maar een minuut.",
|
|
547
630
|
cancel: "Annuleren",
|
|
548
631
|
close: "Sluiten",
|
|
549
|
-
qrAlt: "QR-code om in te loggen met ZOREAL"
|
|
632
|
+
qrAlt: "QR-code om in te loggen met ZOREAL",
|
|
633
|
+
buttonContinue: "Doorgaan met ZOREAL"
|
|
550
634
|
},
|
|
551
635
|
// Norsk
|
|
552
636
|
no: {
|
|
553
637
|
title: "Skann for \xE5 logge inn",
|
|
638
|
+
titleIdentify: "Skann for \xE5 bekrefte identiteten din",
|
|
639
|
+
titlePresence: "Skann for \xE5 bevise at du er et ekte menneske",
|
|
554
640
|
titleApprove: "Godkjenn p\xE5 telefonen din",
|
|
555
641
|
bodyScan: "Skann med telefonens kamera eller ZOREAL ID-appen.",
|
|
556
642
|
bodyApprove: "Godkjenn innloggingen i ZOREAL ID-appen din.",
|
|
@@ -563,11 +649,14 @@ var TRANSLATIONS = {
|
|
|
563
649
|
noIdBody: "Skann den samme koden for \xE5 laste ned appen og opprette en gratis. Det tar bare et minutt.",
|
|
564
650
|
cancel: "Avbryt",
|
|
565
651
|
close: "Lukk",
|
|
566
|
-
qrAlt: "QR-kode for \xE5 logge inn med ZOREAL"
|
|
652
|
+
qrAlt: "QR-kode for \xE5 logge inn med ZOREAL",
|
|
653
|
+
buttonContinue: "Fortsett med ZOREAL"
|
|
567
654
|
},
|
|
568
655
|
// Polski
|
|
569
656
|
pl: {
|
|
570
657
|
title: "Zeskanuj, aby si\u0119 zalogowa\u0107",
|
|
658
|
+
titleIdentify: "Zeskanuj, aby zweryfikowa\u0107 swoj\u0105 to\u017Csamo\u015B\u0107",
|
|
659
|
+
titlePresence: "Zeskanuj, aby udowodni\u0107, \u017Ce jeste\u015B prawdziwym cz\u0142owiekiem",
|
|
571
660
|
titleApprove: "Zatwierd\u017A w telefonie",
|
|
572
661
|
bodyScan: "Zeskanuj aparatem telefonu lub aplikacj\u0105 ZOREAL ID.",
|
|
573
662
|
bodyApprove: "Zatwierd\u017A logowanie w aplikacji ZOREAL ID.",
|
|
@@ -580,11 +669,14 @@ var TRANSLATIONS = {
|
|
|
580
669
|
noIdBody: "Zeskanuj ten sam kod, aby pobra\u0107 aplikacj\u0119 i bezp\u0142atnie utworzy\u0107 ZOREAL ID. Zajmie to tylko minut\u0119.",
|
|
581
670
|
cancel: "Anuluj",
|
|
582
671
|
close: "Zamknij",
|
|
583
|
-
qrAlt: "Kod QR do logowania za pomoc\u0105 ZOREAL"
|
|
672
|
+
qrAlt: "Kod QR do logowania za pomoc\u0105 ZOREAL",
|
|
673
|
+
buttonContinue: "Kontynuuj z ZOREAL"
|
|
584
674
|
},
|
|
585
675
|
// Português (BR)
|
|
586
676
|
"pt-br": {
|
|
587
677
|
title: "Escaneie para entrar",
|
|
678
|
+
titleIdentify: "Escaneie para verificar sua identidade",
|
|
679
|
+
titlePresence: "Escaneie para provar que voc\xEA \xE9 uma pessoa real",
|
|
588
680
|
titleApprove: "Aprove no seu celular",
|
|
589
681
|
bodyScan: "Escaneie com a c\xE2mera do seu celular ou com o app ZOREAL ID.",
|
|
590
682
|
bodyApprove: "Aprove o login no app ZOREAL ID.",
|
|
@@ -597,11 +689,14 @@ var TRANSLATIONS = {
|
|
|
597
689
|
noIdBody: "Escaneie o mesmo c\xF3digo para baixar o app e criar um de gra\xE7a. Leva s\xF3 um minuto.",
|
|
598
690
|
cancel: "Cancelar",
|
|
599
691
|
close: "Fechar",
|
|
600
|
-
qrAlt: "C\xF3digo QR para entrar com ZOREAL"
|
|
692
|
+
qrAlt: "C\xF3digo QR para entrar com ZOREAL",
|
|
693
|
+
buttonContinue: "Continuar com ZOREAL"
|
|
601
694
|
},
|
|
602
695
|
// Română
|
|
603
696
|
ro: {
|
|
604
697
|
title: "Scana\u021Bi pentru conectare",
|
|
698
|
+
titleIdentify: "Scana\u021Bi pentru a v\u0103 verifica identitatea",
|
|
699
|
+
titlePresence: "Scana\u021Bi pentru a dovedi c\u0103 sunte\u021Bi o persoan\u0103 real\u0103",
|
|
605
700
|
titleApprove: "Aproba\u021Bi de pe telefon",
|
|
606
701
|
bodyScan: "Scana\u021Bi cu camera telefonului sau cu aplica\u021Bia ZOREAL ID.",
|
|
607
702
|
bodyApprove: "Aproba\u021Bi conectarea \xEEn aplica\u021Bia ZOREAL ID.",
|
|
@@ -614,11 +709,14 @@ var TRANSLATIONS = {
|
|
|
614
709
|
noIdBody: "Scana\u021Bi acela\u0219i cod pentru a desc\u0103rca aplica\u021Bia \u0219i a crea unul gratuit. Dureaz\u0103 doar un minut.",
|
|
615
710
|
cancel: "Anuleaz\u0103",
|
|
616
711
|
close: "\xCEnchide",
|
|
617
|
-
qrAlt: "Cod QR pentru conectare cu ZOREAL"
|
|
712
|
+
qrAlt: "Cod QR pentru conectare cu ZOREAL",
|
|
713
|
+
buttonContinue: "Continua\u021Bi cu ZOREAL"
|
|
618
714
|
},
|
|
619
715
|
// Српски
|
|
620
716
|
sr: {
|
|
621
717
|
title: "\u0421\u043A\u0435\u043D\u0438\u0440\u0430\u0458\u0442\u0435 \u0437\u0430 \u043F\u0440\u0438\u0458\u0430\u0432\u0443",
|
|
718
|
+
titleIdentify: "\u0421\u043A\u0435\u043D\u0438\u0440\u0430\u0458\u0442\u0435 \u0434\u0430 \u043F\u043E\u0442\u0432\u0440\u0434\u0438\u0442\u0435 \u0441\u0432\u043E\u0458 \u0438\u0434\u0435\u043D\u0442\u0438\u0442\u0435\u0442",
|
|
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",
|
|
622
720
|
titleApprove: "\u041E\u0434\u043E\u0431\u0440\u0438\u0442\u0435 \u043D\u0430 \u0441\u0432\u043E\u043C \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0443",
|
|
623
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.",
|
|
624
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.",
|
|
@@ -631,11 +729,14 @@ var TRANSLATIONS = {
|
|
|
631
729
|
noIdBody: "\u0421\u043A\u0435\u043D\u0438\u0440\u0430\u0458\u0442\u0435 \u0438\u0441\u0442\u0438 \u043A\u043E\u0434 \u0434\u0430 \u043F\u0440\u0435\u0443\u0437\u043C\u0435\u0442\u0435 \u0430\u043F\u043B\u0438\u043A\u0430\u0446\u0438\u0458\u0443 \u0438 \u0431\u0435\u0441\u043F\u043B\u0430\u0442\u043D\u043E \u0433\u0430 \u043D\u0430\u043F\u0440\u0430\u0432\u0438\u0442\u0435. \u0422\u0440\u0430\u0458\u0435 \u0441\u0430\u043C\u043E \u043C\u0438\u043D\u0443\u0442.",
|
|
632
730
|
cancel: "\u041E\u0442\u043A\u0430\u0436\u0438",
|
|
633
731
|
close: "\u0417\u0430\u0442\u0432\u043E\u0440\u0438",
|
|
634
|
-
qrAlt: "QR \u043A\u043E\u0434 \u0437\u0430 \u043F\u0440\u0438\u0458\u0430\u0432\u0443 \u043F\u0440\u0435\u043A\u043E ZOREAL-\u0430"
|
|
732
|
+
qrAlt: "QR \u043A\u043E\u0434 \u0437\u0430 \u043F\u0440\u0438\u0458\u0430\u0432\u0443 \u043F\u0440\u0435\u043A\u043E ZOREAL-\u0430",
|
|
733
|
+
buttonContinue: "\u041D\u0430\u0441\u0442\u0430\u0432\u0438 \u0441\u0430 ZOREAL-\u043E\u043C"
|
|
635
734
|
},
|
|
636
735
|
// ไทย
|
|
637
736
|
th: {
|
|
638
737
|
title: "\u0E2A\u0E41\u0E01\u0E19\u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E40\u0E02\u0E49\u0E32\u0E2A\u0E39\u0E48\u0E23\u0E30\u0E1A\u0E1A",
|
|
738
|
+
titleIdentify: "\u0E2A\u0E41\u0E01\u0E19\u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E22\u0E37\u0E19\u0E22\u0E31\u0E19\u0E15\u0E31\u0E27\u0E15\u0E19\u0E02\u0E2D\u0E07\u0E04\u0E38\u0E13",
|
|
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",
|
|
639
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",
|
|
640
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",
|
|
641
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",
|
|
@@ -648,11 +749,14 @@ var TRANSLATIONS = {
|
|
|
648
749
|
noIdBody: "\u0E2A\u0E41\u0E01\u0E19\u0E42\u0E04\u0E49\u0E14\u0E40\u0E14\u0E35\u0E22\u0E27\u0E01\u0E31\u0E19\u0E40\u0E1E\u0E37\u0E48\u0E2D\u0E14\u0E32\u0E27\u0E19\u0E4C\u0E42\u0E2B\u0E25\u0E14\u0E41\u0E2D\u0E1B\u0E41\u0E25\u0E30\u0E2A\u0E23\u0E49\u0E32\u0E07\u0E1A\u0E31\u0E0D\u0E0A\u0E35\u0E1F\u0E23\u0E35 \u0E43\u0E0A\u0E49\u0E40\u0E27\u0E25\u0E32\u0E40\u0E1E\u0E35\u0E22\u0E07\u0E19\u0E32\u0E17\u0E35\u0E40\u0E14\u0E35\u0E22\u0E27",
|
|
649
750
|
cancel: "\u0E22\u0E01\u0E40\u0E25\u0E34\u0E01",
|
|
650
751
|
close: "\u0E1B\u0E34\u0E14",
|
|
651
|
-
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"
|
|
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",
|
|
753
|
+
buttonContinue: "\u0E14\u0E33\u0E40\u0E19\u0E34\u0E19\u0E01\u0E32\u0E23\u0E15\u0E48\u0E2D\u0E14\u0E49\u0E27\u0E22 ZOREAL"
|
|
652
754
|
},
|
|
653
755
|
// Tagalog
|
|
654
756
|
tl: {
|
|
655
757
|
title: "I-scan para mag-sign in",
|
|
758
|
+
titleIdentify: "I-scan para i-verify ang iyong pagkakakilanlan",
|
|
759
|
+
titlePresence: "I-scan para patunayang tunay kang tao",
|
|
656
760
|
titleApprove: "I-approve sa iyong telepono",
|
|
657
761
|
bodyScan: "I-scan gamit ang camera ng iyong telepono o ang ZOREAL ID app.",
|
|
658
762
|
bodyApprove: "I-approve ang login sa iyong ZOREAL ID app.",
|
|
@@ -665,11 +769,14 @@ var TRANSLATIONS = {
|
|
|
665
769
|
noIdBody: "I-scan ang parehong code para i-download ang app at gumawa ng iyong ZOREAL ID nang libre. Isang minuto lang ito.",
|
|
666
770
|
cancel: "Kanselahin",
|
|
667
771
|
close: "Isara",
|
|
668
|
-
qrAlt: "QR code para mag-sign in gamit ang ZOREAL"
|
|
772
|
+
qrAlt: "QR code para mag-sign in gamit ang ZOREAL",
|
|
773
|
+
buttonContinue: "Magpatuloy gamit ang ZOREAL"
|
|
669
774
|
},
|
|
670
775
|
// Türkçe
|
|
671
776
|
tr: {
|
|
672
777
|
title: "Giri\u015F i\xE7in taray\u0131n",
|
|
778
|
+
titleIdentify: "Kimli\u011Finizi do\u011Frulamak i\xE7in taray\u0131n",
|
|
779
|
+
titlePresence: "Ger\xE7ek bir insan oldu\u011Funuzu kan\u0131tlamak i\xE7in taray\u0131n",
|
|
673
780
|
titleApprove: "Telefonunuzdan onaylay\u0131n",
|
|
674
781
|
bodyScan: "Telefonunuzun kameras\u0131yla veya ZOREAL ID uygulamas\u0131yla taray\u0131n.",
|
|
675
782
|
bodyApprove: "Giri\u015Fi ZOREAL ID uygulaman\u0131zdan onaylay\u0131n.",
|
|
@@ -682,11 +789,14 @@ var TRANSLATIONS = {
|
|
|
682
789
|
noIdBody: "Uygulamay\u0131 indirmek ve \xFCcretsiz bir tane olu\u015Fturmak i\xE7in ayn\u0131 kodu taray\u0131n. Sadece bir dakikan\u0131z\u0131 al\u0131r.",
|
|
683
790
|
cancel: "\u0130ptal",
|
|
684
791
|
close: "Kapat",
|
|
685
|
-
qrAlt: "ZOREAL ile giri\u015F yapmak i\xE7in QR kodu"
|
|
792
|
+
qrAlt: "ZOREAL ile giri\u015F yapmak i\xE7in QR kodu",
|
|
793
|
+
buttonContinue: "ZOREAL ile devam et"
|
|
686
794
|
},
|
|
687
795
|
// Українська
|
|
688
796
|
uk: {
|
|
689
797
|
title: "\u0421\u043A\u0430\u043D\u0443\u0439\u0442\u0435 \u0434\u043B\u044F \u0432\u0445\u043E\u0434\u0443",
|
|
798
|
+
titleIdentify: "\u0421\u043A\u0430\u043D\u0443\u0439\u0442\u0435, \u0449\u043E\u0431 \u043F\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0438 \u043E\u0441\u043E\u0431\u0443",
|
|
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",
|
|
690
800
|
titleApprove: "\u041F\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u044C\u0442\u0435 \u043D\u0430 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0456",
|
|
691
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.",
|
|
692
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.",
|
|
@@ -699,11 +809,14 @@ var TRANSLATIONS = {
|
|
|
699
809
|
noIdBody: "\u0421\u043A\u0430\u043D\u0443\u0439\u0442\u0435 \u0442\u043E\u0439 \u0441\u0430\u043C\u0438\u0439 \u043A\u043E\u0434, \u0449\u043E\u0431 \u0437\u0430\u0432\u0430\u043D\u0442\u0430\u0436\u0438\u0442\u0438 \u0434\u043E\u0434\u0430\u0442\u043E\u043A \u0456 \u0431\u0435\u0437\u043A\u043E\u0448\u0442\u043E\u0432\u043D\u043E \u0441\u0442\u0432\u043E\u0440\u0438\u0442\u0438 \u0439\u043E\u0433\u043E. \u0426\u0435 \u0437\u0430\u0439\u043C\u0435 \u043B\u0438\u0448\u0435 \u0445\u0432\u0438\u043B\u0438\u043D\u0443.",
|
|
700
810
|
cancel: "\u0421\u043A\u0430\u0441\u0443\u0432\u0430\u0442\u0438",
|
|
701
811
|
close: "\u0417\u0430\u043A\u0440\u0438\u0442\u0438",
|
|
702
|
-
qrAlt: "QR-\u043A\u043E\u0434 \u0434\u043B\u044F \u0432\u0445\u043E\u0434\u0443 \u0447\u0435\u0440\u0435\u0437 ZOREAL"
|
|
812
|
+
qrAlt: "QR-\u043A\u043E\u0434 \u0434\u043B\u044F \u0432\u0445\u043E\u0434\u0443 \u0447\u0435\u0440\u0435\u0437 ZOREAL",
|
|
813
|
+
buttonContinue: "\u041F\u0440\u043E\u0434\u043E\u0432\u0436\u0438\u0442\u0438 \u0437 ZOREAL"
|
|
703
814
|
},
|
|
704
815
|
// اردو
|
|
705
816
|
ur: {
|
|
706
817
|
title: "\u0644\u0627\u06AF \u0627\u0650\u0646 \u06A9\u0631\u0646\u06D2 \u06A9\u06D2 \u0644\u06CC\u06D2 \u0627\u0633\u06A9\u06CC\u0646 \u06A9\u0631\u06CC\u06BA",
|
|
818
|
+
titleIdentify: "\u0627\u067E\u0646\u06CC \u0634\u0646\u0627\u062E\u062A \u06A9\u06CC \u062A\u0635\u062F\u06CC\u0642 \u06A9\u06D2 \u0644\u06CC\u06D2 \u0627\u0633\u06A9\u06CC\u0646 \u06A9\u0631\u06CC\u06BA",
|
|
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",
|
|
707
820
|
titleApprove: "\u0627\u067E\u0646\u06D2 \u0641\u0648\u0646 \u067E\u0631 \u0645\u0646\u0638\u0648\u0631\u06CC \u062F\u06CC\u06BA",
|
|
708
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",
|
|
709
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",
|
|
@@ -716,11 +829,14 @@ var TRANSLATIONS = {
|
|
|
716
829
|
noIdBody: "\u0627\u06CC\u067E \u0688\u0627\u0624\u0646 \u0644\u0648\u0688 \u06A9\u0631\u0646\u06D2 \u0627\u0648\u0631 \u0645\u0641\u062A \u0645\u06CC\u06BA \u0627\u06CC\u06A9 \u0628\u0646\u0627\u0646\u06D2 \u06A9\u06D2 \u0644\u06CC\u06D2 \u0648\u06C1\u06CC \u06A9\u0648\u0688 \u0627\u0633\u06A9\u06CC\u0646 \u06A9\u0631\u06CC\u06BA\u06D4 \u0627\u0633 \u0645\u06CC\u06BA \u0635\u0631\u0641 \u0627\u06CC\u06A9 \u0645\u0646\u0679 \u0644\u06AF\u062A\u0627 \u06C1\u06D2\u06D4",
|
|
717
830
|
cancel: "\u0645\u0646\u0633\u0648\u062E \u06A9\u0631\u06CC\u06BA",
|
|
718
831
|
close: "\u0628\u0646\u062F \u06A9\u0631\u06CC\u06BA",
|
|
719
|
-
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"
|
|
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",
|
|
833
|
+
buttonContinue: "ZOREAL \u06A9\u06D2 \u0633\u0627\u062A\u06BE \u062C\u0627\u0631\u06CC \u0631\u06A9\u06BE\u06CC\u06BA"
|
|
720
834
|
},
|
|
721
835
|
// Tiếng Việt
|
|
722
836
|
vi: {
|
|
723
837
|
title: "Qu\xE9t \u0111\u1EC3 \u0111\u0103ng nh\u1EADp",
|
|
838
|
+
titleIdentify: "Qu\xE9t \u0111\u1EC3 x\xE1c minh danh t\xEDnh c\u1EE7a b\u1EA1n",
|
|
839
|
+
titlePresence: "Qu\xE9t \u0111\u1EC3 ch\u1EE9ng minh b\u1EA1n l\xE0 ng\u01B0\u1EDDi th\u1EADt",
|
|
724
840
|
titleApprove: "Ph\xEA duy\u1EC7t tr\xEAn \u0111i\u1EC7n tho\u1EA1i c\u1EE7a b\u1EA1n",
|
|
725
841
|
bodyScan: "Qu\xE9t b\u1EB1ng camera \u0111i\u1EC7n tho\u1EA1i ho\u1EB7c \u1EE9ng d\u1EE5ng ZOREAL ID.",
|
|
726
842
|
bodyApprove: "Ph\xEA duy\u1EC7t \u0111\u0103ng nh\u1EADp trong \u1EE9ng d\u1EE5ng ZOREAL ID c\u1EE7a b\u1EA1n.",
|
|
@@ -733,7 +849,8 @@ var TRANSLATIONS = {
|
|
|
733
849
|
noIdBody: "Qu\xE9t c\xF9ng m\xE3 n\xE0y \u0111\u1EC3 t\u1EA3i \u1EE9ng d\u1EE5ng v\xE0 t\u1EA1o t\xE0i kho\u1EA3n mi\u1EC5n ph\xED. Ch\u1EC9 m\u1EA5t m\u1ED9t ph\xFAt.",
|
|
734
850
|
cancel: "H\u1EE7y",
|
|
735
851
|
close: "\u0110\xF3ng",
|
|
736
|
-
qrAlt: "M\xE3 QR \u0111\u1EC3 \u0111\u0103ng nh\u1EADp b\u1EB1ng ZOREAL"
|
|
852
|
+
qrAlt: "M\xE3 QR \u0111\u1EC3 \u0111\u0103ng nh\u1EADp b\u1EB1ng ZOREAL",
|
|
853
|
+
buttonContinue: "Ti\u1EBFp t\u1EE5c v\u1EDBi ZOREAL"
|
|
737
854
|
}
|
|
738
855
|
};
|
|
739
856
|
var RTL = /* @__PURE__ */ new Set(["ar", "he", "iw", "ur"]);
|
|
@@ -807,6 +924,22 @@ function interpolate(template, time) {
|
|
|
807
924
|
return template.replace("{time}", time);
|
|
808
925
|
}
|
|
809
926
|
|
|
927
|
+
// src/intent.ts
|
|
928
|
+
var SIGN_IN_SCOPES = /* @__PURE__ */ new Set(["openid", "email", "profile.name"]);
|
|
929
|
+
function resolveIntent(intent, scope, acrValues) {
|
|
930
|
+
if (intent) return intent;
|
|
931
|
+
const scopes = (scope ?? "openid").split(/\s+/).filter(Boolean);
|
|
932
|
+
if (scopes.some((s) => !SIGN_IN_SCOPES.has(s))) return "identify";
|
|
933
|
+
const acr = typeof acrValues === "string" ? acrValues.split(/\s+/) : acrValues ?? [];
|
|
934
|
+
if (scopes.every((s) => s === "openid") && acr.includes("zoreal.live")) return "presence";
|
|
935
|
+
return "sign-in";
|
|
936
|
+
}
|
|
937
|
+
function titleFor(t, intent) {
|
|
938
|
+
if (intent === "identify") return t.titleIdentify;
|
|
939
|
+
if (intent === "presence") return t.titlePresence;
|
|
940
|
+
return t.title;
|
|
941
|
+
}
|
|
942
|
+
|
|
810
943
|
// src/styles.ts
|
|
811
944
|
var PREFIX = "zrl";
|
|
812
945
|
var cx = (name) => `${PREFIX}-${name}`;
|
|
@@ -825,8 +958,20 @@ var LIGHT = `
|
|
|
825
958
|
--zrl-accent-ink: #04698a;
|
|
826
959
|
--zrl-urgent: #b4761a;
|
|
827
960
|
--zrl-qr-bg: #ffffff;
|
|
961
|
+
--zrl-qr-filter: none;
|
|
962
|
+
--zrl-qr-spent-filter: blur(3px);
|
|
963
|
+
--zrl-qr-blend: normal;
|
|
828
964
|
--zrl-shadow: 0 1px 2px rgba(16, 18, 27, 0.06), 0 20px 50px -12px rgba(16, 18, 27, 0.3);
|
|
829
965
|
--zrl-ring: rgba(16, 18, 27, 0.07);
|
|
966
|
+
/* The light on the QR well's edge. Brand blue on both grounds, a lighter
|
|
967
|
+
tint at the head; only its strength is themed, see the dark block. */
|
|
968
|
+
--zrl-beam: #00b4d9;
|
|
969
|
+
--zrl-beam-head: #7fe0f4;
|
|
970
|
+
--zrl-beam-line: 2px;
|
|
971
|
+
--zrl-glow-core: 4px;
|
|
972
|
+
--zrl-glow-reach: 24px;
|
|
973
|
+
--zrl-glow-blur: 8px;
|
|
974
|
+
--zrl-glow-opacity: 0.6;
|
|
830
975
|
`;
|
|
831
976
|
var DARK = `
|
|
832
977
|
--zrl-scrim: rgba(0, 0, 0, 0.62);
|
|
@@ -841,12 +986,24 @@ var DARK = `
|
|
|
841
986
|
--zrl-accent-soft: #0d3b47;
|
|
842
987
|
--zrl-accent-ink: #7fdcf0;
|
|
843
988
|
--zrl-urgent: #e0a952;
|
|
844
|
-
/* The
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
--zrl-qr-bg:
|
|
989
|
+
/* The code is drawn light on the dark surface: the panel is transparent
|
|
990
|
+
and the image is inverted and screened, so only the modules and the
|
|
991
|
+
mark show. */
|
|
992
|
+
--zrl-qr-bg: transparent;
|
|
993
|
+
--zrl-qr-filter: invert(1);
|
|
994
|
+
--zrl-qr-spent-filter: invert(1) blur(3px);
|
|
995
|
+
--zrl-qr-blend: screen;
|
|
848
996
|
--zrl-shadow: 0 1px 2px rgba(0, 0, 0, 0.4), 0 20px 50px -12px rgba(0, 0, 0, 0.65);
|
|
849
997
|
--zrl-ring: rgba(255, 255, 255, 0.1);
|
|
998
|
+
/* A glow that reads on a white card disappears on a dark one: the light
|
|
999
|
+
here is brighter and wider, and its halo reaches further out. */
|
|
1000
|
+
--zrl-beam: #22c8ec;
|
|
1001
|
+
--zrl-beam-head: #c2f3fc;
|
|
1002
|
+
--zrl-beam-line: 3px;
|
|
1003
|
+
--zrl-glow-core: 6px;
|
|
1004
|
+
--zrl-glow-reach: 32px;
|
|
1005
|
+
--zrl-glow-blur: 10px;
|
|
1006
|
+
--zrl-glow-opacity: 0.85;
|
|
850
1007
|
`;
|
|
851
1008
|
var CSS = `
|
|
852
1009
|
.${PREFIX}-root { ${LIGHT} }
|
|
@@ -918,16 +1075,10 @@ var CSS = `
|
|
|
918
1075
|
border: 1px solid var(--zrl-line);
|
|
919
1076
|
border-radius: var(--zrl-radius);
|
|
920
1077
|
background: var(--zrl-qr-bg);
|
|
921
|
-
/* The light on the edge takes its shape
|
|
922
|
-
|
|
923
|
-
it at the head, no other hue. */
|
|
1078
|
+
/* The light on the edge takes its shape from here and its colour and
|
|
1079
|
+
strength from the theme tokens above. One lap in 4s on every tier. */
|
|
924
1080
|
--zrl-radius: 16px;
|
|
925
|
-
--zrl-beam: #00b4d9;
|
|
926
|
-
--zrl-beam-head: #7fe0f4;
|
|
927
|
-
--zrl-beam-size: 100px;
|
|
928
1081
|
--zrl-beam-time: 4s;
|
|
929
|
-
--zrl-glow-reach: 20px;
|
|
930
|
-
--zrl-glow-core: 3px;
|
|
931
1082
|
}
|
|
932
1083
|
|
|
933
1084
|
/* The light on the well's edge: a short comet running along the border, with
|
|
@@ -940,7 +1091,7 @@ var CSS = `
|
|
|
940
1091
|
before 120 and Safari before 15.4; the unprefixed one, declared after it,
|
|
941
1092
|
wins everywhere else.
|
|
942
1093
|
|
|
943
|
-
qr-beam keeps a
|
|
1094
|
+
qr-beam keeps a thin ring on the border line: the comet itself.
|
|
944
1095
|
qr-beam-glow is the glow: a wide band outside the well that blurs whatever
|
|
945
1096
|
is inside it, and inside it qr-beam-glow-band keeps a 3px ring with a
|
|
946
1097
|
second copy of the comet. The blur has to sit on the parent because a
|
|
@@ -955,9 +1106,9 @@ var CSS = `
|
|
|
955
1106
|
.${PREFIX}-qr-beam-glow,
|
|
956
1107
|
.${PREFIX}-qr-beam-glow-band {
|
|
957
1108
|
position: absolute;
|
|
958
|
-
inset: -
|
|
959
|
-
border:
|
|
960
|
-
border-radius: var(--zrl-radius);
|
|
1109
|
+
inset: calc(0px - var(--zrl-beam-line));
|
|
1110
|
+
border: var(--zrl-beam-line) solid transparent;
|
|
1111
|
+
border-radius: calc(var(--zrl-radius) - 1px + var(--zrl-beam-line));
|
|
961
1112
|
pointer-events: none;
|
|
962
1113
|
-webkit-mask: linear-gradient(transparent, transparent), linear-gradient(#fff, #fff);
|
|
963
1114
|
-webkit-mask-clip: padding-box, border-box;
|
|
@@ -970,8 +1121,9 @@ var CSS = `
|
|
|
970
1121
|
inset: calc(0px - var(--zrl-glow-reach));
|
|
971
1122
|
border-width: var(--zrl-glow-reach);
|
|
972
1123
|
border-radius: calc(var(--zrl-radius) - 1px + var(--zrl-glow-reach));
|
|
973
|
-
filter: blur(
|
|
974
|
-
opacity:
|
|
1124
|
+
filter: blur(var(--zrl-glow-blur));
|
|
1125
|
+
opacity: var(--zrl-glow-opacity);
|
|
1126
|
+
will-change: filter;
|
|
975
1127
|
}
|
|
976
1128
|
.${PREFIX}-qr-beam-glow-band {
|
|
977
1129
|
inset: calc(0px - var(--zrl-glow-core));
|
|
@@ -994,20 +1146,24 @@ var CSS = `
|
|
|
994
1146
|
transition: opacity 400ms cubic-bezier(0.23, 1, 0.32, 1);
|
|
995
1147
|
}
|
|
996
1148
|
|
|
997
|
-
/* The moving light
|
|
998
|
-
|
|
1149
|
+
/* The moving light: an oversized square carrying a conic sweep, rotated
|
|
1150
|
+
whole. A transform animation runs on the compositor, so the light keeps
|
|
1151
|
+
moving while the page is busy; animating the gradient angle instead
|
|
1152
|
+
repaints every frame on the main thread and stutters. */
|
|
999
1153
|
.${PREFIX}-qr-beam::after,
|
|
1000
1154
|
.${PREFIX}-qr-beam-glow-band::after {
|
|
1001
1155
|
content: '';
|
|
1002
1156
|
position: absolute;
|
|
1003
1157
|
inset: -50%;
|
|
1004
1158
|
background: conic-gradient(
|
|
1005
|
-
from
|
|
1006
|
-
transparent 0deg
|
|
1007
|
-
var(--zrl-beam)
|
|
1159
|
+
from 0deg,
|
|
1160
|
+
transparent 0deg 220deg,
|
|
1161
|
+
var(--zrl-beam) 330deg,
|
|
1162
|
+
var(--zrl-beam-head) 348deg,
|
|
1008
1163
|
transparent 356deg 360deg
|
|
1009
1164
|
);
|
|
1010
|
-
animation: ${PREFIX}-orbit
|
|
1165
|
+
animation: ${PREFIX}-orbit var(--zrl-beam-time) linear infinite;
|
|
1166
|
+
will-change: transform;
|
|
1011
1167
|
transition: opacity 400ms cubic-bezier(0.23, 1, 0.32, 1);
|
|
1012
1168
|
}
|
|
1013
1169
|
|
|
@@ -1027,6 +1183,8 @@ var CSS = `
|
|
|
1027
1183
|
width: 100%;
|
|
1028
1184
|
height: 100%;
|
|
1029
1185
|
border-radius: 8px;
|
|
1186
|
+
filter: var(--zrl-qr-filter);
|
|
1187
|
+
mix-blend-mode: var(--zrl-qr-blend);
|
|
1030
1188
|
transition: filter 300ms cubic-bezier(0.23, 1, 0.32, 1),
|
|
1031
1189
|
opacity 300ms cubic-bezier(0.23, 1, 0.32, 1),
|
|
1032
1190
|
transform 300ms cubic-bezier(0.23, 1, 0.32, 1);
|
|
@@ -1035,7 +1193,7 @@ var CSS = `
|
|
|
1035
1193
|
/* Once the code is claimed the QR is spent. Blurring it out rather than
|
|
1036
1194
|
swapping it keeps one object on screen through the state change, so the eye
|
|
1037
1195
|
reads a transformation instead of two things trading places. */
|
|
1038
|
-
.${PREFIX}-qr[data-spent="true"] { opacity: 0.2; filter:
|
|
1196
|
+
.${PREFIX}-qr[data-spent="true"] { opacity: 0.2; filter: var(--zrl-qr-spent-filter); transform: scale(0.96); }
|
|
1039
1197
|
|
|
1040
1198
|
.${PREFIX}-qr-overlay {
|
|
1041
1199
|
position: absolute;
|
|
@@ -1128,7 +1286,11 @@ var CSS = `
|
|
|
1128
1286
|
margin: 6px 0 0;
|
|
1129
1287
|
font-size: 12px;
|
|
1130
1288
|
color: var(--zrl-ink-mute);
|
|
1289
|
+
text-decoration: none;
|
|
1290
|
+
border-radius: 6px;
|
|
1291
|
+
transition: color 150ms ease-out;
|
|
1131
1292
|
}
|
|
1293
|
+
.${PREFIX}-secured:hover { color: var(--zrl-ink); }
|
|
1132
1294
|
|
|
1133
1295
|
.${PREFIX}-close {
|
|
1134
1296
|
position: absolute;
|
|
@@ -1164,53 +1326,7 @@ var CSS = `
|
|
|
1164
1326
|
70%, 100% { transform: scale(2.6); opacity: 0 }
|
|
1165
1327
|
}
|
|
1166
1328
|
|
|
1167
|
-
/* Three ways to move the light, one look at rest.
|
|
1168
|
-
Where offset-path takes a rect() (Chrome 116, Firefox 122, Safari 18) the
|
|
1169
|
-
comet rides the edge. Before that, a conic gradient turns inside the same
|
|
1170
|
-
masks instead: on a registered custom property where @property exists, and
|
|
1171
|
-
by rotating an oversized square where it does not, since an untyped custom
|
|
1172
|
-
property cannot interpolate and the light would snap once a cycle.
|
|
1173
|
-
There is no direct query for @property support. transition-behavior
|
|
1174
|
-
shipped after it in every engine (Chrome 117 vs 85, Firefox 129 vs 128,
|
|
1175
|
-
Safari 17.4 vs 16.4), so it stands in: a yes is never wrong, and a no only
|
|
1176
|
-
sends a capable browser down the transform tier, which looks the same.
|
|
1177
|
-
inherits: false so the angle stays on the element that animates it and
|
|
1178
|
-
never reaches the host page or the well. */
|
|
1179
|
-
@property --zrl-angle {
|
|
1180
|
-
syntax: '<angle>';
|
|
1181
|
-
inherits: false;
|
|
1182
|
-
initial-value: 0deg;
|
|
1183
|
-
}
|
|
1184
1329
|
@keyframes ${PREFIX}-orbit { to { transform: rotate(360deg) } }
|
|
1185
|
-
@keyframes ${PREFIX}-orbit-angle { to { --zrl-angle: 360deg } }
|
|
1186
|
-
@keyframes ${PREFIX}-beam { to { offset-distance: 100% } }
|
|
1187
|
-
@supports (transition-behavior: allow-discrete) {
|
|
1188
|
-
.${PREFIX}-qr-beam::after {
|
|
1189
|
-
inset: -1px;
|
|
1190
|
-
animation-name: ${PREFIX}-orbit-angle;
|
|
1191
|
-
}
|
|
1192
|
-
.${PREFIX}-qr-beam-glow-band::after {
|
|
1193
|
-
inset: calc(0px - var(--zrl-glow-core));
|
|
1194
|
-
animation-name: ${PREFIX}-orbit-angle;
|
|
1195
|
-
}
|
|
1196
|
-
}
|
|
1197
|
-
/* The comet: a square that rides the well's edge on a rounded-rect path, its
|
|
1198
|
-
anchor a little ahead of centre, turned to face the way it travels, and
|
|
1199
|
-
masked down to what its overlay allows. The gradient runs against the
|
|
1200
|
-
direction of travel: a light head, the blue body, nothing behind. One lap
|
|
1201
|
-
in 4s, linear: continuous motion has no ease. */
|
|
1202
|
-
@supports (offset-path: rect(0 auto auto 0)) {
|
|
1203
|
-
.${PREFIX}-qr-beam::after,
|
|
1204
|
-
.${PREFIX}-qr-beam-glow-band::after {
|
|
1205
|
-
inset: auto;
|
|
1206
|
-
width: var(--zrl-beam-size);
|
|
1207
|
-
height: var(--zrl-beam-size);
|
|
1208
|
-
background: linear-gradient(to left, var(--zrl-beam-head), var(--zrl-beam), transparent);
|
|
1209
|
-
offset-path: rect(0 auto auto 0 round calc(var(--zrl-radius) - 1px));
|
|
1210
|
-
offset-anchor: 60% 50%;
|
|
1211
|
-
animation: ${PREFIX}-beam var(--zrl-beam-time) linear infinite;
|
|
1212
|
-
}
|
|
1213
|
-
}
|
|
1214
1330
|
|
|
1215
1331
|
@media (prefers-reduced-motion: reduce) {
|
|
1216
1332
|
.${PREFIX}-scrim,
|
|
@@ -1261,7 +1377,8 @@ function PairingModal({
|
|
|
1261
1377
|
onCancel,
|
|
1262
1378
|
locale,
|
|
1263
1379
|
theme = "auto",
|
|
1264
|
-
timeoutMs = DEFAULT_PAIRING_TIMEOUT_MS
|
|
1380
|
+
timeoutMs = DEFAULT_PAIRING_TIMEOUT_MS,
|
|
1381
|
+
intent = "sign-in"
|
|
1265
1382
|
}) {
|
|
1266
1383
|
const t = strings(locale);
|
|
1267
1384
|
const titleId = useId();
|
|
@@ -1334,7 +1451,7 @@ function PairingModal({
|
|
|
1334
1451
|
/* @__PURE__ */ jsx3("button", { ref: closeRef, type: "button", className: cx("close"), "aria-label": t.close, onClick: onCancel, children: /* @__PURE__ */ jsx3(IconClose, {}) }),
|
|
1335
1452
|
/* @__PURE__ */ jsxs3("div", { className: cx("body"), children: [
|
|
1336
1453
|
/* @__PURE__ */ jsx3(ZorealLockup, { height: 44, className: cx("lockup") }),
|
|
1337
|
-
/* @__PURE__ */ jsx3("h2", { id: titleId, className: cx("title"), children: settled ? t.titleApprove : t
|
|
1454
|
+
/* @__PURE__ */ jsx3("h2", { id: titleId, className: cx("title"), children: settled ? t.titleApprove : titleFor(t, intent) }),
|
|
1338
1455
|
/* @__PURE__ */ jsx3("p", { className: cx("body-text"), children: body }),
|
|
1339
1456
|
/* @__PURE__ */ jsxs3("div", { className: cx("qr-well"), "data-spent": settled, children: [
|
|
1340
1457
|
/* @__PURE__ */ jsx3("span", { className: cx("qr-beam-glow"), "aria-hidden": true, children: /* @__PURE__ */ jsx3("span", { className: cx("qr-beam-glow-band") }) }),
|
|
@@ -1357,7 +1474,7 @@ function PairingModal({
|
|
|
1357
1474
|
] }),
|
|
1358
1475
|
/* @__PURE__ */ jsxs3("div", { className: cx("footer"), children: [
|
|
1359
1476
|
/* @__PURE__ */ jsx3("button", { type: "button", className: cx("cancel"), onClick: onCancel, children: t.cancel }),
|
|
1360
|
-
/* @__PURE__ */ jsxs3("
|
|
1477
|
+
/* @__PURE__ */ jsxs3("a", { className: cx("secured"), href: "https://zoreal.com", target: "_blank", rel: "noopener", children: [
|
|
1361
1478
|
/* @__PURE__ */ jsx3(IconShield, {}),
|
|
1362
1479
|
t.secured
|
|
1363
1480
|
] })
|
|
@@ -1398,6 +1515,7 @@ function ZorealOAuthProvider({
|
|
|
1398
1515
|
{
|
|
1399
1516
|
state: pairing.state,
|
|
1400
1517
|
qrUrl: pairing.qrUrl,
|
|
1518
|
+
intent: pairing.intent,
|
|
1401
1519
|
onCancel: pairing.cancel,
|
|
1402
1520
|
locale,
|
|
1403
1521
|
theme,
|
|
@@ -1649,6 +1767,7 @@ function useZorealFlow(options) {
|
|
|
1649
1767
|
const nonce = generateState();
|
|
1650
1768
|
const display = resolveDisplay(opts.display);
|
|
1651
1769
|
const useAppLink = display === "link";
|
|
1770
|
+
const intent = resolveIntent(opts.intent, opts.scope, opts.acr_values);
|
|
1652
1771
|
try {
|
|
1653
1772
|
const started = await startPairing(issuer, {
|
|
1654
1773
|
client_id: clientId,
|
|
@@ -1679,6 +1798,7 @@ function useZorealFlow(options) {
|
|
|
1679
1798
|
const surface = {
|
|
1680
1799
|
pairUrl: started.pair_url,
|
|
1681
1800
|
appLink: useAppLink,
|
|
1801
|
+
intent,
|
|
1682
1802
|
cancel,
|
|
1683
1803
|
// The app link has no QR and therefore no cadence to report.
|
|
1684
1804
|
...useAppLink ? null : { qrRefreshSeconds }
|
|
@@ -1694,7 +1814,7 @@ function useZorealFlow(options) {
|
|
|
1694
1814
|
};
|
|
1695
1815
|
setPairing(active);
|
|
1696
1816
|
if (!useAppLink) {
|
|
1697
|
-
publishRef.current?.({ state: active.state, qrUrl, cancel });
|
|
1817
|
+
publishRef.current?.({ state: active.state, qrUrl, intent, cancel });
|
|
1698
1818
|
}
|
|
1699
1819
|
opts.onPairingStateChange?.(active.state);
|
|
1700
1820
|
if (useAppLink) {
|
|
@@ -1710,7 +1830,7 @@ function useZorealFlow(options) {
|
|
|
1710
1830
|
(p) => p && p.requestId === started.request_id ? { ...p, qrUrl, state: enriched } : p
|
|
1711
1831
|
);
|
|
1712
1832
|
if (!useAppLink) {
|
|
1713
|
-
publishRef.current?.({ state: enriched, qrUrl, cancel });
|
|
1833
|
+
publishRef.current?.({ state: enriched, qrUrl, intent, cancel });
|
|
1714
1834
|
}
|
|
1715
1835
|
opts.onPairingStateChange?.(enriched);
|
|
1716
1836
|
},
|
|
@@ -1785,7 +1905,7 @@ function useZorealLogin(options) {
|
|
|
1785
1905
|
// src/ZorealLogin.tsx
|
|
1786
1906
|
import { jsx as jsx5, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
1787
1907
|
var TEXTS = {
|
|
1788
|
-
continue_with:
|
|
1908
|
+
continue_with: null,
|
|
1789
1909
|
signin_with: "Sign in with ZOREAL",
|
|
1790
1910
|
signup_with: "Sign up with ZOREAL",
|
|
1791
1911
|
signin: "Sign in",
|
|
@@ -1812,6 +1932,8 @@ function ZorealLogin(props) {
|
|
|
1812
1932
|
flow = "browser-direct",
|
|
1813
1933
|
...request
|
|
1814
1934
|
} = props;
|
|
1935
|
+
const { locale } = useZorealOAuth();
|
|
1936
|
+
const label = TEXTS[text] ?? strings(locale).buttonContinue;
|
|
1815
1937
|
const { login } = useZorealFlow({
|
|
1816
1938
|
...request,
|
|
1817
1939
|
flow,
|
|
@@ -1850,7 +1972,7 @@ function ZorealLogin(props) {
|
|
|
1850
1972
|
},
|
|
1851
1973
|
children: [
|
|
1852
1974
|
/* @__PURE__ */ jsx5(ZorealMark, { size: Math.round(s.font * 1.25) }),
|
|
1853
|
-
type === "standard" &&
|
|
1975
|
+
type === "standard" && label
|
|
1854
1976
|
]
|
|
1855
1977
|
}
|
|
1856
1978
|
) });
|
|
@@ -1902,6 +2024,7 @@ export {
|
|
|
1902
2024
|
ZorealOAuthProvider,
|
|
1903
2025
|
hasGrantedAllScopesZoreal,
|
|
1904
2026
|
hasGrantedAnyScopeZoreal,
|
|
2027
|
+
resolveIntent,
|
|
1905
2028
|
useZorealAutoLogin,
|
|
1906
2029
|
useZorealLogin,
|
|
1907
2030
|
useZorealOAuth,
|