@incodetech/web 2.2.0 → 2.3.0-rc.1

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-CiGNWICE.js +3043 -0
  4. package/dist/am-C5YehVGG.js +3043 -0
  5. package/dist/antifraud/antifraud.es.js +4 -4
  6. package/dist/ar-AE-BMJuIKTB.js +3059 -0
  7. package/dist/ar-CUw7KMHb.js +3059 -0
  8. package/dist/ar-EG-ojf2Ene5.js +3059 -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-CVjuQOGZ.js} +2 -2
  16. package/dist/az-DsqjgKhY.js +3043 -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-BM2Ho3QZ.js +172 -0
  21. package/dist/bn-Bbn6O_i2.js +3043 -0
  22. package/dist/bottomSheet-Cixb81_b.js +101 -0
  23. package/dist/bs-CYW5eATI.js +3047 -0
  24. package/dist/ca-D5u2Z71o.js +3043 -0
  25. package/dist/cameraOverlay-MpL3OBQu.js +2 -0
  26. package/dist/cameraOverlayHeader-BarDrIC9.js +43 -0
  27. package/dist/cameraView-BNqv7JUh.js +49 -0
  28. package/dist/captureFooter-De74TCQi.js +67 -0
  29. package/dist/ceb-tXsl4nyX.js +3043 -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-BR-RTI4R.js} +9 -8
  33. package/dist/{connectionError-BurQq_4R.js → connectionError-Haw33Di8.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-Zbe2eGzy.js} +8 -10
  39. package/dist/cross-document-data-match/cross-document-data-match.es.js +4 -4
  40. package/dist/cs-CZ-BUx_DNTa.js +3051 -0
  41. package/dist/cs-D_6Vg3XS.js +3051 -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-CEFWn2wC.js} +44 -19
  46. package/dist/{customWatchlist-DgpXtVRf.js → customWatchlist-Xn3d-zbf.js} +14 -11
  47. package/dist/da-DK-CsmjiCBo.js +3043 -0
  48. package/dist/{dashboardTheme-BUDq5UYs.js → dashboardTheme-B_YjGFDU.js} +31 -7
  49. package/dist/dateInputComposed-0tUVTT0_.js +1 -0
  50. package/dist/{dateInputComposed-DSgV0wnb.js → dateInputComposed-ByhgHDX8.js} +5 -5
  51. package/dist/de-BsJlhx6J.js +3043 -0
  52. package/dist/{manualCaptureButton-D58WsS-x.js → denied-CB1v3PyY.js} +270 -233
  53. package/dist/document-capture/document-capture.es.js +1 -1
  54. package/dist/document-capture/styles.css +4 -4
  55. package/dist/document-capture/styles.css.js +1 -0
  56. package/dist/{documentCapture-sZj09g0I.js → documentCapture-Cj8G5Wgb.js} +16 -17
  57. package/dist/documentCapture-D0o4Xh1J.js +2 -0
  58. package/dist/dropdownComposed-BsEtJjhn.js +1 -0
  59. package/dist/{dropdownComposed-CEegNzG4.js → dropdownComposed-DptsxuHA.js} +9 -9
  60. package/dist/{dynamicForms-t3vepXqJ.js → dynamic-forms/dynamic-forms.es.js} +24 -19
  61. package/dist/dynamic-forms/styles.css +5 -0
  62. package/dist/dynamic-forms/styles.css.js +1 -0
  63. package/dist/ekyb/ekyb.es.js +1 -1
  64. package/dist/ekyb/styles.css +15 -13
  65. package/dist/ekyb/styles.css.js +1 -0
  66. package/dist/ekybModule-B-gioC08.js +2 -0
  67. package/dist/{ekybModule-Dvkf5WAr.js → ekybModule-DqA0hfNQ.js} +17 -30
  68. package/dist/ekyc/ekyc.es.js +1 -1
  69. package/dist/ekyc/styles.css +17 -16
  70. package/dist/ekyc/styles.css.js +1 -0
  71. package/dist/ekycModule-CjkpPQ3f.js +2 -0
  72. package/dist/{ekycModule-C5QXVGP7.js → ekycModule-bRC6FW2H.js} +14 -29
  73. package/dist/el-Dq-L-4X5.js +3043 -0
  74. package/dist/el-GR-c9roJIs_.js +3043 -0
  75. package/dist/electronic-signature/electronic-signature.es.js +1 -1
  76. package/dist/electronic-signature/styles.css +62 -2
  77. package/dist/electronic-signature/styles.css.js +1 -0
  78. package/dist/{electronic-signature-CyE8F7LZ.js → electronic-signature-DRMdCzdF.js} +65 -18
  79. package/dist/email/email.es.js +9 -8
  80. package/dist/email/styles.css.js +1 -0
  81. package/dist/{emailInput-CsT8_C01.js → emailInput-Dz8ukhAE.js} +4 -4
  82. package/dist/en-CmZT05w8.js +3043 -0
  83. package/dist/en-DG-BQHfwiXE.js +3043 -0
  84. package/dist/errorContent-aJuo21I4.js +58 -0
  85. package/dist/es-419-CoqfXTDl.js +3043 -0
  86. package/dist/es-DXFWBB40.js +3043 -0
  87. package/dist/es-ES-TOSb7vSR.js +3043 -0
  88. package/dist/es-MX-CpubyuFB.js +3043 -0
  89. package/dist/et-dg12JfIX.js +3043 -0
  90. package/dist/{expiredId-BQ1uPh7b.js → expiredId-BPgVum6e.js} +22 -27
  91. package/dist/extensibility.es.js +701 -24
  92. package/dist/fa-IR-TKcZgrd1.js +3043 -0
  93. package/dist/face-match/face-match.es.js +1 -1
  94. package/dist/face-match/styles.css +76 -40
  95. package/dist/face-match/styles.css.js +1 -0
  96. package/dist/{faceMatch-Rf-MMdto.js → faceMatch-BcScQR2O.js} +7 -8
  97. package/dist/faceMatch-BvaN_Ggn.js +2 -0
  98. package/dist/fi-FI-BP9vgY5F.js +3043 -0
  99. package/dist/field-comparison/field-comparison.es.js +1 -1
  100. package/dist/field-comparison/styles.css +12 -0
  101. package/dist/field-comparison/styles.css.js +1 -0
  102. package/dist/fieldComparison-D4YoXJKX.js +2 -0
  103. package/dist/{fieldComparison-BnGj3nNp.js → fieldComparison-UKZsi875.js} +27 -11
  104. package/dist/fieldLabelHint-CxjArYkQ.js +16 -0
  105. package/dist/{finalSuccessScreen-B9uB3bST.js → finalSuccessScreen-7OX0TdIz.js} +13 -14
  106. package/dist/fiscal-qr/fiscal-qr.es.js +28 -9
  107. package/dist/fiscal-qr/styles.css +13 -1
  108. package/dist/fiscal-qr/styles.css.js +1 -0
  109. package/dist/{extensibility-C5XqL_A3.js → flipAnimation-BwI4pEJc.js} +608 -1005
  110. package/dist/flow/flow.es.js +308 -62
  111. package/dist/flow/shell/styles.css +402 -0
  112. package/dist/flow/shell/styles.css.js +1 -0
  113. package/dist/flow/styles.css +582 -312
  114. package/dist/formField-DWExlgnz.js +60 -0
  115. package/dist/fr-B4LoNDGy.js +3047 -0
  116. package/dist/fr-CA-CjN8CDsE.js +3047 -0
  117. package/dist/{front-horizontal-hint-Bhz1rq-w.js → front-horizontal-hint-mgovnJf3.js} +1 -1
  118. package/dist/{front-vertical-hint-C4FC1ksx.js → front-vertical-hint-qXMVdLri.js} +1 -1
  119. package/dist/geolocation/geolocation.es.js +9 -9
  120. package/dist/geolocation/styles.css +4 -4
  121. package/dist/geolocation/styles.css.js +1 -0
  122. package/dist/government-validation/government-validation.es.js +38 -86
  123. package/dist/government-validation/styles.css +2 -38
  124. package/dist/government-validation/styles.css.js +1 -0
  125. package/dist/he-CJNS0xku.js +3051 -0
  126. package/dist/hi-CoHu7PnX.js +3043 -0
  127. package/dist/hmn-qubMIB6T.js +3043 -0
  128. package/dist/{homeScreen-Bv9mUUOF.js → homeScreen-CqLbJbhW.js} +8 -7
  129. package/dist/hr-N3Dy9ndd.js +3047 -0
  130. package/dist/ht-iHGiGZhO.js +3043 -0
  131. package/dist/hu-hlQUlAJs.js +3043 -0
  132. package/dist/{icons-ChHV5iHi.js → icons-DNXYxUPA.js} +99 -11
  133. package/dist/id/id.es.js +576 -62
  134. package/dist/id/styles.css +114 -45
  135. package/dist/id/styles.css.js +1 -0
  136. package/dist/id-Dhk7ywrq.js +3037 -0
  137. package/dist/{id-back-of-card-C4XViC7W.js → id-back-of-card-B6EcmiCs.js} +1 -1
  138. package/dist/{id-back-of-card-vertical-DCz0rj8m.js → id-back-of-card-vertical-B3FXhPpj.js} +1 -1
  139. package/dist/{id-front-of-card-CUA1ocVF.js → id-front-of-card-V_BlLaZr.js} +1 -1
  140. package/dist/{id-front-of-card-vertical-Ddm_BwD3.js → id-front-of-card-vertical-CuZjL8kc.js} +1 -1
  141. package/dist/id-ocr/styles.css.js +1 -0
  142. package/dist/id-selfie-flow/id-selfie-flow.es.js +10 -9
  143. package/dist/id-selfie-flow/styles.css +40 -8
  144. package/dist/id-verification/id-verification.es.js +5 -5
  145. package/dist/{idOcr-Da1-2sWY.js → idOcr-Bt0V72id.js} +13 -16
  146. package/dist/identity-reuse/identity-reuse.es.js +8 -113
  147. package/dist/identity-reuse/styles.css +1 -1
  148. package/dist/{incode-logo-DeIDDejm.js → incode-logo-BzJOZr3f.js} +1 -64
  149. package/dist/{incodeComponent-BtFz-bx2.js → incodeComponent-DeVV0gEn.js} +192 -22
  150. package/dist/{incodeModule-9K8KUs61.js → incodeModule-Do8qpZk7.js} +3 -3
  151. package/dist/index.es.js +4 -3
  152. package/dist/{inputComposed-C2zTEXsp.js → inputComposed-9aPipTS_.js} +9 -9
  153. package/dist/inputComposed-DZokKK4c.js +1 -0
  154. package/dist/it-CXYuJ5BQ.js +3043 -0
  155. package/dist/ja-B5OkMrWD.js +3037 -0
  156. package/dist/ja-JP-SlPp7xE2.js +3037 -0
  157. package/dist/jv-DduD6MhM.js +3037 -0
  158. package/dist/ka-CG2wabuB.js +3043 -0
  159. package/dist/kk-D984nBRQ.js +3043 -0
  160. package/dist/km-B-DaaNxL.js +3037 -0
  161. package/dist/ko-B8I6YPOu.js +3037 -0
  162. package/dist/ko-KP-BTQZdVex.js +3037 -0
  163. package/dist/ky-p_wAYlXq.js +3043 -0
  164. package/dist/lo-CS-RhXrt.js +3037 -0
  165. package/dist/lt-C1yAMYTU.js +3051 -0
  166. package/dist/lv-CiHCsaN9.js +3047 -0
  167. package/dist/{mandatoryConsent-CxShVycM.js → mandatoryConsent-BJcDf3s-.js} +10 -7
  168. package/dist/manualCaptureButton-2RTC1vZC.js +63 -0
  169. package/dist/{manualCaptureButton-DzJFIEfu.js → manualCaptureButton-CqwPCE8h.js} +10 -55
  170. package/dist/mk-VumecXcv.js +3043 -0
  171. package/dist/mn-DGMJpCs6.js +3043 -0
  172. package/dist/{modal-BH2wi8Q0.js → modal-H_YHBjxJ.js} +7 -6
  173. package/dist/{modal.hooks-DcakflQ4.js → modal.hooks-B0Wrc9s2.js} +7 -1
  174. package/dist/ms-CBk2NkZ1.js +3037 -0
  175. package/dist/my-BWcPvvs5.js +3037 -0
  176. package/dist/nb-NO-D7azau2s.js +3043 -0
  177. package/dist/ne-D9CU-qx6.js +3043 -0
  178. package/dist/nl-BVhLZVXm.js +3043 -0
  179. package/dist/{numberedStep-DqtXyT11.js → numberedStep-C8e_uPaz.js} +1 -1
  180. package/dist/{optionAccessibleLabel-C5iZCrlq.js → optionAccessibleLabel-C0BRq4LF.js} +6 -6
  181. package/dist/{otpInput-CvPR3ZpP.js → otpInput-C8mlw_Cm.js} +8 -83
  182. package/dist/{passport-horizontal-hint-DzkhjC8Q.js → passport-horizontal-hint-6Ghn2EEN.js} +1 -1
  183. package/dist/{passport-vertical-hint-Bd0BQn2Y.js → passport-vertical-hint-UPFFpdf4.js} +1 -1
  184. package/dist/passwordInputComposed-CDbxJKHR.js +74 -0
  185. package/dist/{pdf-BUoY_2gv.js → pdf-CFubyG0B.js} +1 -1
  186. package/dist/pdfViewer-CCu7pBQv.js +2 -0
  187. package/dist/{pdfViewer-TTZmPABh.js → pdfViewer-DTwxqwSD.js} +4 -4
  188. package/dist/permissions-B0ctl0V9.js +212 -0
  189. package/dist/phone/phone.es.js +10 -9
  190. package/dist/phone/styles.css +1 -1
  191. package/dist/phone/styles.css.js +1 -0
  192. package/dist/{phoneInputComposed-byyszNoS.js → phoneInputComposed-Bz37hY_u.js} +20 -8412
  193. package/dist/pl-DWKpY783.js +3051 -0
  194. package/dist/{processing-B2eaSGLu.js → processing-CrNgzN1u.js} +2 -2
  195. package/dist/pt-B2_-n4Z3.js +3043 -0
  196. package/dist/pt-BR-CC8MxgMX.js +3043 -0
  197. package/dist/pt-PT-vo9--bzz.js +3043 -0
  198. package/dist/qe-signature/qe-signature.es.js +4 -4
  199. package/dist/radioGroupComposed-BFzxJVpZ.js +1 -0
  200. package/dist/{radioGroupComposed-DQzTWutW.js → radioGroupComposed-BrawV4FU.js} +15 -71
  201. package/dist/redirect-to-mobile/redirect-to-mobile.es.js +34 -178
  202. package/dist/redirect-to-mobile/styles.css +2 -27
  203. package/dist/redirect-to-mobile/styles.css.js +1 -0
  204. package/dist/{registerIncodeElement-DW2PE_DX.js → registerIncodeElement-CbZczi4S.js} +1 -1
  205. package/dist/resendTimer-C0HqF9VE.js +79 -0
  206. package/dist/{useModuleLoader-DxOEZ0vn.js → resolveApiKey-DU0APKTv.js} +70 -222
  207. package/dist/{richText-CEwM8jib.js → richText-BEuqr0as.js} +9 -9
  208. package/dist/ro-DOhwcTr3.js +3047 -0
  209. package/dist/ru-CD71PeIH.js +3051 -0
  210. package/dist/ru-RU-DLHiNY0O.js +3051 -0
  211. package/dist/selfie/selfie.es.js +184 -8
  212. package/dist/selfie/styles.css +225 -36
  213. package/dist/selfie/styles.css.js +1 -0
  214. package/dist/signature/signature.es.js +8 -9
  215. package/dist/signature/styles.css.js +1 -0
  216. package/dist/sk-DaVWjX4k.js +3051 -0
  217. package/dist/sl-YiCpfUol.js +3051 -0
  218. package/dist/smsTabContent-C1C1g4GT.js +172 -0
  219. package/dist/so-B2bRmOT5.js +3043 -0
  220. package/dist/{spacer-DLEDuWEx.js → spacer-DZ-t7RMQ.js} +10 -10
  221. package/dist/spinner-hjbTcmA1.js +88 -0
  222. package/dist/sr-BbjKCO-a.js +3047 -0
  223. package/dist/sr-Latn-D-xKaOqV.js +3047 -0
  224. package/dist/sr-YU-1ULH6b8i.js +3047 -0
  225. package/dist/{statusPage-BF4qGjF3.js → statusPage-DeP-KBHD.js} +4 -4
  226. package/dist/sv-SE-5wAQ-CsE.js +3043 -0
  227. package/dist/sw-DVj-0--U.js +3043 -0
  228. package/dist/{tabs-BGL1oRLb.js → tabs-C8WsKO4V.js} +2 -2
  229. package/dist/th-TH-DAqLZmwn.js +3037 -0
  230. package/dist/th-ubpxty9O.js +3037 -0
  231. package/dist/themes/dark.css +125 -0
  232. package/dist/themes/light.css +124 -0
  233. package/dist/tl-DCL6tS5T.js +3043 -0
  234. package/dist/tl-PH-Wftt86RZ.js +3043 -0
  235. package/dist/tr-B58sWy89.js +3043 -0
  236. package/dist/{tutorial-LQuJ4dse.js → tutorial-BP1F722m.js} +40 -226
  237. package/dist/types/certificate-issuance.d.ts +4 -4
  238. package/dist/types/dynamic-forms.d.ts +177 -0
  239. package/dist/types/extensibility.d.ts +75 -23
  240. package/dist/types/flow.d.ts +37 -0
  241. package/dist/types/government-validation.d.ts +2 -1
  242. package/dist/types/index.d.ts +28 -4
  243. package/dist/types/video-selfie.d.ts +6 -161
  244. package/dist/typography-CYO7ELEl.js +53 -0
  245. package/dist/{uiConfig-Dqnjankd.js → uiConfig-BcjOx3PY.js} +184 -8
  246. package/dist/uk-BaklGIxd.js +3051 -0
  247. package/dist/uk-UA-BoawOp_y.js +3051 -0
  248. package/dist/ur-MYw3j3wD.js +3043 -0
  249. package/dist/useModuleLoader-DpcbSKBH.js +176 -0
  250. package/dist/uz-DWfToWrZ.js +3043 -0
  251. package/dist/{vendor-preact-BPXMFRom.js → vendor-preact-C0jX1Cbq.js} +68 -181
  252. package/dist/{verificationResult-q_zD_Pxh.js → verificationResult-Bre5Fb7M.js} +32 -25
  253. package/dist/vi-IY_487Pk.js +3037 -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-BIrl-mYj.js} +28 -16
  260. package/dist/workflow/styles.css +1073 -356
  261. package/dist/workflow/workflow.es.js +17 -15
  262. package/dist/zh-B1yRDjHf.js +3037 -0
  263. package/dist/zh-CN-B2Yvvabk.js +3037 -0
  264. package/dist/zh-HANT-CdNxQtKM.js +3037 -0
  265. package/dist/zh-TW-BgqFmnMA.js +3037 -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,27 @@
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-BcjOx3PY.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-DeVV0gEn.js";
4
+ import { d as cn, i as preloadAnimations, r as AnimatedAsset, s as Asset, t as Spacer } from "../spacer-DZ-t7RMQ.js";
5
+ import { o as TypographyP, t as Title } from "../typography-CYO7ELEl.js";
6
+ import { t as Spinner } from "../spinner-hjbTcmA1.js";
7
+ import { a as LockIcon, b as ErrorIcon, f as ChevronRightIcon, r as SuccessIcon, x as Button } from "../icons-DNXYxUPA.js";
8
+ import { t as AutoFocusTitle } from "../autoFocusTitle-CVjuQOGZ.js";
9
+ import { t as Processing } from "../processing-CrNgzN1u.js";
10
+ import { t as Modal } from "../modal-H_YHBjxJ.js";
11
+ import { t as ErrorContent } from "../errorContent-aJuo21I4.js";
12
+ import { t as VerificationResult } from "../verificationResult-Bre5Fb7M.js";
13
+ import { n as ProgressBar } from "../captureFooter-De74TCQi.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-BwI4pEJc.js";
15
+ import { t as BottomSheet } from "../bottomSheet-Cixb81_b.js";
16
+ import { i as SvgReloadIcon, n as SvgCheckV2Icon, r as SvgPersonCardIcon } from "../denied-CB1v3PyY.js";
17
+ import { n as PermissionsDialog, t as Permissions } from "../permissions-B0ctl0V9.js";
18
+ import { t as PdfViewer } from "../pdfViewer-DTwxqwSD.js";
19
+ import { t as registerIncodeModuleElement } from "../incodeModule-Do8qpZk7.js";
20
+ import { t as SvgIdBackOfCard } from "../id-back-of-card-B6EcmiCs.js";
21
+ import { t as SvgIdBackOfCardVertical } from "../id-back-of-card-vertical-B3FXhPpj.js";
22
+ import { t as SvgIdFrontOfCard } from "../id-front-of-card-V_BlLaZr.js";
23
+ import { t as SvgIdFrontOfCardVertical } from "../id-front-of-card-vertical-CuZjL8kc.js";
24
+ import { t as Tabs } from "../tabs-C8WsKO4V.js";
20
25
  import { ONBOARDING_WEB_SDK_PARAMETER_STORE } from "@incodetech/core/feature-management";
21
26
  import { createIdCaptureManager } from "@incodetech/core/id";
22
27
  //#region src/shared/fonts/preloadDisplayFont.ts
@@ -228,10 +233,13 @@ var IdFlipCard = ({ manager, direction, imageUrl, orientation }) => {
228
233
  * captured photo; control (or passport) keeps `FlipAnimation`.
229
234
  */
230
235
  var IdFlipTransition = ({ manager, state }) => {
231
- const { params } = useIdExperiment({ key: "flipCapturedCard" });
236
+ const { params } = useIdExperiment({
237
+ key: "flipCapturedCard",
238
+ enabled: canFlipCapturedCard(state.mode, state.previewImageUrl)
239
+ });
232
240
  const shouldFlipCapturedCard = params.shouldFlipCapturedCard;
233
241
  const direction = state.status === "frontFinished" ? "toBack" : "toFront";
234
- if (shouldFlipCapturedCard && state.mode !== "passport" && state.previewImageUrl) return /* @__PURE__ */ u(IdFlipCard, {
242
+ if (shouldFlipCapturedCard) return /* @__PURE__ */ u(IdFlipCard, {
235
243
  manager,
236
244
  direction,
237
245
  imageUrl: state.previewImageUrl,
@@ -336,7 +344,7 @@ var KEY_BY_FAIL_REASON = {
336
344
  NETWORK_ERROR: "idv2.digitalIdUpload.unknownDocumentTypeScreen.errorTitle",
337
345
  GENERIC: "idv2.digitalIdUpload.unknownDocumentTypeScreen.errorTitle"
338
346
  };
339
- var ErrorScreen = ({ manager, state }) => {
347
+ var ErrorScreen$1 = ({ manager, state }) => {
340
348
  const { t } = useTranslation();
341
349
  const failReason = state.failReason ?? "GENERIC";
342
350
  const isTerminal = state.phase === "exhausted" || TERMINAL_REASONS.has(failReason);
@@ -682,7 +690,7 @@ var FileTooLargeScreen = ({ manager }) => {
682
690
  };
683
691
  //#endregion
684
692
  //#region src/modules/id/digitalIdUpload/successScreen.tsx
685
- var SuccessScreen = ({ manager, state }) => {
693
+ var SuccessScreen$1 = ({ manager, state }) => {
686
694
  const { t } = useTranslation();
687
695
  const fileUrl = useFilePreviewUrl(state.file);
688
696
  return /* @__PURE__ */ u(Page, {
@@ -763,18 +771,206 @@ var DigitalIdUpload = ({ manager, state }) => {
763
771
  state
764
772
  });
765
773
  if (state.phase === "uploading" || state.phase === "holding") return /* @__PURE__ */ u(AnalyzingScreen, { state });
766
- if (state.phase === "success") return /* @__PURE__ */ u(SuccessScreen, {
774
+ if (state.phase === "success") return /* @__PURE__ */ u(SuccessScreen$1, {
767
775
  manager,
768
776
  state
769
777
  });
770
778
  if (state.phase === "fileTooLarge") return /* @__PURE__ */ u(FileTooLargeScreen, { manager });
771
- if (state.phase === "error" || state.phase === "exhausted") return /* @__PURE__ */ u(ErrorScreen, {
779
+ if (state.phase === "error" || state.phase === "exhausted") return /* @__PURE__ */ u(ErrorScreen$1, {
772
780
  manager,
773
781
  state
774
782
  });
775
783
  return null;
776
784
  };
777
785
  //#endregion
786
+ //#region src/modules/id/deviceWallet/errorScreen.tsx
787
+ /**
788
+ * Failure screen for the device-wallet (mDL) handshake. Renders the shared
789
+ * `VerificationResult` (same look as the digital-ID redirect failure screen)
790
+ * with per-reason copy. Keys are static literals so i18nexus can extract them
791
+ * (author EN + supported locales in i18nexus); the subtitle keys match the
792
+ * core `DEVICE_WALLET_ERROR_KEYS` map, kept local here — like
793
+ * `digitalIdRedirect/failureScreen.tsx` — to avoid a runtime value import
794
+ * from `@incodetech/core`. Failure is non-blocking: retry restarts the
795
+ * handshake, or fall back to the ID-Capture chooser.
796
+ */
797
+ var COPY_KEYS$1 = {
798
+ UNSUPPORTED_PLATFORM: {
799
+ title: "idv2.deviceWallet.unsupportedPlatformTitle",
800
+ subtitle: "idv2.deviceWallet.unsupportedPlatformDescription"
801
+ },
802
+ NO_CREDENTIAL: {
803
+ title: "idv2.deviceWallet.noCredentialTitle",
804
+ subtitle: "idv2.deviceWallet.noCredentialDescription"
805
+ },
806
+ WALLET_ERROR: {
807
+ title: "idv2.deviceWallet.errorTitle",
808
+ subtitle: "idv2.deviceWallet.errorDescription"
809
+ }
810
+ };
811
+ var GENERIC_KEYS$1 = {
812
+ title: "idv2.deviceWallet.errorTitle",
813
+ subtitle: "idv2.deviceWallet.errorDescription"
814
+ };
815
+ var ErrorScreen = ({ failReason, onRetry, onUseAnotherMethod }) => {
816
+ const { t } = useTranslation();
817
+ const { title, subtitle } = failReason ? COPY_KEYS$1[failReason] : GENERIC_KEYS$1;
818
+ const canRetry = failReason !== "UNSUPPORTED_PLATFORM";
819
+ return /* @__PURE__ */ u(VerificationResult, {
820
+ status: "failure",
821
+ failureTitle: t(title),
822
+ errorMessage: t(subtitle),
823
+ onRetry: canRetry ? onRetry : void 0,
824
+ retryLabel: t("common.tryAgain"),
825
+ onSkip: onUseAnotherMethod,
826
+ skipLabel: t("idv2.deviceWallet.useAnotherMethodButton")
827
+ });
828
+ };
829
+ //#endregion
830
+ //#region src/modules/id/deviceWallet/deviceWallet.tsx
831
+ /**
832
+ * Device-wallet (mDL) handshake rendered INSIDE ID-Capture as a child machine
833
+ * — mirrors `digitalIdRedirect/digitalIdRedirect.tsx`. The core child owns
834
+ * request → wallet sheet → decrypt; this layer only renders the phase. During
835
+ * `presenting` the OS wallet sheet covers the page, so a spinner is all the
836
+ * page itself needs.
837
+ */
838
+ var DeviceWallet = ({ manager, state }) => {
839
+ if (state.phase === "failed") return /* @__PURE__ */ u(ErrorScreen, {
840
+ failReason: state.failReason,
841
+ onRetry: () => manager.deviceWalletRetry(),
842
+ onUseAnotherMethod: () => manager.deviceWalletUseAnotherMethod()
843
+ });
844
+ return /* @__PURE__ */ u(TransitionSpinner, { hideText: true });
845
+ };
846
+ //#endregion
847
+ //#region src/modules/id/digitalIdRedirect/failureScreen.tsx
848
+ /**
849
+ * Failure screen for the digital-ID web-redirect (Trinsic iDIN/FTN). Renders the
850
+ * shared `VerificationResult` (same look as ekyc/ekyb) with the module's own
851
+ * per-reason copy. Copy is i18nexus-keyed under
852
+ * `idv2.digitalIdRedirect.failureScreen.*` (add EN, plus NL for iDIN and FI/SV
853
+ * for FTN, in i18nexus). Failure is non-blocking: retry (new session/billing
854
+ * event) or use another method (back to the ID-Capture chooser).
855
+ *
856
+ * The nine `failureReason`s collapse into six copy groups; keys are written as
857
+ * static literals so i18nexus can extract them. A translator can split a group
858
+ * into per-reason copy later without a code change.
859
+ */
860
+ var COPY_KEYS = {
861
+ USER_CANCELED: {
862
+ title: "idv2.digitalIdRedirect.failureScreen.canceled.title",
863
+ subtitle: "idv2.digitalIdRedirect.failureScreen.canceled.subtitle"
864
+ },
865
+ RP_CANCELED: {
866
+ title: "idv2.digitalIdRedirect.failureScreen.canceled.title",
867
+ subtitle: "idv2.digitalIdRedirect.failureScreen.canceled.subtitle"
868
+ },
869
+ AUTHENTICATION_FAILED: {
870
+ title: "idv2.digitalIdRedirect.failureScreen.authenticationFailed.title",
871
+ subtitle: "idv2.digitalIdRedirect.failureScreen.authenticationFailed.subtitle"
872
+ },
873
+ VERIFICATION_FAILED: {
874
+ title: "idv2.digitalIdRedirect.failureScreen.verificationFailed.title",
875
+ subtitle: "idv2.digitalIdRedirect.failureScreen.verificationFailed.subtitle"
876
+ },
877
+ SESSION_EXPIRED: {
878
+ title: "idv2.digitalIdRedirect.failureScreen.sessionExpired.title",
879
+ subtitle: "idv2.digitalIdRedirect.failureScreen.sessionExpired.subtitle"
880
+ },
881
+ SESSION_TOKEN_EXPIRED: {
882
+ title: "idv2.digitalIdRedirect.failureScreen.sessionExpired.title",
883
+ subtitle: "idv2.digitalIdRedirect.failureScreen.sessionExpired.subtitle"
884
+ },
885
+ PROVIDER_INTERNAL_ERROR: {
886
+ title: "idv2.digitalIdRedirect.failureScreen.technicalError.title",
887
+ subtitle: "idv2.digitalIdRedirect.failureScreen.technicalError.subtitle"
888
+ },
889
+ RESULTS_EXCHANGE_FAILED: {
890
+ title: "idv2.digitalIdRedirect.failureScreen.technicalError.title",
891
+ subtitle: "idv2.digitalIdRedirect.failureScreen.technicalError.subtitle"
892
+ },
893
+ INVALID_REDIRECT_RESULT: {
894
+ title: "idv2.digitalIdRedirect.failureScreen.technicalError.title",
895
+ subtitle: "idv2.digitalIdRedirect.failureScreen.technicalError.subtitle"
896
+ }
897
+ };
898
+ var GENERIC_KEYS = {
899
+ title: "idv2.digitalIdRedirect.failureScreen.generic.title",
900
+ subtitle: "idv2.digitalIdRedirect.failureScreen.generic.subtitle"
901
+ };
902
+ var FailureScreen = ({ failureReason, onRetry, onUseAnotherMethod }) => {
903
+ const { t } = useTranslation();
904
+ const copy = failureReason ? COPY_KEYS[failureReason] : GENERIC_KEYS;
905
+ return /* @__PURE__ */ u(VerificationResult, {
906
+ status: "failure",
907
+ failureTitle: t(copy.title),
908
+ errorMessage: t(copy.subtitle),
909
+ onRetry,
910
+ retryLabel: t("common.tryAgain"),
911
+ onSkip: onUseAnotherMethod,
912
+ skipLabel: t("idv2.digitalIdRedirect.failureScreen.useAnotherMethod")
913
+ });
914
+ };
915
+ //#endregion
916
+ //#region src/modules/id/digitalIdRedirect/redirectingScreen.tsx
917
+ /**
918
+ * Performs the full-page redirect out to the identity provider (bank login).
919
+ * Full-page navigation lives in L2, so core stays window-free. The pending
920
+ * verificationId was already persisted by the core child machine (its
921
+ * `persisting` state) before this screen renders, so the return leg can recover
922
+ * it from storage after the reload.
923
+ */
924
+ var RedirectingScreen = ({ launchUrl }) => {
925
+ y(() => {
926
+ if (launchUrl && launchUrl.startsWith("https://")) window.location.assign(launchUrl);
927
+ }, [launchUrl]);
928
+ return /* @__PURE__ */ u(TransitionSpinner, { hideText: true });
929
+ };
930
+ //#endregion
931
+ //#region src/modules/id/digitalIdRedirect/successScreen.tsx
932
+ /**
933
+ * Success confirmation for the digital-ID web-redirect (Trinsic iDIN/FTN).
934
+ * Renders the shared `VerificationResult` (same look as ekyc/ekyb) with a manual
935
+ * Continue action — the child machine parks in `succeeded` until the user
936
+ * acknowledges, so the flow does not silently skip past the result.
937
+ *
938
+ * Copy is i18nexus-keyed under `idv2.digitalIdRedirect.successScreen.*`
939
+ * (add EN, plus NL for iDIN and FI/SV for FTN, in i18nexus).
940
+ */
941
+ var SuccessScreen = ({ onContinue }) => {
942
+ const { t } = useTranslation();
943
+ return /* @__PURE__ */ u(VerificationResult, {
944
+ status: "success",
945
+ successTitle: t("idv2.digitalIdRedirect.successScreen.title"),
946
+ successSubtitle: t("idv2.digitalIdRedirect.successScreen.subtitle"),
947
+ onContinue,
948
+ continueLabel: t("idv2.digitalIdRedirect.successScreen.continue")
949
+ });
950
+ };
951
+ //#endregion
952
+ //#region src/modules/id/digitalIdRedirect/digitalIdRedirect.tsx
953
+ /**
954
+ * Digital ID web-redirect (Trinsic iDIN/FTN) rendered INSIDE ID-Capture as a
955
+ * child machine — mirrors `digitalIdUpload/digitalIdUpload.tsx`. The core child
956
+ * owns create → persist → redirect (and, on the return leg, submit → poll); this
957
+ * layer only renders the phase and performs the full-page navigation.
958
+ */
959
+ var DigitalIdRedirect = ({ manager, state }) => {
960
+ if (state.phase === "redirecting") return /* @__PURE__ */ u(RedirectingScreen, { launchUrl: state.launchUrl ?? "" });
961
+ if (state.phase === "success") return /* @__PURE__ */ u(SuccessScreen, { onContinue: () => manager.digitalIdRedirectContinue() });
962
+ if (state.phase === "failed") return /* @__PURE__ */ u(FailureScreen, {
963
+ failureReason: state.failureReason,
964
+ onRetry: () => manager.digitalIdRedirectRetry(),
965
+ onUseAnotherMethod: () => manager.digitalIdRedirectUseAnotherMethod()
966
+ });
967
+ if (state.phase === "error") return /* @__PURE__ */ u(FailureScreen, {
968
+ onRetry: () => manager.digitalIdRedirectRetry(),
969
+ onUseAnotherMethod: () => manager.digitalIdRedirectUseAnotherMethod()
970
+ });
971
+ return /* @__PURE__ */ u(TransitionSpinner, { hideText: true });
972
+ };
973
+ //#endregion
778
974
  //#region src/modules/id/manualUpload/manualUploadError.tsx
779
975
  /**
780
976
  * Inline validation message for the manual-upload flow. Rendered directly
@@ -971,27 +1167,23 @@ var UploadTab = ({ mode, manager, state, errorMessageId }) => {
971
1167
  const isUploadingBack = state.uploadingSide === "back";
972
1168
  return /* @__PURE__ */ u("div", {
973
1169
  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
- ]
1170
+ children: [state.showFrontSlot !== false && /* @__PURE__ */ u(k, { children: [/* @__PURE__ */ u(UploadButton, {
1171
+ icon: /* @__PURE__ */ u(IdFrontIcon, {}),
1172
+ label: slotLabel("front", isUploadingFront, state.frontUploaded),
1173
+ uploaded: state.frontUploaded,
1174
+ uploading: isUploadingFront,
1175
+ testId: "manual-upload-front",
1176
+ onFile: (file) => manager.manualUploadSelectFile("front", file),
1177
+ ...slotErrorProps("front")
1178
+ }), slotError("front")] }), state.showBackSlot && /* @__PURE__ */ u(k, { children: [/* @__PURE__ */ u(UploadButton, {
1179
+ icon: /* @__PURE__ */ u(IdBackIcon, {}),
1180
+ label: slotLabel("back", isUploadingBack, state.backUploaded),
1181
+ uploaded: state.backUploaded,
1182
+ uploading: isUploadingBack,
1183
+ testId: "manual-upload-back",
1184
+ onFile: (file) => manager.manualUploadSelectFile("back", file),
1185
+ ...slotErrorProps("back")
1186
+ }), slotError("back")] })]
995
1187
  });
996
1188
  };
997
1189
  //#endregion
@@ -1099,17 +1291,307 @@ function preloadIdTutorialAssets() {
1099
1291
  "id.tutorial.back",
1100
1292
  "id.tutorial.passport"
1101
1293
  ]);
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);
1294
+ preloadAnimations(["id.processing"], "horizontal");
1295
+ preloadAnimations(["id.processing"], "vertical");
1296
+ import("../id-tutorial-IhmAzrIF.js");
1297
+ import("../back-tutorial-XdmQ0Wml.js");
1298
+ import("../passport-tutorial-61vlloJS.js");
1299
+ import("../id-back-of-card-B6EcmiCs.js").then((n) => n.n);
1300
+ import("../id-back-of-card-vertical-B3FXhPpj.js").then((n) => n.n);
1301
+ import("../id-front-of-card-V_BlLaZr.js").then((n) => n.n);
1302
+ import("../id-front-of-card-vertical-CuZjL8kc.js").then((n) => n.n);
1303
+ }
1304
+ //#endregion
1305
+ //#region src/modules/id/tutorialWithPermissions/howItWorksOverlay.constants.ts
1306
+ var HOW_IT_WORKS_TITLE_ID = "how-it-works-title";
1307
+ var HOW_IT_WORKS_INSTRUCTIONS_LABELS = {
1308
+ TITLE: "idv2.tutorial.howItWorks.title",
1309
+ SUBTITLE: "idv2.tutorial.howItWorks.subtitle",
1310
+ STEP_1: "idv2.tutorial.howItWorks.instructions.step1",
1311
+ STEP_2: "idv2.tutorial.howItWorks.instructions.step2",
1312
+ STEP_3: "idv2.tutorial.howItWorks.instructions.step3",
1313
+ START_SCAN: "idv2.tutorial.startScan"
1314
+ };
1315
+ var HOW_IT_WORKS_INSTRUCTIONS = [
1316
+ {
1317
+ icon: SvgReloadIcon,
1318
+ labelKey: HOW_IT_WORKS_INSTRUCTIONS_LABELS.STEP_1
1319
+ },
1320
+ {
1321
+ icon: SvgPersonCardIcon,
1322
+ labelKey: HOW_IT_WORKS_INSTRUCTIONS_LABELS.STEP_2
1323
+ },
1324
+ {
1325
+ icon: SvgCheckV2Icon,
1326
+ labelKey: HOW_IT_WORKS_INSTRUCTIONS_LABELS.STEP_3
1327
+ }
1328
+ ];
1329
+ //#endregion
1330
+ //#region src/modules/id/tutorialWithPermissions/howItWorksOverlay.tsx
1331
+ function HowItWorksContent({ onContinue, isLoading }) {
1332
+ const { t } = useTranslation();
1333
+ return /* @__PURE__ */ u("div", {
1334
+ class: "IncodeHowItWorksOverlay",
1335
+ "data-testid": "how-it-works-overlay",
1336
+ children: [
1337
+ /* @__PURE__ */ u("div", {
1338
+ class: "IncodeHowItWorksOverlayHeader",
1339
+ children: [/* @__PURE__ */ u(AutoFocusTitle, {
1340
+ id: HOW_IT_WORKS_TITLE_ID,
1341
+ className: "IncodeHowItWorksOverlayTitle",
1342
+ children: t(HOW_IT_WORKS_INSTRUCTIONS_LABELS.TITLE)
1343
+ }), /* @__PURE__ */ u(TypographyP, {
1344
+ className: "IncodeHowItWorksOverlaySubtitle",
1345
+ children: t(HOW_IT_WORKS_INSTRUCTIONS_LABELS.SUBTITLE)
1346
+ })]
1347
+ }),
1348
+ /* @__PURE__ */ u("ul", {
1349
+ class: "IncodeHowItWorksOverlayInstructions",
1350
+ children: HOW_IT_WORKS_INSTRUCTIONS.map(({ icon: Icon, labelKey }) => /* @__PURE__ */ u("li", {
1351
+ class: "IncodeHowItWorksOverlayInstruction",
1352
+ children: [/* @__PURE__ */ u("div", {
1353
+ class: "IncodeHowItWorksOverlayInstructionIcon",
1354
+ "aria-hidden": "true",
1355
+ children: /* @__PURE__ */ u(Icon, {
1356
+ height: 24,
1357
+ width: 24
1358
+ })
1359
+ }), /* @__PURE__ */ u("span", { children: t(labelKey) })]
1360
+ }, labelKey))
1361
+ }),
1362
+ /* @__PURE__ */ u("div", {
1363
+ class: "IncodeHowItWorksOverlayActions",
1364
+ children: /* @__PURE__ */ u(Button, {
1365
+ onClick: onContinue,
1366
+ disabled: isLoading,
1367
+ isLoading,
1368
+ class: "IncodeHowItWorksOverlayActionButton",
1369
+ children: t(HOW_IT_WORKS_INSTRUCTIONS_LABELS.START_SCAN)
1370
+ })
1371
+ }),
1372
+ /* @__PURE__ */ u("div", {
1373
+ class: "IncodeHowItWorksOverlayFooter",
1374
+ children: /* @__PURE__ */ u(VerifiedByIncodeLogo, {})
1375
+ })
1376
+ ]
1377
+ });
1378
+ }
1379
+ var HowItWorksOverlay = ({ isOpen, onClose, onContinue, isLoading = false }) => {
1380
+ const isMobileWidth = useIsMobileDeviceWidth();
1381
+ const handleClose = isLoading ? void 0 : onClose;
1382
+ if (!isOpen) return null;
1383
+ if (isMobileWidth) return /* @__PURE__ */ u(BottomSheet, {
1384
+ isOpen: true,
1385
+ labelledById: HOW_IT_WORKS_TITLE_ID,
1386
+ manageInitialFocus: false,
1387
+ onClose: handleClose,
1388
+ "data-testid": "how-it-works-sheet",
1389
+ children: /* @__PURE__ */ u(HowItWorksContent, {
1390
+ onContinue,
1391
+ isLoading
1392
+ })
1393
+ });
1394
+ return /* @__PURE__ */ u(Modal.Root, {
1395
+ open: true,
1396
+ dismissible: !isLoading,
1397
+ labelledById: HOW_IT_WORKS_TITLE_ID,
1398
+ manageInitialFocus: false,
1399
+ onOpenChange: (open) => {
1400
+ if (!open) handleClose?.();
1401
+ },
1402
+ children: /* @__PURE__ */ u(Modal.Content, { children: /* @__PURE__ */ u(HowItWorksContent, {
1403
+ onContinue,
1404
+ isLoading
1405
+ }) })
1406
+ });
1407
+ };
1408
+ //#endregion
1409
+ //#region src/modules/id/tutorialWithPermissions/tutorialWithPermissions.tsx
1410
+ /**
1411
+ * Variant-specific overlay / CTA slots for the permission UX family.
1412
+ * Layer exclusivity means only one of IDC-01 / IDC-02 is active — `else if`
1413
+ * keeps that invariant in the UI composition.
1414
+ */
1415
+ function createSlots({ manager, stage, howItWorksOpen, onOpenHowItWorks, onCloseHowItWorks, onContinue, t }) {
1416
+ let permissionDialog = null;
1417
+ let howItWorksOverlay = null;
1418
+ let actions = null;
1419
+ if (stage.ux.id === CAMERA_PERMISSION_UX.PERMISSION_SHEET && stage.permissionStatus) permissionDialog = /* @__PURE__ */ u(PermissionsDialog, {
1420
+ manager,
1421
+ permissionStatus: stage.permissionStatus,
1422
+ isDismissible: true
1423
+ });
1424
+ else if (stage.ux.id === CAMERA_PERMISSION_UX.HOW_IT_WORKS) {
1425
+ const isRequesting = stage.permissionStatus === PERMISSION_DIALOG_STATUS.REQUESTING;
1426
+ actions = /* @__PURE__ */ u(Button, {
1427
+ variant: "link",
1428
+ onClick: onOpenHowItWorks,
1429
+ children: t("idv2.tutorial.howItWorks.link")
1430
+ });
1431
+ howItWorksOverlay = /* @__PURE__ */ u(HowItWorksOverlay, {
1432
+ isOpen: howItWorksOpen,
1433
+ onClose: onCloseHowItWorks,
1434
+ onContinue,
1435
+ isLoading: isRequesting
1436
+ });
1437
+ }
1438
+ return {
1439
+ permissionDialog,
1440
+ howItWorksOverlay,
1441
+ actions
1442
+ };
1443
+ }
1444
+ var TutorialWithPermissions = ({ manager, stage }) => {
1445
+ const { t } = useTranslation();
1446
+ const [howItWorksOpen, setHowItWorksOpen] = d(false);
1447
+ const isHowItWorks = stage.ux.id === CAMERA_PERMISSION_UX.HOW_IT_WORKS;
1448
+ const isCtaLoading = stage.tutorialPhase !== null ? CONTINUING_TUTORIAL_PHASES.has(stage.tutorialPhase) || stage.ux.id === CAMERA_PERMISSION_UX.PENDING : true;
1449
+ const requestPermissionFromTutorial = () => manager.requestPermission();
1450
+ function handleContinue() {
1451
+ if (isHowItWorks) {
1452
+ requestPermissionFromTutorial();
1453
+ return;
1454
+ }
1455
+ manager.nextStep();
1456
+ }
1457
+ const slots = createSlots({
1458
+ manager,
1459
+ stage,
1460
+ howItWorksOpen,
1461
+ onOpenHowItWorks: () => setHowItWorksOpen(true),
1462
+ onCloseHowItWorks: () => setHowItWorksOpen(false),
1463
+ onContinue: handleContinue,
1464
+ t
1465
+ });
1466
+ let disclaimerText = void 0;
1467
+ if (isHowItWorks) disclaimerText = t("idv2.tutorial.v2.allowCameraAccessDisclaimer");
1468
+ return /* @__PURE__ */ u(k, { children: [
1469
+ /* @__PURE__ */ u(Tutorial, {
1470
+ manager,
1471
+ documentType: stage.documentType,
1472
+ mode: stage.mode,
1473
+ isLoading: isCtaLoading,
1474
+ actionsSlot: slots.actions,
1475
+ onContinue: handleContinue,
1476
+ disclaimerText,
1477
+ shouldScaleAnimationContainer: true
1478
+ }),
1479
+ slots.permissionDialog,
1480
+ slots.howItWorksOverlay
1481
+ ] });
1482
+ };
1483
+ //#endregion
1484
+ //#region src/modules/id/experiments/useCameraPermissionUx.ts
1485
+ /** Permission surfaces the treatment can alter — the dialog ones, not the full-screen ones. */
1486
+ function isPermissionDialogSurface(state) {
1487
+ 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);
1488
+ }
1489
+ /**
1490
+ * `permissions.idle` collapsed into `status: 'loading'` — the silent
1491
+ * re-check between the tutorial CTA and the permission dialog. It remains a
1492
+ * treatment surface so the tutorial can stay mounted while that check runs.
1493
+ */
1494
+ function isPermissionsIdleBlip(state) {
1495
+ return state.status === ID_CAPTURE_STATUS.LOADING && state.phase === ID_CAPTURE_LOADING_PHASE.PERMISSIONS_IDLE;
1496
+ }
1497
+ function isCameraDocumentType(documentType) {
1498
+ return documentType === "id" || documentType === "passport";
1499
+ }
1500
+ /**
1501
+ * Positive population rule shared by every observable camera-path state.
1502
+ * Core supplies an effective document type for direct-entry flows, while
1503
+ * explicit manual and Digital-ID selections stay non-camera and are excluded.
1504
+ */
1505
+ function getCameraPermissionExperimentContext(state) {
1506
+ switch (state.status) {
1507
+ case ID_CAPTURE_STATUS.TUTORIAL:
1508
+ case ID_CAPTURE_STATUS.LOADING:
1509
+ case ID_CAPTURE_STATUS.PERMISSIONS:
1510
+ case ID_CAPTURE_STATUS.CAPTURE: break;
1511
+ default: return;
1512
+ }
1513
+ if (!isCameraDocumentType(state.selectedDocumentType)) return;
1514
+ return { tutorialEnabled: state.status === ID_CAPTURE_STATUS.TUTORIAL ? true : state.tutorialEnabled };
1515
+ }
1516
+ function isCameraPermissionTreatmentSurface(state) {
1517
+ if (state.status === ID_CAPTURE_STATUS.TUTORIAL) return true;
1518
+ if (isPermissionsIdleBlip(state)) return state.tutorialEnabled;
1519
+ return isPermissionDialogSurface(state) && state.tutorialEnabled;
1520
+ }
1521
+ function collapseCameraPermissionUx(showHowItWorks, showPermissionSheet) {
1522
+ if (showHowItWorks) return { id: CAMERA_PERMISSION_UX.HOW_IT_WORKS };
1523
+ if (showPermissionSheet) return { id: CAMERA_PERMISSION_UX.PERMISSION_SHEET };
1524
+ return { id: CAMERA_PERMISSION_UX.CONTROL };
1525
+ }
1526
+ function useCameraPermissionUx(state) {
1527
+ const experimentContext = getCameraPermissionExperimentContext(state);
1528
+ const experimentEnabled = experimentContext !== void 0;
1529
+ const onTreatmentSurface = experimentEnabled && isCameraPermissionTreatmentSurface(state);
1530
+ const howItWorksExperiment = useIdExperiment({
1531
+ key: "cameraPermissionHowItWorks",
1532
+ enabled: experimentEnabled,
1533
+ conditions: experimentContext
1534
+ });
1535
+ const permissionSheetExperiment = useIdExperiment({
1536
+ key: "cameraPermissionSheet",
1537
+ enabled: experimentEnabled,
1538
+ conditions: experimentContext
1539
+ });
1540
+ if (!onTreatmentSurface) return { id: CAMERA_PERMISSION_UX.CONTROL };
1541
+ if (howItWorksExperiment.status === EXPERIMENT_LIFECYCLE_STATUS.PENDING || permissionSheetExperiment.status === EXPERIMENT_LIFECYCLE_STATUS.PENDING) return { id: CAMERA_PERMISSION_UX.PENDING };
1542
+ return collapseCameraPermissionUx(howItWorksExperiment.params.showHowItWorks, permissionSheetExperiment.params.showPermissionSheet);
1543
+ }
1544
+ //#endregion
1545
+ //#region src/modules/id/useIdTutorialWithPermissionsUxStage.ts
1546
+ /**
1547
+ * Which arm-specific permission statuses keep the tutorial mounted as a
1548
+ * backdrop behind the dialog surface. IDC-01 shows its sheet across the
1549
+ * whole idle/motionOnly/requesting range; IDC-02 has no dialog of its own —
1550
+ * only the native prompt (`requesting`) sits over the tutorial. Dismissing
1551
+ * that prompt (→ `waitingForUser`) falls through to the standard full-screen
1552
+ * explainer instead of leaving IDC-02 on a dead-end tutorial.
1553
+ */
1554
+ function isDialogBackdropStatus(ux, permissionStatus) {
1555
+ if (ux.id === CAMERA_PERMISSION_UX.HOW_IT_WORKS) return permissionStatus === PERMISSION_DIALOG_STATUS.REQUESTING;
1556
+ 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;
1557
+ return false;
1558
+ }
1559
+ /**
1560
+ * Resolves when `TutorialWithPermissions` should render instead of the plain
1561
+ * tutorial or permissions screens.
1562
+ *
1563
+ * - Default (non-experimental): `state.status === 'tutorial'`.
1564
+ * - Camera-permission experiment: permissions dialog with tutorial backdrop
1565
+ * when `tutorialEnabled` and the treatment is not control.
1566
+ */
1567
+ function useIdTutorialWithPermissionsUxStage(state) {
1568
+ const ux = useCameraPermissionUx(state);
1569
+ 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 {
1570
+ documentType: state.selectedDocumentType,
1571
+ mode: state.currentMode,
1572
+ ux,
1573
+ tutorialPhase: null,
1574
+ permissionStatus: "checking"
1575
+ };
1576
+ if (state.status === ID_CAPTURE_STATUS.TUTORIAL) return {
1577
+ documentType: state.selectedDocumentType,
1578
+ mode: state.currentMode,
1579
+ ux,
1580
+ tutorialPhase: state.phase,
1581
+ permissionStatus: null
1582
+ };
1583
+ if (state.status === ID_CAPTURE_STATUS.PERMISSIONS && state.tutorialEnabled && isDialogBackdropStatus(ux, state.permissionStatus)) return {
1584
+ documentType: state.selectedDocumentType,
1585
+ mode: state.currentMode,
1586
+ ux,
1587
+ tutorialPhase: null,
1588
+ permissionStatus: state.permissionStatus
1589
+ };
1590
+ return null;
1109
1591
  }
1110
1592
  //#endregion
1111
1593
  //#region src/modules/id/id.tsx
1112
- var MandatoryConsent = z(() => import("../mandatoryConsent-CxShVycM.js").then((module) => ({ default: module.MandatoryConsent })));
1594
+ var MandatoryConsent = z(() => import("../mandatoryConsent-BJcDf3s-.js").then((module) => ({ default: module.MandatoryConsent })));
1113
1595
  var IdContent = ({ config, manager: externalManager, onFinish, onError }) => {
1114
1596
  usePreloadDisplayFont();
1115
1597
  y(() => {
@@ -1129,19 +1611,26 @@ var IdContent = ({ config, manager: externalManager, onFinish, onError }) => {
1129
1611
  onFinish,
1130
1612
  onError
1131
1613
  });
1614
+ const tutorialWithPermissionsUxStage = useIdTutorialWithPermissionsUxStage(state);
1615
+ const isPreparingCameraLoader = state.status === "loading" && tutorialWithPermissionsUxStage?.ux.id !== CAMERA_PERMISSION_UX.PERMISSION_SHEET;
1616
+ const { params: darkCameraLoadingParams } = useIdExperiment({
1617
+ key: "darkCameraLoading",
1618
+ enabled: isPreparingCameraLoader
1619
+ });
1132
1620
  if (state.status === "idle") return /* @__PURE__ */ u(TransitionSpinner, { renderMode: "spinnerOnly" });
1133
- if (state.status === "loading") return /* @__PURE__ */ u(TransitionSpinner, {
1621
+ if (isPreparingCameraLoader) return /* @__PURE__ */ u(TransitionSpinner, {
1134
1622
  titleKey: "loadingCircle.holdOn",
1135
- subtitleKey: "loadingCircle.preparingCamera"
1623
+ subtitleKey: "loadingCircle.preparingCamera",
1624
+ alwaysDark: darkCameraLoadingParams.showDarkCameraLoading
1136
1625
  });
1137
1626
  if (state.status === "chooser") return /* @__PURE__ */ u(Chooser, {
1138
1627
  manager,
1139
1628
  state
1140
1629
  });
1141
1630
  if (state.status === "ageVerification") return /* @__PURE__ */ u(AgeVerification, { manager });
1142
- if (state.status === "tutorial") return /* @__PURE__ */ u(Tutorial, {
1631
+ if (tutorialWithPermissionsUxStage) return /* @__PURE__ */ u(TutorialWithPermissions, {
1143
1632
  manager,
1144
- state
1633
+ stage: tutorialWithPermissionsUxStage
1145
1634
  });
1146
1635
  if (state.status === "permissions") return /* @__PURE__ */ u(Permissions, {
1147
1636
  manager,
@@ -1184,15 +1673,40 @@ var IdContent = ({ config, manager: externalManager, onFinish, onError }) => {
1184
1673
  manager,
1185
1674
  state
1186
1675
  });
1676
+ if (state.status === "digitalIdRedirect") return /* @__PURE__ */ u(DigitalIdRedirect, {
1677
+ manager,
1678
+ state
1679
+ });
1680
+ if (state.status === "deviceWallet") return /* @__PURE__ */ u(DeviceWallet, {
1681
+ manager,
1682
+ state
1683
+ });
1187
1684
  return null;
1188
1685
  };
1189
1686
  var IdWithLocalConfig = ({ config, manager, onFinish, onError }) => {
1190
- return /* @__PURE__ */ u(IncodeComponent, { children: config || manager ? /* @__PURE__ */ u(IdContent, {
1191
- config,
1687
+ const runsOwnSecondIdSequence = !useHasResolvedConfig() && !manager && config?.secondId === true && config?.isSecondId !== true;
1688
+ const [round, setRound] = d("first");
1689
+ const handleFinish = q((output) => {
1690
+ if (runsOwnSecondIdSequence && round === "first") {
1691
+ setRound("second");
1692
+ return;
1693
+ }
1694
+ onFinish?.(output);
1695
+ }, [
1696
+ runsOwnSecondIdSequence,
1697
+ round,
1698
+ onFinish
1699
+ ]);
1700
+ const resolvedConfig = runsOwnSecondIdSequence && round === "second" ? {
1701
+ ...config,
1702
+ isSecondId: true
1703
+ } : config;
1704
+ return /* @__PURE__ */ u(IncodeComponent, { children: resolvedConfig || manager ? /* @__PURE__ */ u(IdContent, {
1705
+ config: resolvedConfig,
1192
1706
  manager,
1193
- onFinish,
1707
+ onFinish: handleFinish,
1194
1708
  onError
1195
- }) : null });
1709
+ }, runsOwnSecondIdSequence ? round : void 0) : null });
1196
1710
  };
1197
1711
  var Id = withStandaloneModuleBootstrap(IdWithLocalConfig, "ID", { supportsExternalManager: true });
1198
1712
  registerIncodeModuleElement(Id, "incode-id");