@incodetech/web 2.2.0-rc.8 → 2.3.0-rc.0

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.
Files changed (296) hide show
  1. package/THIRD_PARTY_NOTICES.txt +398 -0
  2. package/dist/ae-signature/ae-signature.es.js +4 -4
  3. package/dist/af-ZA-DTqKc5t4.js +3041 -0
  4. package/dist/am-EGNy2cbo.js +3041 -0
  5. package/dist/antifraud/antifraud.es.js +4 -4
  6. package/dist/ar-AE-Cb55U6s-.js +3057 -0
  7. package/dist/ar-EG-C8ucZII6.js +3057 -0
  8. package/dist/ar-MUpu33jy.js +3057 -0
  9. package/dist/assets/dm-sans-latin-400-normal.woff2 +0 -0
  10. package/dist/assets/dm-sans-latin-500-normal.woff2 +0 -0
  11. package/dist/assets/dm-sans-latin-600-normal.woff2 +0 -0
  12. package/dist/assets/dm-sans-latin-700-normal.woff2 +0 -0
  13. package/dist/assets/rethink-sans-latin-800-normal.woff2 +0 -0
  14. package/dist/authentication/authentication.es.js +15 -11
  15. package/dist/{autoFocusTitle-DB-23sv_.js → autoFocusTitle-CIbcUW_x.js} +2 -2
  16. package/dist/az-DlXjPSya.js +3041 -0
  17. package/dist/{back-horizontal-hint-CjdigFZj.js → back-horizontal-hint-UQ7Nof6k.js} +1 -1
  18. package/dist/{back-vertical-hint-OhaKsINF.js → back-vertical-hint-Crc8ybfk.js} +1 -1
  19. package/dist/base.css +917 -283
  20. package/dist/baseTutorial-DkL0vjUa.js +172 -0
  21. package/dist/bn-BuTjJr44.js +3041 -0
  22. package/dist/bottomSheet-DtUFrIAG.js +101 -0
  23. package/dist/bs-DUzGtLhU.js +3045 -0
  24. package/dist/ca-B6SY43GQ.js +3041 -0
  25. package/dist/cameraOverlay-Dn0r4NR9.js +2 -0
  26. package/dist/cameraOverlayHeader-CsokPtuL.js +43 -0
  27. package/dist/cameraView-DrTBPNWX.js +49 -0
  28. package/dist/captureFooter-DWCaAdIU.js +67 -0
  29. package/dist/ceb-DmXy5txv.js +3041 -0
  30. package/dist/certificate-issuance/certificate-issuance.es.js +19 -14
  31. package/dist/certificate-issuance/styles.css.js +1 -0
  32. package/dist/{checkbox-FGA-Ij-D.js → checkbox-D0wfscwg.js} +9 -8
  33. package/dist/{connectionError-BurQq_4R.js → connectionError-B61O7L3N.js} +4 -4
  34. package/dist/consent/consent.es.js +26 -33
  35. package/dist/consent/styles.css +4 -4
  36. package/dist/consent/styles.css.js +1 -0
  37. package/dist/countries-5e8kwG_m.js +8560 -0
  38. package/dist/{countrySelector-COZ7XQHp.js → countrySelector-C60Cdc5P.js} +8 -10
  39. package/dist/cross-document-data-match/cross-document-data-match.es.js +4 -4
  40. package/dist/cs-CZ-Gn3ZmW27.js +3049 -0
  41. package/dist/cs-dsQ7umNS.js +3049 -0
  42. package/dist/curp-validation/curp-validation.es.js +15 -22
  43. package/dist/curp-validation/styles.css.js +1 -0
  44. package/dist/custom-fields/styles.css.js +1 -0
  45. package/dist/{customFields-rVMTo1Yu.js → customFields-BdnLB6L1.js} +44 -19
  46. package/dist/{customWatchlist-DgpXtVRf.js → customWatchlist-DzeHJAa3.js} +14 -11
  47. package/dist/da-DK-CFQaOERk.js +3041 -0
  48. package/dist/{dashboardTheme-BUDq5UYs.js → dashboardTheme-BwKtcRSO.js} +31 -7
  49. package/dist/{dateInputComposed-DSgV0wnb.js → dateInputComposed-BcmKKwRL.js} +5 -5
  50. package/dist/dateInputComposed-DPM6l_SL.js +1 -0
  51. package/dist/de-BqG02U9o.js +3041 -0
  52. package/dist/document-capture/document-capture.es.js +1 -1
  53. package/dist/document-capture/styles.css +4 -4
  54. package/dist/document-capture/styles.css.js +1 -0
  55. package/dist/{documentCapture-sZj09g0I.js → documentCapture-CoMsW_gC.js} +16 -17
  56. package/dist/documentCapture-DMxz9eqT.js +2 -0
  57. package/dist/dropdownComposed-CXwC9j18.js +1 -0
  58. package/dist/{dropdownComposed-CEegNzG4.js → dropdownComposed-DYdI3B4r.js} +9 -9
  59. package/dist/{dynamicForms-t3vepXqJ.js → dynamic-forms/dynamic-forms.es.js} +24 -19
  60. package/dist/dynamic-forms/styles.css +5 -0
  61. package/dist/dynamic-forms/styles.css.js +1 -0
  62. package/dist/ekyb/ekyb.es.js +1 -1
  63. package/dist/ekyb/styles.css +15 -13
  64. package/dist/ekyb/styles.css.js +1 -0
  65. package/dist/{ekybModule-Dvkf5WAr.js → ekybModule-BRh9D01p.js} +17 -30
  66. package/dist/ekybModule-C5NPsc0F.js +2 -0
  67. package/dist/ekyc/ekyc.es.js +1 -1
  68. package/dist/ekyc/styles.css +17 -16
  69. package/dist/ekyc/styles.css.js +1 -0
  70. package/dist/{ekycModule-C5QXVGP7.js → ekycModule-Da6Bl3jg.js} +14 -29
  71. package/dist/ekycModule-DwKPvgA8.js +2 -0
  72. package/dist/el-BP_RmMeB.js +3041 -0
  73. package/dist/el-GR-9I2fVd-W.js +3041 -0
  74. package/dist/electronic-signature/electronic-signature.es.js +1 -1
  75. package/dist/electronic-signature/styles.css +62 -2
  76. package/dist/electronic-signature/styles.css.js +1 -0
  77. package/dist/{electronic-signature-CyE8F7LZ.js → electronic-signature-KFF7qbid.js} +65 -18
  78. package/dist/email/email.es.js +9 -8
  79. package/dist/email/styles.css.js +1 -0
  80. package/dist/{emailInput-CsT8_C01.js → emailInput-B_qAEKBC.js} +4 -4
  81. package/dist/en-DG-poeSJZ7W.js +3041 -0
  82. package/dist/en-DnIfMNS1.js +3041 -0
  83. package/dist/errorContent-CMNfCIo_.js +58 -0
  84. package/dist/es-2x55EFTs.js +3041 -0
  85. package/dist/es-419-DgAnO5DV.js +3041 -0
  86. package/dist/es-ES-BSnroYMU.js +3041 -0
  87. package/dist/es-MX-CfztSSs4.js +3041 -0
  88. package/dist/et-CPoI8fYI.js +3041 -0
  89. package/dist/{expiredId-BQ1uPh7b.js → expiredId-DJYL_--M.js} +22 -27
  90. package/dist/extensibility.es.js +701 -24
  91. package/dist/fa-IR-CVf6F8GG.js +3041 -0
  92. package/dist/face-match/face-match.es.js +1 -1
  93. package/dist/face-match/styles.css +76 -40
  94. package/dist/face-match/styles.css.js +1 -0
  95. package/dist/{faceMatch-Rf-MMdto.js → faceMatch-CwoYbKBB.js} +7 -8
  96. package/dist/faceMatch-DCkrehin.js +2 -0
  97. package/dist/fi-FI-A4oUFztt.js +3041 -0
  98. package/dist/field-comparison/field-comparison.es.js +1 -1
  99. package/dist/field-comparison/styles.css +12 -0
  100. package/dist/field-comparison/styles.css.js +1 -0
  101. package/dist/{fieldComparison-BnGj3nNp.js → fieldComparison-D2WI5cYb.js} +27 -11
  102. package/dist/fieldComparison-OwqIkMRe.js +2 -0
  103. package/dist/fieldLabelHint-CxjArYkQ.js +16 -0
  104. package/dist/{finalSuccessScreen-B9uB3bST.js → finalSuccessScreen-BtJ5o2pi.js} +13 -14
  105. package/dist/fiscal-qr/fiscal-qr.es.js +22 -9
  106. package/dist/fiscal-qr/styles.css +13 -1
  107. package/dist/fiscal-qr/styles.css.js +1 -0
  108. package/dist/{extensibility-C5XqL_A3.js → flipAnimation-Bb5FQVF-.js} +608 -1005
  109. package/dist/flow/flow.es.js +308 -62
  110. package/dist/flow/shell/styles.css +402 -0
  111. package/dist/flow/shell/styles.css.js +1 -0
  112. package/dist/flow/styles.css +582 -312
  113. package/dist/formField-CBwWQ7wD.js +60 -0
  114. package/dist/fr-CA-CI4CD8PC.js +3045 -0
  115. package/dist/fr-ON88Zj-c.js +3045 -0
  116. package/dist/{front-horizontal-hint-Bhz1rq-w.js → front-horizontal-hint-mgovnJf3.js} +1 -1
  117. package/dist/{front-vertical-hint-C4FC1ksx.js → front-vertical-hint-qXMVdLri.js} +1 -1
  118. package/dist/geolocation/geolocation.es.js +9 -9
  119. package/dist/geolocation/styles.css +4 -4
  120. package/dist/geolocation/styles.css.js +1 -0
  121. package/dist/government-validation/government-validation.es.js +38 -86
  122. package/dist/government-validation/styles.css +2 -38
  123. package/dist/government-validation/styles.css.js +1 -0
  124. package/dist/he-pbmbYdr4.js +3049 -0
  125. package/dist/hi-DUIfQ6FS.js +3041 -0
  126. package/dist/hmn-DL-aQCTc.js +3041 -0
  127. package/dist/{homeScreen-Bv9mUUOF.js → homeScreen-vLMuzGDq.js} +8 -7
  128. package/dist/hr-DfJZSVnR.js +3045 -0
  129. package/dist/ht-DkZi3f0t.js +3041 -0
  130. package/dist/hu-ClhgOpVy.js +3041 -0
  131. package/dist/{icons-ChHV5iHi.js → icons-eIgP34nj.js} +99 -11
  132. package/dist/id/id.es.js +575 -62
  133. package/dist/id/styles.css +114 -45
  134. package/dist/id/styles.css.js +1 -0
  135. package/dist/id-DzyWelEE.js +3035 -0
  136. package/dist/{id-back-of-card-C4XViC7W.js → id-back-of-card-B6EcmiCs.js} +1 -1
  137. package/dist/{id-back-of-card-vertical-DCz0rj8m.js → id-back-of-card-vertical-B3FXhPpj.js} +1 -1
  138. package/dist/{id-front-of-card-CUA1ocVF.js → id-front-of-card-V_BlLaZr.js} +1 -1
  139. package/dist/{id-front-of-card-vertical-Ddm_BwD3.js → id-front-of-card-vertical-CuZjL8kc.js} +1 -1
  140. package/dist/id-ocr/styles.css.js +1 -0
  141. package/dist/id-selfie-flow/id-selfie-flow.es.js +10 -9
  142. package/dist/id-selfie-flow/styles.css +40 -8
  143. package/dist/id-verification/id-verification.es.js +5 -5
  144. package/dist/{idOcr-Da1-2sWY.js → idOcr-C5R3RWuL.js} +13 -16
  145. package/dist/identity-reuse/identity-reuse.es.js +8 -113
  146. package/dist/identity-reuse/styles.css +1 -1
  147. package/dist/{incode-logo-DeIDDejm.js → incode-logo-BzJOZr3f.js} +1 -64
  148. package/dist/{incodeComponent-BtFz-bx2.js → incodeComponent-D3_BSWan.js} +192 -22
  149. package/dist/{incodeModule-9K8KUs61.js → incodeModule-BQgvYKyr.js} +3 -3
  150. package/dist/index.es.js +4 -3
  151. package/dist/{inputComposed-C2zTEXsp.js → inputComposed-CTZnsHLi.js} +9 -9
  152. package/dist/inputComposed-wy0-orhJ.js +1 -0
  153. package/dist/it-D_u7w6N4.js +3041 -0
  154. package/dist/ja-Drh4oAoU.js +3035 -0
  155. package/dist/ja-JP-Pdxq82Pi.js +3035 -0
  156. package/dist/jv-DFcKF0Jp.js +3035 -0
  157. package/dist/ka--2y3Ae63.js +3041 -0
  158. package/dist/kk-CAs7inco.js +3041 -0
  159. package/dist/km-BlxkLYfw.js +3035 -0
  160. package/dist/ko-B1XhW0dx.js +3035 -0
  161. package/dist/ko-KP-DO1TCCY3.js +3035 -0
  162. package/dist/ky-BN92RThU.js +3041 -0
  163. package/dist/lo-DPUo8xJT.js +3035 -0
  164. package/dist/lt-CYBwI4Sq.js +3049 -0
  165. package/dist/lv-eBlwWu05.js +3045 -0
  166. package/dist/{mandatoryConsent-CxShVycM.js → mandatoryConsent-D96_9XTp.js} +10 -7
  167. package/dist/manualCaptureButton-C9H2_SJS.js +63 -0
  168. package/dist/{manualCaptureButton-DzJFIEfu.js → manualCaptureButton-igyQk3Yb.js} +10 -55
  169. package/dist/mk-QMUTND8Y.js +3041 -0
  170. package/dist/mn-CCTUOA1D.js +3041 -0
  171. package/dist/{modal-BH2wi8Q0.js → modal-CmF_MYIK.js} +7 -6
  172. package/dist/{modal.hooks-DcakflQ4.js → modal.hooks-B0Wrc9s2.js} +7 -1
  173. package/dist/ms-BKJgaJfx.js +3035 -0
  174. package/dist/my-DyLbN8b0.js +3035 -0
  175. package/dist/nb-NO-TVHxhuqB.js +3041 -0
  176. package/dist/ne-gBLZraiK.js +3041 -0
  177. package/dist/nl-CrO6Mvej.js +3041 -0
  178. package/dist/{numberedStep-DqtXyT11.js → numberedStep-DYznpDKc.js} +1 -1
  179. package/dist/{optionAccessibleLabel-C5iZCrlq.js → optionAccessibleLabel-CqBUOBxK.js} +6 -6
  180. package/dist/{otpInput-CvPR3ZpP.js → otpInput-tEovwPs7.js} +8 -83
  181. package/dist/{passport-horizontal-hint-DzkhjC8Q.js → passport-horizontal-hint-6Ghn2EEN.js} +1 -1
  182. package/dist/{passport-vertical-hint-Bd0BQn2Y.js → passport-vertical-hint-UPFFpdf4.js} +1 -1
  183. package/dist/passwordInputComposed-DNlYgHHW.js +74 -0
  184. package/dist/{pdf-BUoY_2gv.js → pdf-CFubyG0B.js} +1 -1
  185. package/dist/{pdfViewer-TTZmPABh.js → pdfViewer-4u14PDPr.js} +4 -4
  186. package/dist/pdfViewer-e2o97yIv.js +2 -0
  187. package/dist/{manualCaptureButton-D58WsS-x.js → permissions-DowRodJj.js} +200 -105
  188. package/dist/phone/phone.es.js +10 -9
  189. package/dist/phone/styles.css +1 -1
  190. package/dist/phone/styles.css.js +1 -0
  191. package/dist/{phoneInputComposed-byyszNoS.js → phoneInputComposed-B6sv-uB2.js} +20 -8412
  192. package/dist/pl-Bde7cCcc.js +3049 -0
  193. package/dist/{processing-B2eaSGLu.js → processing-s6GfNwuL.js} +2 -2
  194. package/dist/pt-BR-DFr2fPNi.js +3041 -0
  195. package/dist/pt-DhDCeOLY.js +3041 -0
  196. package/dist/pt-PT-CpiPMuNf.js +3041 -0
  197. package/dist/qe-signature/qe-signature.es.js +4 -4
  198. package/dist/radioGroupComposed-CJkzLiFc.js +1 -0
  199. package/dist/{radioGroupComposed-DQzTWutW.js → radioGroupComposed-DmoMukus.js} +15 -71
  200. package/dist/redirect-to-mobile/redirect-to-mobile.es.js +34 -178
  201. package/dist/redirect-to-mobile/styles.css +2 -27
  202. package/dist/redirect-to-mobile/styles.css.js +1 -0
  203. package/dist/{registerIncodeElement-DW2PE_DX.js → registerIncodeElement-CbZczi4S.js} +1 -1
  204. package/dist/resendTimer-Cskll9rx.js +79 -0
  205. package/dist/{useModuleLoader-DxOEZ0vn.js → resolveApiKey-CB1_7ISm.js} +70 -222
  206. package/dist/{richText-CEwM8jib.js → richText-C8-Ny2SD.js} +9 -9
  207. package/dist/ro-B_ITJxYh.js +3045 -0
  208. package/dist/ru-Cg4U-rYv.js +3049 -0
  209. package/dist/ru-RU-fR_tbAfz.js +3049 -0
  210. package/dist/selfie/selfie.es.js +184 -8
  211. package/dist/selfie/styles.css +225 -36
  212. package/dist/selfie/styles.css.js +1 -0
  213. package/dist/signature/signature.es.js +8 -9
  214. package/dist/signature/styles.css.js +1 -0
  215. package/dist/sk-DbraxlnX.js +3049 -0
  216. package/dist/sl-DXgvmUsz.js +3049 -0
  217. package/dist/smsTabContent-Dado9q8t.js +172 -0
  218. package/dist/so-HI13bXme.js +3041 -0
  219. package/dist/{spacer-DLEDuWEx.js → spacer-ayyj5lMa.js} +10 -10
  220. package/dist/spinner-Z-5sEEDQ.js +88 -0
  221. package/dist/sr-DAb2JkvB.js +3045 -0
  222. package/dist/sr-Latn-DzSc6KyA.js +3045 -0
  223. package/dist/sr-YU-C9HskKa8.js +3045 -0
  224. package/dist/{statusPage-BF4qGjF3.js → statusPage-Bqz3Ci4f.js} +4 -4
  225. package/dist/sv-SE-B3X2fvQj.js +3041 -0
  226. package/dist/sw-BVL9Boua.js +3041 -0
  227. package/dist/{tabs-BGL1oRLb.js → tabs-B-ERCzA4.js} +2 -2
  228. package/dist/th-Cq87oDI8.js +3035 -0
  229. package/dist/th-TH-CY5gd6Bd.js +3035 -0
  230. package/dist/themes/dark.css +125 -0
  231. package/dist/themes/light.css +124 -0
  232. package/dist/tl-DUm9tRZ_.js +3041 -0
  233. package/dist/tl-PH-CNYNkY1M.js +3041 -0
  234. package/dist/tr-Cg3WJqb6.js +3041 -0
  235. package/dist/{tutorial-LQuJ4dse.js → tutorial-CHNfV-I3.js} +40 -226
  236. package/dist/types/certificate-issuance.d.ts +4 -4
  237. package/dist/types/dynamic-forms.d.ts +177 -0
  238. package/dist/types/extensibility.d.ts +75 -23
  239. package/dist/types/flow.d.ts +37 -0
  240. package/dist/types/government-validation.d.ts +2 -1
  241. package/dist/types/index.d.ts +28 -4
  242. package/dist/types/video-selfie.d.ts +6 -161
  243. package/dist/typography-ikD4-Z8S.js +53 -0
  244. package/dist/{uiConfig-Dqnjankd.js → uiConfig-C1jdTj-i.js} +184 -8
  245. package/dist/uk-C7hhE-77.js +3049 -0
  246. package/dist/uk-UA-DRsynQ5S.js +3049 -0
  247. package/dist/ur-BEX50SCe.js +3041 -0
  248. package/dist/useCoverMedia-VLw3OYN_.js +149 -0
  249. package/dist/useModuleLoader-DpcbSKBH.js +176 -0
  250. package/dist/uz-BYlUXaIK.js +3041 -0
  251. package/dist/{vendor-preact-BPXMFRom.js → vendor-preact-C0jX1Cbq.js} +68 -181
  252. package/dist/{verificationResult-q_zD_Pxh.js → verificationResult-B26DDXFT.js} +32 -25
  253. package/dist/vi-DddAM-WF.js +3035 -0
  254. package/dist/video-selfie/styles.css +51 -17
  255. package/dist/video-selfie/styles.css.js +1 -0
  256. package/dist/video-selfie/video-selfie.es.js +35 -23
  257. package/dist/watchlist/watchlist.es.js +7 -7
  258. package/dist/watchlist-for-business/styles.css.js +1 -0
  259. package/dist/{watchlistForBusiness-C_zqdY4P.js → watchlistForBusiness-o4F6Czxp.js} +28 -16
  260. package/dist/workflow/styles.css +1073 -356
  261. package/dist/workflow/workflow.es.js +17 -15
  262. package/dist/zh-CN-B8y9prPe.js +3035 -0
  263. package/dist/zh-HANT-ChrXbHBA.js +3035 -0
  264. package/dist/zh-TW-DrkMIR_e.js +3035 -0
  265. package/dist/zh-aG_wPYUs.js +3035 -0
  266. package/package.json +32 -22
  267. package/dist/bottomSheet-BWEUBq8m.js +0 -38
  268. package/dist/dateInputComposed-BGC37jC7.js +0 -1
  269. package/dist/documentCapture-CO9kIxru.js +0 -2
  270. package/dist/dropdownComposed-Bf4EcKFw.js +0 -1
  271. package/dist/ekybModule-uN0ComAn.js +0 -2
  272. package/dist/ekycModule-B7KRJ7l3.js +0 -2
  273. package/dist/faceMatch-DjD2hgBp.js +0 -2
  274. package/dist/fieldComparison-DFH4hUM_.js +0 -2
  275. package/dist/inputComposed-kKtrvJU5.js +0 -1
  276. package/dist/pdfViewer-C1B-07Wu.js +0 -2
  277. package/dist/requiredLabelHint-Dx0WS2cR.js +0 -17
  278. package/dist/snackbar-eBOj46AK.js +0 -16
  279. package/dist/spinner-CJCOHUKx.js +0 -95
  280. package/dist/successIcon-DS8BLsgy.js +0 -30
  281. package/dist/types/dynamic-forms/styles.d.ts +0 -1
  282. /package/dist/{aligndevicelottie-CfoZ5Uus.js → aligndevicelottie-B12hbVhG.js} +0 -0
  283. /package/dist/{back-tutorial-BHyRHyET.js → back-tutorial-XdmQ0Wml.js} +0 -0
  284. /package/dist/{backdevicelottie-yKkczgFy.js → backdevicelottie-m_DOD8xE.js} +0 -0
  285. /package/dist/{blurdevicelottie-8BbophdM.js → blurdevicelottie-DQo_hTMD.js} +0 -0
  286. /package/dist/{browser-ponyfill-CBjGwwPW.js → browser-ponyfill-ZkeBm4ji.js} +0 -0
  287. /package/dist/{defineProperty-BbpBna-2.js → defineProperty-BojnCa44.js} +0 -0
  288. /package/dist/{flip-animation-CvN8FLNc.js → flip-animation-VicedlT5.js} +0 -0
  289. /package/dist/{frontdevicelottie-CFcahVLk.js → frontdevicelottie-CyIerlMv.js} +0 -0
  290. /package/dist/{glaredevicelottie-Cnvah0kz.js → glaredevicelottie-QM2C6Ivp.js} +0 -0
  291. /package/dist/{id-laser-h-BaUHzX-d.js → id-laser-h-B0-iXcvl.js} +0 -0
  292. /package/dist/{id-laser-v-Dv9yEYJE.js → id-laser-v-Bqh6vimi.js} +0 -0
  293. /package/dist/{id-tutorial-BOOsXlAJ.js → id-tutorial-IhmAzrIF.js} +0 -0
  294. /package/dist/{lottie_light-Bv56F2Ae.js → lottie_light-CzZ3CHBk.js} +0 -0
  295. /package/dist/{passport-tutorial-CeSup6m9.js → passport-tutorial-61vlloJS.js} +0 -0
  296. /package/dist/{selfieTutorial-CYa8bq6B.js → selfieTutorial-BRQ2QNxQ.js} +0 -0
package/dist/id/id.es.js CHANGED
@@ -1,22 +1,26 @@
1
- import { a as useTranslation } from "../uiConfig-Dqnjankd.js";
2
- import { C as k, c as z, d as T, l as A, o as P, p as d, v as y, y as u } from "../vendor-preact-BPXMFRom.js";
3
- import { b as useManager, f as useTimeoutHandle, l as TransitionSpinner, o as Page, r as withStandaloneModuleBootstrap, t as IncodeComponent, u as useFeatureManagement, v as useModuleTerminalCallbacks } from "../incodeComponent-BtFz-bx2.js";
4
- import { d as cn, i as preloadAnimations, r as AnimatedAsset, s as Asset, t as Spacer } from "../spacer-DLEDuWEx.js";
5
- import { n as Title, t as Spinner } from "../spinner-CJCOHUKx.js";
6
- import { n as ErrorIcon, r as Button } from "../incode-logo-DeIDDejm.js";
7
- import { a as IdNoAttempts, b as ProgressBar, c as useIdExperiment, i as Capture, l as CaptureFrame, n as Chooser, o as IdExpired, r as Tutorial, s as IdError, t as FlipAnimation } from "../extensibility-C5XqL_A3.js";
8
- import { t as Processing } from "../processing-B2eaSGLu.js";
9
- import { r as LockIcon, u as ChevronRightIcon } from "../icons-ChHV5iHi.js";
10
- import { t as SuccessIcon } from "../successIcon-DS8BLsgy.js";
11
- import { i as ErrorContent } from "../tutorial-LQuJ4dse.js";
12
- import { n as Permissions } from "../manualCaptureButton-D58WsS-x.js";
13
- import { t as PdfViewer } from "../pdfViewer-TTZmPABh.js";
14
- import { t as registerIncodeModuleElement } from "../incodeModule-9K8KUs61.js";
15
- import { t as SvgIdBackOfCard } from "../id-back-of-card-C4XViC7W.js";
16
- import { t as SvgIdBackOfCardVertical } from "../id-back-of-card-vertical-DCz0rj8m.js";
17
- import { t as SvgIdFrontOfCard } from "../id-front-of-card-CUA1ocVF.js";
18
- import { t as SvgIdFrontOfCardVertical } from "../id-front-of-card-vertical-Ddm_BwD3.js";
19
- import { t as Tabs } from "../tabs-BGL1oRLb.js";
1
+ import { o as useTranslation } from "../uiConfig-C1jdTj-i.js";
2
+ import { S as k, _ as y, a as P, c as A, f as d, h as q, s as z, u as T, v as u } from "../vendor-preact-C0jX1Cbq.js";
3
+ import { S as useManager, _ as useIsMobileDeviceWidth, b as useModuleTerminalCallbacks, c as Page, d as TransitionSpinner, f as useFeatureManagement, i as withStandaloneModuleBootstrap, l as VerifiedByIncodeLogo, m as useTimeoutHandle, o as useHasResolvedConfig, t as IncodeComponent } from "../incodeComponent-D3_BSWan.js";
4
+ import { d as cn, i as preloadAnimations, r as AnimatedAsset, s as Asset, t as Spacer } from "../spacer-ayyj5lMa.js";
5
+ import { o as TypographyP, t as Title } from "../typography-ikD4-Z8S.js";
6
+ import { t as Spinner } from "../spinner-Z-5sEEDQ.js";
7
+ import { a as LockIcon, b as ErrorIcon, f as ChevronRightIcon, r as SuccessIcon, x as Button } from "../icons-eIgP34nj.js";
8
+ import { t as AutoFocusTitle } from "../autoFocusTitle-CIbcUW_x.js";
9
+ import { t as Processing } from "../processing-s6GfNwuL.js";
10
+ import { t as Modal } from "../modal-CmF_MYIK.js";
11
+ import { t as ErrorContent } from "../errorContent-CMNfCIo_.js";
12
+ import { t as VerificationResult } from "../verificationResult-B26DDXFT.js";
13
+ import { n as ProgressBar } from "../captureFooter-DWCaAdIU.js";
14
+ import { a as IdNoAttempts, c as canFlipCapturedCard, d as CAMERA_PERMISSION_UX, f as CONTINUING_TUTORIAL_PHASES, g as PERMISSION_DIALOG_STATUS, h as ID_CAPTURE_STATUS, i as Capture, l as CaptureFrame, m as ID_CAPTURE_LOADING_PHASE, n as Chooser, o as IdExpired, p as EXPERIMENT_LIFECYCLE_STATUS, r as Tutorial, s as IdError, t as FlipAnimation, u as useIdExperiment } from "../flipAnimation-Bb5FQVF-.js";
15
+ import { t as BottomSheet } from "../bottomSheet-DtUFrIAG.js";
16
+ import { a as SvgReloadIcon, i as SvgPersonCardIcon, n as PermissionsDialog, r as SvgCheckV2Icon, t as Permissions } from "../permissions-DowRodJj.js";
17
+ import { t as PdfViewer } from "../pdfViewer-4u14PDPr.js";
18
+ import { t as registerIncodeModuleElement } from "../incodeModule-BQgvYKyr.js";
19
+ import { t as SvgIdBackOfCard } from "../id-back-of-card-B6EcmiCs.js";
20
+ import { t as SvgIdBackOfCardVertical } from "../id-back-of-card-vertical-B3FXhPpj.js";
21
+ import { t as SvgIdFrontOfCard } from "../id-front-of-card-V_BlLaZr.js";
22
+ import { t as SvgIdFrontOfCardVertical } from "../id-front-of-card-vertical-CuZjL8kc.js";
23
+ import { t as Tabs } from "../tabs-B-ERCzA4.js";
20
24
  import { ONBOARDING_WEB_SDK_PARAMETER_STORE } from "@incodetech/core/feature-management";
21
25
  import { createIdCaptureManager } from "@incodetech/core/id";
22
26
  //#region src/shared/fonts/preloadDisplayFont.ts
@@ -228,10 +232,13 @@ var IdFlipCard = ({ manager, direction, imageUrl, orientation }) => {
228
232
  * captured photo; control (or passport) keeps `FlipAnimation`.
229
233
  */
230
234
  var IdFlipTransition = ({ manager, state }) => {
231
- const { params } = useIdExperiment({ key: "flipCapturedCard" });
235
+ const { params } = useIdExperiment({
236
+ key: "flipCapturedCard",
237
+ enabled: canFlipCapturedCard(state.mode, state.previewImageUrl)
238
+ });
232
239
  const shouldFlipCapturedCard = params.shouldFlipCapturedCard;
233
240
  const direction = state.status === "frontFinished" ? "toBack" : "toFront";
234
- if (shouldFlipCapturedCard && state.mode !== "passport" && state.previewImageUrl) return /* @__PURE__ */ u(IdFlipCard, {
241
+ if (shouldFlipCapturedCard) return /* @__PURE__ */ u(IdFlipCard, {
235
242
  manager,
236
243
  direction,
237
244
  imageUrl: state.previewImageUrl,
@@ -336,7 +343,7 @@ var KEY_BY_FAIL_REASON = {
336
343
  NETWORK_ERROR: "idv2.digitalIdUpload.unknownDocumentTypeScreen.errorTitle",
337
344
  GENERIC: "idv2.digitalIdUpload.unknownDocumentTypeScreen.errorTitle"
338
345
  };
339
- var ErrorScreen = ({ manager, state }) => {
346
+ var ErrorScreen$1 = ({ manager, state }) => {
340
347
  const { t } = useTranslation();
341
348
  const failReason = state.failReason ?? "GENERIC";
342
349
  const isTerminal = state.phase === "exhausted" || TERMINAL_REASONS.has(failReason);
@@ -682,7 +689,7 @@ var FileTooLargeScreen = ({ manager }) => {
682
689
  };
683
690
  //#endregion
684
691
  //#region src/modules/id/digitalIdUpload/successScreen.tsx
685
- var SuccessScreen = ({ manager, state }) => {
692
+ var SuccessScreen$1 = ({ manager, state }) => {
686
693
  const { t } = useTranslation();
687
694
  const fileUrl = useFilePreviewUrl(state.file);
688
695
  return /* @__PURE__ */ u(Page, {
@@ -763,18 +770,206 @@ var DigitalIdUpload = ({ manager, state }) => {
763
770
  state
764
771
  });
765
772
  if (state.phase === "uploading" || state.phase === "holding") return /* @__PURE__ */ u(AnalyzingScreen, { state });
766
- if (state.phase === "success") return /* @__PURE__ */ u(SuccessScreen, {
773
+ if (state.phase === "success") return /* @__PURE__ */ u(SuccessScreen$1, {
767
774
  manager,
768
775
  state
769
776
  });
770
777
  if (state.phase === "fileTooLarge") return /* @__PURE__ */ u(FileTooLargeScreen, { manager });
771
- if (state.phase === "error" || state.phase === "exhausted") return /* @__PURE__ */ u(ErrorScreen, {
778
+ if (state.phase === "error" || state.phase === "exhausted") return /* @__PURE__ */ u(ErrorScreen$1, {
772
779
  manager,
773
780
  state
774
781
  });
775
782
  return null;
776
783
  };
777
784
  //#endregion
785
+ //#region src/modules/id/deviceWallet/errorScreen.tsx
786
+ /**
787
+ * Failure screen for the device-wallet (mDL) handshake. Renders the shared
788
+ * `VerificationResult` (same look as the digital-ID redirect failure screen)
789
+ * with per-reason copy. Keys are static literals so i18nexus can extract them
790
+ * (author EN + supported locales in i18nexus); the subtitle keys match the
791
+ * core `DEVICE_WALLET_ERROR_KEYS` map, kept local here — like
792
+ * `digitalIdRedirect/failureScreen.tsx` — to avoid a runtime value import
793
+ * from `@incodetech/core`. Failure is non-blocking: retry restarts the
794
+ * handshake, or fall back to the ID-Capture chooser.
795
+ */
796
+ var COPY_KEYS$1 = {
797
+ UNSUPPORTED_PLATFORM: {
798
+ title: "idv2.deviceWallet.unsupportedPlatformTitle",
799
+ subtitle: "idv2.deviceWallet.unsupportedPlatformDescription"
800
+ },
801
+ NO_CREDENTIAL: {
802
+ title: "idv2.deviceWallet.noCredentialTitle",
803
+ subtitle: "idv2.deviceWallet.noCredentialDescription"
804
+ },
805
+ WALLET_ERROR: {
806
+ title: "idv2.deviceWallet.errorTitle",
807
+ subtitle: "idv2.deviceWallet.errorDescription"
808
+ }
809
+ };
810
+ var GENERIC_KEYS$1 = {
811
+ title: "idv2.deviceWallet.errorTitle",
812
+ subtitle: "idv2.deviceWallet.errorDescription"
813
+ };
814
+ var ErrorScreen = ({ failReason, onRetry, onUseAnotherMethod }) => {
815
+ const { t } = useTranslation();
816
+ const { title, subtitle } = failReason ? COPY_KEYS$1[failReason] : GENERIC_KEYS$1;
817
+ const canRetry = failReason !== "UNSUPPORTED_PLATFORM";
818
+ return /* @__PURE__ */ u(VerificationResult, {
819
+ status: "failure",
820
+ failureTitle: t(title),
821
+ errorMessage: t(subtitle),
822
+ onRetry: canRetry ? onRetry : void 0,
823
+ retryLabel: t("common.tryAgain"),
824
+ onSkip: onUseAnotherMethod,
825
+ skipLabel: t("idv2.deviceWallet.useAnotherMethodButton")
826
+ });
827
+ };
828
+ //#endregion
829
+ //#region src/modules/id/deviceWallet/deviceWallet.tsx
830
+ /**
831
+ * Device-wallet (mDL) handshake rendered INSIDE ID-Capture as a child machine
832
+ * — mirrors `digitalIdRedirect/digitalIdRedirect.tsx`. The core child owns
833
+ * request → wallet sheet → decrypt; this layer only renders the phase. During
834
+ * `presenting` the OS wallet sheet covers the page, so a spinner is all the
835
+ * page itself needs.
836
+ */
837
+ var DeviceWallet = ({ manager, state }) => {
838
+ if (state.phase === "failed") return /* @__PURE__ */ u(ErrorScreen, {
839
+ failReason: state.failReason,
840
+ onRetry: () => manager.deviceWalletRetry(),
841
+ onUseAnotherMethod: () => manager.deviceWalletUseAnotherMethod()
842
+ });
843
+ return /* @__PURE__ */ u(TransitionSpinner, { hideText: true });
844
+ };
845
+ //#endregion
846
+ //#region src/modules/id/digitalIdRedirect/failureScreen.tsx
847
+ /**
848
+ * Failure screen for the digital-ID web-redirect (Trinsic iDIN/FTN). Renders the
849
+ * shared `VerificationResult` (same look as ekyc/ekyb) with the module's own
850
+ * per-reason copy. Copy is i18nexus-keyed under
851
+ * `idv2.digitalIdRedirect.failureScreen.*` (add EN, plus NL for iDIN and FI/SV
852
+ * for FTN, in i18nexus). Failure is non-blocking: retry (new session/billing
853
+ * event) or use another method (back to the ID-Capture chooser).
854
+ *
855
+ * The nine `failureReason`s collapse into six copy groups; keys are written as
856
+ * static literals so i18nexus can extract them. A translator can split a group
857
+ * into per-reason copy later without a code change.
858
+ */
859
+ var COPY_KEYS = {
860
+ USER_CANCELED: {
861
+ title: "idv2.digitalIdRedirect.failureScreen.canceled.title",
862
+ subtitle: "idv2.digitalIdRedirect.failureScreen.canceled.subtitle"
863
+ },
864
+ RP_CANCELED: {
865
+ title: "idv2.digitalIdRedirect.failureScreen.canceled.title",
866
+ subtitle: "idv2.digitalIdRedirect.failureScreen.canceled.subtitle"
867
+ },
868
+ AUTHENTICATION_FAILED: {
869
+ title: "idv2.digitalIdRedirect.failureScreen.authenticationFailed.title",
870
+ subtitle: "idv2.digitalIdRedirect.failureScreen.authenticationFailed.subtitle"
871
+ },
872
+ VERIFICATION_FAILED: {
873
+ title: "idv2.digitalIdRedirect.failureScreen.verificationFailed.title",
874
+ subtitle: "idv2.digitalIdRedirect.failureScreen.verificationFailed.subtitle"
875
+ },
876
+ SESSION_EXPIRED: {
877
+ title: "idv2.digitalIdRedirect.failureScreen.sessionExpired.title",
878
+ subtitle: "idv2.digitalIdRedirect.failureScreen.sessionExpired.subtitle"
879
+ },
880
+ SESSION_TOKEN_EXPIRED: {
881
+ title: "idv2.digitalIdRedirect.failureScreen.sessionExpired.title",
882
+ subtitle: "idv2.digitalIdRedirect.failureScreen.sessionExpired.subtitle"
883
+ },
884
+ PROVIDER_INTERNAL_ERROR: {
885
+ title: "idv2.digitalIdRedirect.failureScreen.technicalError.title",
886
+ subtitle: "idv2.digitalIdRedirect.failureScreen.technicalError.subtitle"
887
+ },
888
+ RESULTS_EXCHANGE_FAILED: {
889
+ title: "idv2.digitalIdRedirect.failureScreen.technicalError.title",
890
+ subtitle: "idv2.digitalIdRedirect.failureScreen.technicalError.subtitle"
891
+ },
892
+ INVALID_REDIRECT_RESULT: {
893
+ title: "idv2.digitalIdRedirect.failureScreen.technicalError.title",
894
+ subtitle: "idv2.digitalIdRedirect.failureScreen.technicalError.subtitle"
895
+ }
896
+ };
897
+ var GENERIC_KEYS = {
898
+ title: "idv2.digitalIdRedirect.failureScreen.generic.title",
899
+ subtitle: "idv2.digitalIdRedirect.failureScreen.generic.subtitle"
900
+ };
901
+ var FailureScreen = ({ failureReason, onRetry, onUseAnotherMethod }) => {
902
+ const { t } = useTranslation();
903
+ const copy = failureReason ? COPY_KEYS[failureReason] : GENERIC_KEYS;
904
+ return /* @__PURE__ */ u(VerificationResult, {
905
+ status: "failure",
906
+ failureTitle: t(copy.title),
907
+ errorMessage: t(copy.subtitle),
908
+ onRetry,
909
+ retryLabel: t("common.tryAgain"),
910
+ onSkip: onUseAnotherMethod,
911
+ skipLabel: t("idv2.digitalIdRedirect.failureScreen.useAnotherMethod")
912
+ });
913
+ };
914
+ //#endregion
915
+ //#region src/modules/id/digitalIdRedirect/redirectingScreen.tsx
916
+ /**
917
+ * Performs the full-page redirect out to the identity provider (bank login).
918
+ * Full-page navigation lives in L2, so core stays window-free. The pending
919
+ * verificationId was already persisted by the core child machine (its
920
+ * `persisting` state) before this screen renders, so the return leg can recover
921
+ * it from storage after the reload.
922
+ */
923
+ var RedirectingScreen = ({ launchUrl }) => {
924
+ y(() => {
925
+ if (launchUrl && launchUrl.startsWith("https://")) window.location.assign(launchUrl);
926
+ }, [launchUrl]);
927
+ return /* @__PURE__ */ u(TransitionSpinner, { hideText: true });
928
+ };
929
+ //#endregion
930
+ //#region src/modules/id/digitalIdRedirect/successScreen.tsx
931
+ /**
932
+ * Success confirmation for the digital-ID web-redirect (Trinsic iDIN/FTN).
933
+ * Renders the shared `VerificationResult` (same look as ekyc/ekyb) with a manual
934
+ * Continue action — the child machine parks in `succeeded` until the user
935
+ * acknowledges, so the flow does not silently skip past the result.
936
+ *
937
+ * Copy is i18nexus-keyed under `idv2.digitalIdRedirect.successScreen.*`
938
+ * (add EN, plus NL for iDIN and FI/SV for FTN, in i18nexus).
939
+ */
940
+ var SuccessScreen = ({ onContinue }) => {
941
+ const { t } = useTranslation();
942
+ return /* @__PURE__ */ u(VerificationResult, {
943
+ status: "success",
944
+ successTitle: t("idv2.digitalIdRedirect.successScreen.title"),
945
+ successSubtitle: t("idv2.digitalIdRedirect.successScreen.subtitle"),
946
+ onContinue,
947
+ continueLabel: t("idv2.digitalIdRedirect.successScreen.continue")
948
+ });
949
+ };
950
+ //#endregion
951
+ //#region src/modules/id/digitalIdRedirect/digitalIdRedirect.tsx
952
+ /**
953
+ * Digital ID web-redirect (Trinsic iDIN/FTN) rendered INSIDE ID-Capture as a
954
+ * child machine — mirrors `digitalIdUpload/digitalIdUpload.tsx`. The core child
955
+ * owns create → persist → redirect (and, on the return leg, submit → poll); this
956
+ * layer only renders the phase and performs the full-page navigation.
957
+ */
958
+ var DigitalIdRedirect = ({ manager, state }) => {
959
+ if (state.phase === "redirecting") return /* @__PURE__ */ u(RedirectingScreen, { launchUrl: state.launchUrl ?? "" });
960
+ if (state.phase === "success") return /* @__PURE__ */ u(SuccessScreen, { onContinue: () => manager.digitalIdRedirectContinue() });
961
+ if (state.phase === "failed") return /* @__PURE__ */ u(FailureScreen, {
962
+ failureReason: state.failureReason,
963
+ onRetry: () => manager.digitalIdRedirectRetry(),
964
+ onUseAnotherMethod: () => manager.digitalIdRedirectUseAnotherMethod()
965
+ });
966
+ if (state.phase === "error") return /* @__PURE__ */ u(FailureScreen, {
967
+ onRetry: () => manager.digitalIdRedirectRetry(),
968
+ onUseAnotherMethod: () => manager.digitalIdRedirectUseAnotherMethod()
969
+ });
970
+ return /* @__PURE__ */ u(TransitionSpinner, { hideText: true });
971
+ };
972
+ //#endregion
778
973
  //#region src/modules/id/manualUpload/manualUploadError.tsx
779
974
  /**
780
975
  * Inline validation message for the manual-upload flow. Rendered directly
@@ -971,27 +1166,23 @@ var UploadTab = ({ mode, manager, state, errorMessageId }) => {
971
1166
  const isUploadingBack = state.uploadingSide === "back";
972
1167
  return /* @__PURE__ */ u("div", {
973
1168
  class: "IncodeManualUploadTab",
974
- children: [
975
- /* @__PURE__ */ u(UploadButton, {
976
- icon: /* @__PURE__ */ u(IdFrontIcon, {}),
977
- label: slotLabel("front", isUploadingFront, state.frontUploaded),
978
- uploaded: state.frontUploaded,
979
- uploading: isUploadingFront,
980
- testId: "manual-upload-front",
981
- onFile: (file) => manager.manualUploadSelectFile("front", file),
982
- ...slotErrorProps("front")
983
- }),
984
- slotError("front"),
985
- state.showBackSlot && /* @__PURE__ */ u(k, { children: [/* @__PURE__ */ u(UploadButton, {
986
- icon: /* @__PURE__ */ u(IdBackIcon, {}),
987
- label: slotLabel("back", isUploadingBack, state.backUploaded),
988
- uploaded: state.backUploaded,
989
- uploading: isUploadingBack,
990
- testId: "manual-upload-back",
991
- onFile: (file) => manager.manualUploadSelectFile("back", file),
992
- ...slotErrorProps("back")
993
- }), slotError("back")] })
994
- ]
1169
+ children: [state.showFrontSlot !== false && /* @__PURE__ */ u(k, { children: [/* @__PURE__ */ u(UploadButton, {
1170
+ icon: /* @__PURE__ */ u(IdFrontIcon, {}),
1171
+ label: slotLabel("front", isUploadingFront, state.frontUploaded),
1172
+ uploaded: state.frontUploaded,
1173
+ uploading: isUploadingFront,
1174
+ testId: "manual-upload-front",
1175
+ onFile: (file) => manager.manualUploadSelectFile("front", file),
1176
+ ...slotErrorProps("front")
1177
+ }), slotError("front")] }), state.showBackSlot && /* @__PURE__ */ u(k, { children: [/* @__PURE__ */ u(UploadButton, {
1178
+ icon: /* @__PURE__ */ u(IdBackIcon, {}),
1179
+ label: slotLabel("back", isUploadingBack, state.backUploaded),
1180
+ uploaded: state.backUploaded,
1181
+ uploading: isUploadingBack,
1182
+ testId: "manual-upload-back",
1183
+ onFile: (file) => manager.manualUploadSelectFile("back", file),
1184
+ ...slotErrorProps("back")
1185
+ }), slotError("back")] })]
995
1186
  });
996
1187
  };
997
1188
  //#endregion
@@ -1099,17 +1290,307 @@ function preloadIdTutorialAssets() {
1099
1290
  "id.tutorial.back",
1100
1291
  "id.tutorial.passport"
1101
1292
  ]);
1102
- import("../id-tutorial-BOOsXlAJ.js");
1103
- import("../back-tutorial-BHyRHyET.js");
1104
- import("../passport-tutorial-CeSup6m9.js");
1105
- import("../id-back-of-card-C4XViC7W.js").then((n) => n.n);
1106
- import("../id-back-of-card-vertical-DCz0rj8m.js").then((n) => n.n);
1107
- import("../id-front-of-card-CUA1ocVF.js").then((n) => n.n);
1108
- import("../id-front-of-card-vertical-Ddm_BwD3.js").then((n) => n.n);
1293
+ preloadAnimations(["id.processing"], "horizontal");
1294
+ preloadAnimations(["id.processing"], "vertical");
1295
+ import("../id-tutorial-IhmAzrIF.js");
1296
+ import("../back-tutorial-XdmQ0Wml.js");
1297
+ import("../passport-tutorial-61vlloJS.js");
1298
+ import("../id-back-of-card-B6EcmiCs.js").then((n) => n.n);
1299
+ import("../id-back-of-card-vertical-B3FXhPpj.js").then((n) => n.n);
1300
+ import("../id-front-of-card-V_BlLaZr.js").then((n) => n.n);
1301
+ import("../id-front-of-card-vertical-CuZjL8kc.js").then((n) => n.n);
1302
+ }
1303
+ //#endregion
1304
+ //#region src/modules/id/tutorialWithPermissions/howItWorksOverlay.constants.ts
1305
+ var HOW_IT_WORKS_TITLE_ID = "how-it-works-title";
1306
+ var HOW_IT_WORKS_INSTRUCTIONS_LABELS = {
1307
+ TITLE: "idv2.tutorial.howItWorks.title",
1308
+ SUBTITLE: "idv2.tutorial.howItWorks.subtitle",
1309
+ STEP_1: "idv2.tutorial.howItWorks.instructions.step1",
1310
+ STEP_2: "idv2.tutorial.howItWorks.instructions.step2",
1311
+ STEP_3: "idv2.tutorial.howItWorks.instructions.step3",
1312
+ START_SCAN: "idv2.tutorial.startScan"
1313
+ };
1314
+ var HOW_IT_WORKS_INSTRUCTIONS = [
1315
+ {
1316
+ icon: SvgReloadIcon,
1317
+ labelKey: HOW_IT_WORKS_INSTRUCTIONS_LABELS.STEP_1
1318
+ },
1319
+ {
1320
+ icon: SvgPersonCardIcon,
1321
+ labelKey: HOW_IT_WORKS_INSTRUCTIONS_LABELS.STEP_2
1322
+ },
1323
+ {
1324
+ icon: SvgCheckV2Icon,
1325
+ labelKey: HOW_IT_WORKS_INSTRUCTIONS_LABELS.STEP_3
1326
+ }
1327
+ ];
1328
+ //#endregion
1329
+ //#region src/modules/id/tutorialWithPermissions/howItWorksOverlay.tsx
1330
+ function HowItWorksContent({ onContinue, isLoading }) {
1331
+ const { t } = useTranslation();
1332
+ return /* @__PURE__ */ u("div", {
1333
+ class: "IncodeHowItWorksOverlay",
1334
+ "data-testid": "how-it-works-overlay",
1335
+ children: [
1336
+ /* @__PURE__ */ u("div", {
1337
+ class: "IncodeHowItWorksOverlayHeader",
1338
+ children: [/* @__PURE__ */ u(AutoFocusTitle, {
1339
+ id: HOW_IT_WORKS_TITLE_ID,
1340
+ className: "IncodeHowItWorksOverlayTitle",
1341
+ children: t(HOW_IT_WORKS_INSTRUCTIONS_LABELS.TITLE)
1342
+ }), /* @__PURE__ */ u(TypographyP, {
1343
+ className: "IncodeHowItWorksOverlaySubtitle",
1344
+ children: t(HOW_IT_WORKS_INSTRUCTIONS_LABELS.SUBTITLE)
1345
+ })]
1346
+ }),
1347
+ /* @__PURE__ */ u("ul", {
1348
+ class: "IncodeHowItWorksOverlayInstructions",
1349
+ children: HOW_IT_WORKS_INSTRUCTIONS.map(({ icon: Icon, labelKey }) => /* @__PURE__ */ u("li", {
1350
+ class: "IncodeHowItWorksOverlayInstruction",
1351
+ children: [/* @__PURE__ */ u("div", {
1352
+ class: "IncodeHowItWorksOverlayInstructionIcon",
1353
+ "aria-hidden": "true",
1354
+ children: /* @__PURE__ */ u(Icon, {
1355
+ height: 24,
1356
+ width: 24
1357
+ })
1358
+ }), /* @__PURE__ */ u("span", { children: t(labelKey) })]
1359
+ }, labelKey))
1360
+ }),
1361
+ /* @__PURE__ */ u("div", {
1362
+ class: "IncodeHowItWorksOverlayActions",
1363
+ children: /* @__PURE__ */ u(Button, {
1364
+ onClick: onContinue,
1365
+ disabled: isLoading,
1366
+ isLoading,
1367
+ class: "IncodeHowItWorksOverlayActionButton",
1368
+ children: t(HOW_IT_WORKS_INSTRUCTIONS_LABELS.START_SCAN)
1369
+ })
1370
+ }),
1371
+ /* @__PURE__ */ u("div", {
1372
+ class: "IncodeHowItWorksOverlayFooter",
1373
+ children: /* @__PURE__ */ u(VerifiedByIncodeLogo, {})
1374
+ })
1375
+ ]
1376
+ });
1377
+ }
1378
+ var HowItWorksOverlay = ({ isOpen, onClose, onContinue, isLoading = false }) => {
1379
+ const isMobileWidth = useIsMobileDeviceWidth();
1380
+ const handleClose = isLoading ? void 0 : onClose;
1381
+ if (!isOpen) return null;
1382
+ if (isMobileWidth) return /* @__PURE__ */ u(BottomSheet, {
1383
+ isOpen: true,
1384
+ labelledById: HOW_IT_WORKS_TITLE_ID,
1385
+ manageInitialFocus: false,
1386
+ onClose: handleClose,
1387
+ "data-testid": "how-it-works-sheet",
1388
+ children: /* @__PURE__ */ u(HowItWorksContent, {
1389
+ onContinue,
1390
+ isLoading
1391
+ })
1392
+ });
1393
+ return /* @__PURE__ */ u(Modal.Root, {
1394
+ open: true,
1395
+ dismissible: !isLoading,
1396
+ labelledById: HOW_IT_WORKS_TITLE_ID,
1397
+ manageInitialFocus: false,
1398
+ onOpenChange: (open) => {
1399
+ if (!open) handleClose?.();
1400
+ },
1401
+ children: /* @__PURE__ */ u(Modal.Content, { children: /* @__PURE__ */ u(HowItWorksContent, {
1402
+ onContinue,
1403
+ isLoading
1404
+ }) })
1405
+ });
1406
+ };
1407
+ //#endregion
1408
+ //#region src/modules/id/tutorialWithPermissions/tutorialWithPermissions.tsx
1409
+ /**
1410
+ * Variant-specific overlay / CTA slots for the permission UX family.
1411
+ * Layer exclusivity means only one of IDC-01 / IDC-02 is active — `else if`
1412
+ * keeps that invariant in the UI composition.
1413
+ */
1414
+ function createSlots({ manager, stage, howItWorksOpen, onOpenHowItWorks, onCloseHowItWorks, onContinue, t }) {
1415
+ let permissionDialog = null;
1416
+ let howItWorksOverlay = null;
1417
+ let actions = null;
1418
+ if (stage.ux.id === CAMERA_PERMISSION_UX.PERMISSION_SHEET && stage.permissionStatus) permissionDialog = /* @__PURE__ */ u(PermissionsDialog, {
1419
+ manager,
1420
+ permissionStatus: stage.permissionStatus,
1421
+ isDismissible: true
1422
+ });
1423
+ else if (stage.ux.id === CAMERA_PERMISSION_UX.HOW_IT_WORKS) {
1424
+ const isRequesting = stage.permissionStatus === PERMISSION_DIALOG_STATUS.REQUESTING;
1425
+ actions = /* @__PURE__ */ u(Button, {
1426
+ variant: "link",
1427
+ onClick: onOpenHowItWorks,
1428
+ children: t("idv2.tutorial.howItWorks.link")
1429
+ });
1430
+ howItWorksOverlay = /* @__PURE__ */ u(HowItWorksOverlay, {
1431
+ isOpen: howItWorksOpen,
1432
+ onClose: onCloseHowItWorks,
1433
+ onContinue,
1434
+ isLoading: isRequesting
1435
+ });
1436
+ }
1437
+ return {
1438
+ permissionDialog,
1439
+ howItWorksOverlay,
1440
+ actions
1441
+ };
1442
+ }
1443
+ var TutorialWithPermissions = ({ manager, stage }) => {
1444
+ const { t } = useTranslation();
1445
+ const [howItWorksOpen, setHowItWorksOpen] = d(false);
1446
+ const isHowItWorks = stage.ux.id === CAMERA_PERMISSION_UX.HOW_IT_WORKS;
1447
+ const isCtaLoading = stage.tutorialPhase !== null ? CONTINUING_TUTORIAL_PHASES.has(stage.tutorialPhase) || stage.ux.id === CAMERA_PERMISSION_UX.PENDING : true;
1448
+ const requestPermissionFromTutorial = () => manager.requestPermission();
1449
+ function handleContinue() {
1450
+ if (isHowItWorks) {
1451
+ requestPermissionFromTutorial();
1452
+ return;
1453
+ }
1454
+ manager.nextStep();
1455
+ }
1456
+ const slots = createSlots({
1457
+ manager,
1458
+ stage,
1459
+ howItWorksOpen,
1460
+ onOpenHowItWorks: () => setHowItWorksOpen(true),
1461
+ onCloseHowItWorks: () => setHowItWorksOpen(false),
1462
+ onContinue: handleContinue,
1463
+ t
1464
+ });
1465
+ let disclaimerText = void 0;
1466
+ if (isHowItWorks) disclaimerText = t("idv2.tutorial.v2.allowCameraAccessDisclaimer");
1467
+ return /* @__PURE__ */ u(k, { children: [
1468
+ /* @__PURE__ */ u(Tutorial, {
1469
+ manager,
1470
+ documentType: stage.documentType,
1471
+ mode: stage.mode,
1472
+ isLoading: isCtaLoading,
1473
+ actionsSlot: slots.actions,
1474
+ onContinue: handleContinue,
1475
+ disclaimerText,
1476
+ shouldScaleAnimationContainer: true
1477
+ }),
1478
+ slots.permissionDialog,
1479
+ slots.howItWorksOverlay
1480
+ ] });
1481
+ };
1482
+ //#endregion
1483
+ //#region src/modules/id/experiments/useCameraPermissionUx.ts
1484
+ /** Permission surfaces the treatment can alter — the dialog ones, not the full-screen ones. */
1485
+ function isPermissionDialogSurface(state) {
1486
+ return state.status === ID_CAPTURE_STATUS.PERMISSIONS && (state.permissionStatus === PERMISSION_DIALOG_STATUS.IDLE || state.permissionStatus === PERMISSION_DIALOG_STATUS.MOTION_ONLY || state.permissionStatus === PERMISSION_DIALOG_STATUS.REQUESTING);
1487
+ }
1488
+ /**
1489
+ * `permissions.idle` collapsed into `status: 'loading'` — the silent
1490
+ * re-check between the tutorial CTA and the permission dialog. It remains a
1491
+ * treatment surface so the tutorial can stay mounted while that check runs.
1492
+ */
1493
+ function isPermissionsIdleBlip(state) {
1494
+ return state.status === ID_CAPTURE_STATUS.LOADING && state.phase === ID_CAPTURE_LOADING_PHASE.PERMISSIONS_IDLE;
1495
+ }
1496
+ function isCameraDocumentType(documentType) {
1497
+ return documentType === "id" || documentType === "passport";
1498
+ }
1499
+ /**
1500
+ * Positive population rule shared by every observable camera-path state.
1501
+ * Core supplies an effective document type for direct-entry flows, while
1502
+ * explicit manual and Digital-ID selections stay non-camera and are excluded.
1503
+ */
1504
+ function getCameraPermissionExperimentContext(state) {
1505
+ switch (state.status) {
1506
+ case ID_CAPTURE_STATUS.TUTORIAL:
1507
+ case ID_CAPTURE_STATUS.LOADING:
1508
+ case ID_CAPTURE_STATUS.PERMISSIONS:
1509
+ case ID_CAPTURE_STATUS.CAPTURE: break;
1510
+ default: return;
1511
+ }
1512
+ if (!isCameraDocumentType(state.selectedDocumentType)) return;
1513
+ return { tutorialEnabled: state.status === ID_CAPTURE_STATUS.TUTORIAL ? true : state.tutorialEnabled };
1514
+ }
1515
+ function isCameraPermissionTreatmentSurface(state) {
1516
+ if (state.status === ID_CAPTURE_STATUS.TUTORIAL) return true;
1517
+ if (isPermissionsIdleBlip(state)) return state.tutorialEnabled;
1518
+ return isPermissionDialogSurface(state) && state.tutorialEnabled;
1519
+ }
1520
+ function collapseCameraPermissionUx(showHowItWorks, showPermissionSheet) {
1521
+ if (showHowItWorks) return { id: CAMERA_PERMISSION_UX.HOW_IT_WORKS };
1522
+ if (showPermissionSheet) return { id: CAMERA_PERMISSION_UX.PERMISSION_SHEET };
1523
+ return { id: CAMERA_PERMISSION_UX.CONTROL };
1524
+ }
1525
+ function useCameraPermissionUx(state) {
1526
+ const experimentContext = getCameraPermissionExperimentContext(state);
1527
+ const experimentEnabled = experimentContext !== void 0;
1528
+ const onTreatmentSurface = experimentEnabled && isCameraPermissionTreatmentSurface(state);
1529
+ const howItWorksExperiment = useIdExperiment({
1530
+ key: "cameraPermissionHowItWorks",
1531
+ enabled: experimentEnabled,
1532
+ conditions: experimentContext
1533
+ });
1534
+ const permissionSheetExperiment = useIdExperiment({
1535
+ key: "cameraPermissionSheet",
1536
+ enabled: experimentEnabled,
1537
+ conditions: experimentContext
1538
+ });
1539
+ if (!onTreatmentSurface) return { id: CAMERA_PERMISSION_UX.CONTROL };
1540
+ if (howItWorksExperiment.status === EXPERIMENT_LIFECYCLE_STATUS.PENDING || permissionSheetExperiment.status === EXPERIMENT_LIFECYCLE_STATUS.PENDING) return { id: CAMERA_PERMISSION_UX.PENDING };
1541
+ return collapseCameraPermissionUx(howItWorksExperiment.params.showHowItWorks, permissionSheetExperiment.params.showPermissionSheet);
1542
+ }
1543
+ //#endregion
1544
+ //#region src/modules/id/useIdTutorialWithPermissionsUxStage.ts
1545
+ /**
1546
+ * Which arm-specific permission statuses keep the tutorial mounted as a
1547
+ * backdrop behind the dialog surface. IDC-01 shows its sheet across the
1548
+ * whole idle/motionOnly/requesting range; IDC-02 has no dialog of its own —
1549
+ * only the native prompt (`requesting`) sits over the tutorial. Dismissing
1550
+ * that prompt (→ `waitingForUser`) falls through to the standard full-screen
1551
+ * explainer instead of leaving IDC-02 on a dead-end tutorial.
1552
+ */
1553
+ function isDialogBackdropStatus(ux, permissionStatus) {
1554
+ if (ux.id === CAMERA_PERMISSION_UX.HOW_IT_WORKS) return permissionStatus === PERMISSION_DIALOG_STATUS.REQUESTING;
1555
+ if (ux.id === CAMERA_PERMISSION_UX.PERMISSION_SHEET) return permissionStatus === PERMISSION_DIALOG_STATUS.IDLE || permissionStatus === PERMISSION_DIALOG_STATUS.MOTION_ONLY || permissionStatus === PERMISSION_DIALOG_STATUS.REQUESTING;
1556
+ return false;
1557
+ }
1558
+ /**
1559
+ * Resolves when `TutorialWithPermissions` should render instead of the plain
1560
+ * tutorial or permissions screens.
1561
+ *
1562
+ * - Default (non-experimental): `state.status === 'tutorial'`.
1563
+ * - Camera-permission experiment: permissions dialog with tutorial backdrop
1564
+ * when `tutorialEnabled` and the treatment is not control.
1565
+ */
1566
+ function useIdTutorialWithPermissionsUxStage(state) {
1567
+ const ux = useCameraPermissionUx(state);
1568
+ if (state.status === ID_CAPTURE_STATUS.LOADING && state.phase === "permissionsIdle" && state.tutorialEnabled && ux.id !== CAMERA_PERMISSION_UX.CONTROL && ux.id !== CAMERA_PERMISSION_UX.PENDING) return {
1569
+ documentType: state.selectedDocumentType,
1570
+ mode: state.currentMode,
1571
+ ux,
1572
+ tutorialPhase: null,
1573
+ permissionStatus: "checking"
1574
+ };
1575
+ if (state.status === ID_CAPTURE_STATUS.TUTORIAL) return {
1576
+ documentType: state.selectedDocumentType,
1577
+ mode: state.currentMode,
1578
+ ux,
1579
+ tutorialPhase: state.phase,
1580
+ permissionStatus: null
1581
+ };
1582
+ if (state.status === ID_CAPTURE_STATUS.PERMISSIONS && state.tutorialEnabled && isDialogBackdropStatus(ux, state.permissionStatus)) return {
1583
+ documentType: state.selectedDocumentType,
1584
+ mode: state.currentMode,
1585
+ ux,
1586
+ tutorialPhase: null,
1587
+ permissionStatus: state.permissionStatus
1588
+ };
1589
+ return null;
1109
1590
  }
1110
1591
  //#endregion
1111
1592
  //#region src/modules/id/id.tsx
1112
- var MandatoryConsent = z(() => import("../mandatoryConsent-CxShVycM.js").then((module) => ({ default: module.MandatoryConsent })));
1593
+ var MandatoryConsent = z(() => import("../mandatoryConsent-D96_9XTp.js").then((module) => ({ default: module.MandatoryConsent })));
1113
1594
  var IdContent = ({ config, manager: externalManager, onFinish, onError }) => {
1114
1595
  usePreloadDisplayFont();
1115
1596
  y(() => {
@@ -1129,19 +1610,26 @@ var IdContent = ({ config, manager: externalManager, onFinish, onError }) => {
1129
1610
  onFinish,
1130
1611
  onError
1131
1612
  });
1613
+ const tutorialWithPermissionsUxStage = useIdTutorialWithPermissionsUxStage(state);
1614
+ const isPreparingCameraLoader = state.status === "loading" && tutorialWithPermissionsUxStage?.ux.id !== CAMERA_PERMISSION_UX.PERMISSION_SHEET;
1615
+ const { params: darkCameraLoadingParams } = useIdExperiment({
1616
+ key: "darkCameraLoading",
1617
+ enabled: isPreparingCameraLoader
1618
+ });
1132
1619
  if (state.status === "idle") return /* @__PURE__ */ u(TransitionSpinner, { renderMode: "spinnerOnly" });
1133
- if (state.status === "loading") return /* @__PURE__ */ u(TransitionSpinner, {
1620
+ if (isPreparingCameraLoader) return /* @__PURE__ */ u(TransitionSpinner, {
1134
1621
  titleKey: "loadingCircle.holdOn",
1135
- subtitleKey: "loadingCircle.preparingCamera"
1622
+ subtitleKey: "loadingCircle.preparingCamera",
1623
+ alwaysDark: darkCameraLoadingParams.showDarkCameraLoading
1136
1624
  });
1137
1625
  if (state.status === "chooser") return /* @__PURE__ */ u(Chooser, {
1138
1626
  manager,
1139
1627
  state
1140
1628
  });
1141
1629
  if (state.status === "ageVerification") return /* @__PURE__ */ u(AgeVerification, { manager });
1142
- if (state.status === "tutorial") return /* @__PURE__ */ u(Tutorial, {
1630
+ if (tutorialWithPermissionsUxStage) return /* @__PURE__ */ u(TutorialWithPermissions, {
1143
1631
  manager,
1144
- state
1632
+ stage: tutorialWithPermissionsUxStage
1145
1633
  });
1146
1634
  if (state.status === "permissions") return /* @__PURE__ */ u(Permissions, {
1147
1635
  manager,
@@ -1184,15 +1672,40 @@ var IdContent = ({ config, manager: externalManager, onFinish, onError }) => {
1184
1672
  manager,
1185
1673
  state
1186
1674
  });
1675
+ if (state.status === "digitalIdRedirect") return /* @__PURE__ */ u(DigitalIdRedirect, {
1676
+ manager,
1677
+ state
1678
+ });
1679
+ if (state.status === "deviceWallet") return /* @__PURE__ */ u(DeviceWallet, {
1680
+ manager,
1681
+ state
1682
+ });
1187
1683
  return null;
1188
1684
  };
1189
1685
  var IdWithLocalConfig = ({ config, manager, onFinish, onError }) => {
1190
- return /* @__PURE__ */ u(IncodeComponent, { children: config || manager ? /* @__PURE__ */ u(IdContent, {
1191
- config,
1686
+ const runsOwnSecondIdSequence = !useHasResolvedConfig() && !manager && config?.secondId === true && config?.isSecondId !== true;
1687
+ const [round, setRound] = d("first");
1688
+ const handleFinish = q((output) => {
1689
+ if (runsOwnSecondIdSequence && round === "first") {
1690
+ setRound("second");
1691
+ return;
1692
+ }
1693
+ onFinish?.(output);
1694
+ }, [
1695
+ runsOwnSecondIdSequence,
1696
+ round,
1697
+ onFinish
1698
+ ]);
1699
+ const resolvedConfig = runsOwnSecondIdSequence && round === "second" ? {
1700
+ ...config,
1701
+ isSecondId: true
1702
+ } : config;
1703
+ return /* @__PURE__ */ u(IncodeComponent, { children: resolvedConfig || manager ? /* @__PURE__ */ u(IdContent, {
1704
+ config: resolvedConfig,
1192
1705
  manager,
1193
- onFinish,
1706
+ onFinish: handleFinish,
1194
1707
  onError
1195
- }) : null });
1708
+ }, runsOwnSecondIdSequence ? round : void 0) : null });
1196
1709
  };
1197
1710
  var Id = withStandaloneModuleBootstrap(IdWithLocalConfig, "ID", { supportsExternalManager: true });
1198
1711
  registerIncodeModuleElement(Id, "incode-id");