@incodetech/web 2.1.1 → 2.2.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 (205) hide show
  1. package/dist/ae-signature/ae-signature.es.js +7 -4
  2. package/dist/antifraud/antifraud.es.js +6 -6
  3. package/dist/authentication/authentication.es.js +7 -7
  4. package/dist/{autoFocusTitle-CuRu2lPg.js → autoFocusTitle-gLba2mgp.js} +6 -3
  5. package/dist/{back-horizontal-hint-xTnSQbzn.js → back-horizontal-hint-BBGuJ75y.js} +1 -1
  6. package/dist/{back-vertical-hint-BWWlHfX2.js → back-vertical-hint-B9usJ5lY.js} +1 -1
  7. package/dist/base.css +425 -3290
  8. package/dist/{bottomSheet-CnWbbUAM.js → bottomSheet-Cp8DLulN.js} +7 -8
  9. package/dist/certificate-issuance/certificate-issuance.es.js +34 -87
  10. package/dist/certificate-issuance/styles.css +0 -41
  11. package/dist/{checkbox-1wUHSoaK.js → checkbox-C38Elx0O.js} +5 -5
  12. package/dist/connectionError-DAeXp8sE.js +45 -0
  13. package/dist/consent/consent.es.js +10 -12
  14. package/dist/consent/styles.css +5 -4
  15. package/dist/{countrySelector-SvUOyPo0.js → countrySelector-2t-ZTgGo.js} +3 -3
  16. package/dist/cross-document-data-match/cross-document-data-match.es.js +13 -10
  17. package/dist/curp-validation/curp-validation.es.js +28 -29
  18. package/dist/curp-validation/styles.css +47 -0
  19. package/dist/{customFields-BDsXR7A-.js → customFields-B8HQZ7Mh.js} +13 -14
  20. package/dist/{customWatchlist-CYoRNCim.js → customWatchlist-_tUmZ855.js} +9 -9
  21. package/dist/dashboardTheme-CVliZSR-.js +223 -0
  22. package/dist/{dateInputComposed-DuaofcBl.js → dateInputComposed-eRcbt_SL.js} +5 -5
  23. package/dist/dateInputComposed-ks0-opuq.js +1 -0
  24. package/dist/document-capture/document-capture.es.js +1 -1
  25. package/dist/document-capture/styles.css +85 -70
  26. package/dist/{documentCapture-DhbO-A-V.js → documentCapture-BvEGCYj-.js} +218 -136
  27. package/dist/documentCapture-DdHdRPzR.js +2 -0
  28. package/dist/{dropdownComposed-CoU0enG6.js → dropdownComposed-OHDHzt1Q.js} +18 -11
  29. package/dist/dropdownComposed-kjG4UblM.js +1 -0
  30. package/dist/dynamic-forms/styles.css +58 -6
  31. package/dist/{dynamicForms-BifGbC9F.js → dynamicForms-P-4E42IA.js} +53 -45
  32. package/dist/ekyb/ekyb.es.js +1 -1
  33. package/dist/ekyb/styles.css +1 -28
  34. package/dist/ekybModule-CiaxFHXo.js +2 -0
  35. package/dist/{ekybModule-DGnTw5UV.js → ekybModule-DmjkzVWE.js} +51 -27
  36. package/dist/ekyc/ekyc.es.js +1 -1
  37. package/dist/ekyc/styles.css +2 -2
  38. package/dist/ekycModule-BVt10kgv.js +2 -0
  39. package/dist/{ekycModule-Dxpdd0ns.js → ekycModule-Da1Fm7ai.js} +45 -19
  40. package/dist/electronic-signature/electronic-signature.es.js +1 -1
  41. package/dist/{ae-signature → electronic-signature}/styles.css +2 -2
  42. package/dist/{electronic-signature-Ueoffasr.js → electronic-signature-yamI6zHM.js} +31 -23
  43. package/dist/email/email.es.js +10 -11
  44. package/dist/{emailInput-DsLkDtER.js → emailInput-B0P2Q-pk.js} +4 -4
  45. package/dist/{expiredId-BZXLrLk-.js → expiredId-BXXE3srN.js} +6 -6
  46. package/dist/{extensibility-7sRIN0JC.js → extensibility-iJYzpW6H.js} +440 -374
  47. package/dist/extensibility.es.js +24 -28
  48. package/dist/face-match/face-match.es.js +1 -1
  49. package/dist/face-match/styles.css +9 -609
  50. package/dist/faceMatch-D4XFihTc.js +2 -0
  51. package/dist/{faceMatch-DyTBoMDm.js → faceMatch-VtEZvsen.js} +71 -79
  52. package/dist/field-comparison/field-comparison.es.js +1 -1
  53. package/dist/fieldComparison-B_r9Bal7.js +2 -0
  54. package/dist/{fieldComparison-L_knHqgw.js → fieldComparison-NLdDSOEh.js} +11 -12
  55. package/dist/finalSuccessScreen-DryADx1n.js +500 -0
  56. package/dist/fiscal-qr/fiscal-qr.es.js +12 -12
  57. package/dist/flip-animation-CvN8FLNc.js +6996 -0
  58. package/dist/flow/flow.es.js +81 -45
  59. package/dist/flow/styles.css +908 -5423
  60. package/dist/{front-horizontal-hint-B84GgTO1.js → front-horizontal-hint-D3CrWViZ.js} +1 -1
  61. package/dist/{front-vertical-hint-Bs_avngq.js → front-vertical-hint-BoLZvyx5.js} +1 -1
  62. package/dist/geolocation/geolocation.es.js +36 -13
  63. package/dist/geolocation/styles.css +1 -1
  64. package/dist/government-validation/government-validation.es.js +11 -12
  65. package/dist/{homeScreen-B6T0JVh8.js → homeScreen-Pv3v_0ji.js} +7 -9
  66. package/dist/{icons-CJJbIpBq.js → icons--ezYG2Fb.js} +92 -7
  67. package/dist/id/id.es.js +222 -52
  68. package/dist/id/styles.css +290 -10
  69. package/dist/id-back-of-card-DO593HH8.js +83 -0
  70. package/dist/id-back-of-card-vertical-DArEQ0hE.js +88 -0
  71. package/dist/id-front-of-card-Bcit7Pnq.js +308 -0
  72. package/dist/id-front-of-card-vertical-Bcr-KXcl.js +278 -0
  73. package/dist/id-laser-h-BaUHzX-d.js +480 -0
  74. package/dist/{id-laser-v-BiUXkM4x.js → id-laser-v-Dv9yEYJE.js} +7 -17
  75. package/dist/id-selfie-flow/id-selfie-flow.es.js +239 -0
  76. package/dist/id-selfie-flow/styles.css +749 -0
  77. package/dist/id-verification/id-verification.es.js +13 -9
  78. package/dist/{idOcr-WFBvqy3b.js → idOcr-gsIXHq6R.js} +14 -15
  79. package/dist/identity-reuse/identity-reuse.es.js +6 -8
  80. package/dist/identity-reuse/styles.css +1 -1
  81. package/dist/{incode-logo-57XFniXU.js → incode-logo-rGFjZHqi.js} +64 -1
  82. package/dist/incodeComponent-K9ZWg302.js +713 -0
  83. package/dist/incodeModule-CcLzar_X.js +25 -0
  84. package/dist/index.es.js +16 -5
  85. package/dist/{inputComposed-C1R2LAa3.js → inputComposed-BeROn635.js} +9 -9
  86. package/dist/inputComposed-CADVQW-o.js +1 -0
  87. package/dist/{mandatoryConsent-D0GTKu-H.js → mandatoryConsent-BtqB-FxY.js} +9 -11
  88. package/dist/{capture-CkGvdDNH.js → manualCaptureButton-quGa2ufS.js} +68 -198
  89. package/dist/manualCaptureButton-t_oIol88.js +300 -0
  90. package/dist/{modal-OxkFuuiR.js → modal-BjjJFpZu.js} +4 -4
  91. package/dist/{modal.hooks-ZrzmHAUa.js → modal.hooks-BvXzNWvY.js} +1 -1
  92. package/dist/{numberedStep-CEb-lFJm.js → numberedStep-DUs77Gy3.js} +1 -1
  93. package/dist/{optionAccessibleLabel-gfF-58Mv.js → optionAccessibleLabel-DgfHD_mx.js} +6 -6
  94. package/dist/{otpInput-CnDc6pQm.js → otpInput-D5dLXrmC.js} +72 -36
  95. package/dist/{passport-horizontal-hint-Bj0ZJY0g.js → passport-horizontal-hint-DgnU-8bl.js} +1 -1
  96. package/dist/{passport-vertical-hint-Dfk77xUJ.js → passport-vertical-hint-Dd2Wknw7.js} +1 -1
  97. package/dist/{pdf-BqtJTlor.js → pdf-BUoY_2gv.js} +1 -1
  98. package/dist/pdfViewer-CZb6obcZ.js +2 -0
  99. package/dist/{pdfViewer-B97DmT9m.js → pdfViewer-vud1VZv6.js} +5 -7
  100. package/dist/phone/phone.es.js +13 -12
  101. package/dist/{phoneInputComposed-DMiXfF-1.js → phoneInputComposed-CeVWTS_O.js} +7 -6
  102. package/dist/{processing-BeUMfdJJ.js → processing-BsvHyDWa.js} +2 -2
  103. package/dist/qe-signature/qe-signature.es.js +7 -4
  104. package/dist/{radioGroupComposed-DuQxslB2.js → radioGroupComposed-DzNGUbZQ.js} +16 -15
  105. package/dist/redirect-to-mobile/redirect-to-mobile.es.js +132 -45
  106. package/dist/redirect-to-mobile/styles.css +20 -10
  107. package/dist/{registerIncodeElement-DaNjbAwZ.js → registerIncodeElement-BduCekz5.js} +1 -1
  108. package/dist/{richText-CB1fmegc.js → richText-CTHBpZOw.js} +3 -1607
  109. package/dist/selfie/selfie.es.js +10 -10
  110. package/dist/selfie/styles.css +16 -949
  111. package/dist/signature/signature.es.js +27 -19
  112. package/dist/{ae-signature/styles2.css → signature/styles.css} +4 -4
  113. package/dist/{snackbar-DS7Mv62v.js → snackbar-C9Mqrh0e.js} +2 -2
  114. package/dist/spacer-CDlQd12V.js +2344 -0
  115. package/dist/{spinner-BMeIEK1d.js → spinner-CLZ2fz4u.js} +45 -4
  116. package/dist/statusPage--GVFSUJp.js +36 -0
  117. package/dist/{successIcon-B5mGvdx1.js → successIcon-Bj8Y9CuI.js} +1 -1
  118. package/dist/{tabs-C__chW-u.js → tabs-DweBZTV2.js} +4 -3
  119. package/dist/themes/dark.css +35 -0
  120. package/dist/themes/light.css +35 -0
  121. package/dist/{tutorial-CCfPuVKX.js → tutorial-BZZC93Ur.js} +222 -180
  122. package/dist/types/ae-signature.d.ts +91 -5
  123. package/dist/types/antifraud.d.ts +86 -3
  124. package/dist/types/authentication.d.ts +86 -3
  125. package/dist/types/certificate-issuance.d.ts +86 -3
  126. package/dist/types/consent.d.ts +86 -3
  127. package/dist/types/cross-document-data-match.d.ts +88 -4
  128. package/dist/types/curp-validation.d.ts +86 -3
  129. package/dist/types/document-capture.d.ts +88 -4
  130. package/dist/types/ekyb.d.ts +88 -4
  131. package/dist/types/ekyc.d.ts +88 -4
  132. package/dist/types/electronic-signature.d.ts +87 -4
  133. package/dist/types/email.d.ts +82 -22
  134. package/dist/types/extensibility.d.ts +157 -5
  135. package/dist/types/face-match.d.ts +84 -22
  136. package/dist/types/field-comparison.d.ts +86 -3
  137. package/dist/types/fiscal-qr.d.ts +89 -5
  138. package/dist/types/flow.d.ts +92 -2
  139. package/dist/types/geolocation.d.ts +86 -3
  140. package/dist/types/government-validation.d.ts +86 -3
  141. package/dist/types/id-selfie-flow.d.ts +161 -0
  142. package/dist/types/id-verification.d.ts +87 -4
  143. package/dist/types/id.d.ts +88 -5
  144. package/dist/types/identity-reuse.d.ts +82 -2
  145. package/dist/types/index.d.ts +106 -1
  146. package/dist/types/phone.d.ts +83 -24
  147. package/dist/types/qe-signature.d.ts +91 -5
  148. package/dist/types/redirect-to-mobile.d.ts +4 -1
  149. package/dist/types/selfie.d.ts +86 -3
  150. package/dist/types/signature.d.ts +91 -5
  151. package/dist/types/video-selfie.d.ts +83 -6
  152. package/dist/types/watchlist.d.ts +91 -5
  153. package/dist/types/workflow.d.ts +85 -2
  154. package/dist/{i18n-CU4xq8qC.js → uiConfig-B5ASPUL4.js} +26 -3
  155. package/dist/{useModuleLoader-Bi26kJbg.js → useModuleLoader-D_YpuVsS.js} +37 -248
  156. package/dist/{vendor-preact-DThS2ZQ_.js → vendor-preact-mvwZ8mJj.js} +1 -1
  157. package/dist/{verificationResult-BWWkmeiA.js → verificationResult-B8HwR07t.js} +26 -15
  158. package/dist/video-selfie/styles.css +349 -1202
  159. package/dist/video-selfie/video-selfie.es.js +120 -381
  160. package/dist/watchlist/watchlist.es.js +16 -13
  161. package/dist/{watchlistForBusiness-D2Uo_TwF.js → watchlistForBusiness-D8Is99bZ.js} +12 -13
  162. package/dist/workflow/styles.css +501 -3977
  163. package/dist/workflow/workflow.es.js +25 -18
  164. package/package.json +22 -20
  165. package/dist/button-Dz6AsbmF.js +0 -40
  166. package/dist/cameraView-DIEzM5ru.js +0 -47
  167. package/dist/cpf-ocr/cpf-ocr.es.js +0 -2
  168. package/dist/cpf-ocr/styles.css +0 -45
  169. package/dist/cpfOcr-B79245-3.js +0 -2
  170. package/dist/cpfOcr-BhxT-lRN.js +0 -92
  171. package/dist/dateInputComposed-DRzZi6uy.js +0 -1
  172. package/dist/documentCapture-DXYYyxZl.js +0 -2
  173. package/dist/dropdownComposed-BAoxIIsE.js +0 -1
  174. package/dist/ekybModule-C6Nttked.js +0 -2
  175. package/dist/ekycModule-CDIEjI6V.js +0 -2
  176. package/dist/errorIcon-BA4T6iy-.js +0 -26
  177. package/dist/faceMatch-B_HvxLm_.js +0 -2
  178. package/dist/fieldComparison-DfNEuEE5.js +0 -2
  179. package/dist/flip-animation-CZYSUtMm.js +0 -6983
  180. package/dist/hooks-CNu7o-v8.js +0 -186
  181. package/dist/id-laser-h-CzPegPMn.js +0 -467
  182. package/dist/incodeComponent-CfzJGETt.js +0 -64
  183. package/dist/incodeModule-B-4_3JrK.js +0 -13
  184. package/dist/inputComposed-BaY5q9WM.js +0 -1
  185. package/dist/loadingIcon-B0ysgiNq.js +0 -148
  186. package/dist/page-DidH_RkX.js +0 -171
  187. package/dist/spinner-BCDCoi9C.js +0 -1
  188. package/dist/statusPage-Bk8nJwXV.js +0 -28
  189. package/dist/transitionSpinner-CuNCqHNi.js +0 -30
  190. package/dist/types/cpf-ocr.d.ts +0 -12
  191. package/dist/typography-BZIpjo97.js +0 -45
  192. package/dist/uiConfig-D2_wawvr.js +0 -25
  193. /package/dist/{aligndevicelottie-DFscByAI.js → aligndevicelottie-CfoZ5Uus.js} +0 -0
  194. /package/dist/{back-tutorial-cI_4VHmE.js → back-tutorial-BHyRHyET.js} +0 -0
  195. /package/dist/{backdevicelottie-COyhTrxM.js → backdevicelottie-yKkczgFy.js} +0 -0
  196. /package/dist/{blurdevicelottie-BLVeJHEG.js → blurdevicelottie-8BbophdM.js} +0 -0
  197. /package/dist/{browser-ponyfill-Df13Th-G.js → browser-ponyfill-CBjGwwPW.js} +0 -0
  198. /package/dist/{defineProperty-Qjefk7Uf.js → defineProperty-BbpBna-2.js} +0 -0
  199. /package/dist/{frontdevicelottie-B4tE2PYQ.js → frontdevicelottie-CFcahVLk.js} +0 -0
  200. /package/dist/{glaredevicelottie-D1pR73sx.js → glaredevicelottie-Cnvah0kz.js} +0 -0
  201. /package/dist/{id-tutorial-DwO90SAm.js → id-tutorial-BOOsXlAJ.js} +0 -0
  202. /package/dist/{lottie_light-C6B2ec41.js → lottie_light-Bv56F2Ae.js} +0 -0
  203. /package/dist/{passport-tutorial-D9JNsMsM.js → passport-tutorial-CeSup6m9.js} +0 -0
  204. /package/dist/{requiredLabelHint-D0RhuMed.js → requiredLabelHint-Dx0WS2cR.js} +0 -0
  205. /package/dist/{selfieTutorial-pB-N-fj5.js → selfieTutorial-CYa8bq6B.js} +0 -0
@@ -1,14 +1,12 @@
1
- import { n as useTranslation } from "../i18n-CU4xq8qC.js";
2
- import { h as q, v as u } from "../vendor-preact-DThS2ZQ_.js";
3
- import { c as useModuleTerminalCallbacks, s as isTerminalModuleState, u as useManager } from "../hooks-CNu7o-v8.js";
4
- import { t as IncodeComponent } from "../incodeComponent-CfzJGETt.js";
5
- import { r as Spacer } from "../loadingIcon-B0ysgiNq.js";
6
- import { t as Page } from "../page-DidH_RkX.js";
7
- import { t as Button } from "../button-Dz6AsbmF.js";
8
- import { t as OtpInput } from "../otpInput-CnDc6pQm.js";
9
- import { t as Checkbox } from "../checkbox-1wUHSoaK.js";
10
- import { t as PhoneInputComposed } from "../phoneInputComposed-DMiXfF-1.js";
11
- import { t as registerIncodeModuleElement } from "../incodeModule-B-4_3JrK.js";
1
+ import { i as useTranslation } from "../uiConfig-B5ASPUL4.js";
2
+ import { h as q, v as u } from "../vendor-preact-mvwZ8mJj.js";
3
+ import { _ as useModuleTerminalCallbacks, g as isTerminalModuleState, o as Page, r as withStandaloneModuleBootstrap, t as IncodeComponent, y as useManager } from "../incodeComponent-K9ZWg302.js";
4
+ import { t as Spacer } from "../spacer-CDlQd12V.js";
5
+ import { r as Button } from "../incode-logo-rGFjZHqi.js";
6
+ import { t as OtpInput } from "../otpInput-D5dLXrmC.js";
7
+ import { t as Checkbox } from "../checkbox-C38Elx0O.js";
8
+ import { t as PhoneInputComposed } from "../phoneInputComposed-CeVWTS_O.js";
9
+ import { t as registerIncodeModuleElement } from "../incodeModule-CcLzar_X.js";
12
10
  import { createPhoneManager } from "@incodetech/core/phone";
13
11
  //#region src/modules/phone/phone.tsx
14
12
  /**
@@ -150,6 +148,8 @@ var PhoneContent = ({ config, manager: externalManager, onFinish, onError }) =>
150
148
  formatHintBuilder,
151
149
  countryAriaLabelBuilder,
152
150
  "data-testid": "phone-input",
151
+ required: true,
152
+ autocomplete: "tel",
153
153
  showErrorIcon: true
154
154
  }),
155
155
  /* @__PURE__ */ u(Spacer, { size: 16 }),
@@ -229,7 +229,7 @@ var PhoneContent = ({ config, manager: externalManager, onFinish, onError }) =>
229
229
  *
230
230
  * @see {@link createPhoneManager} for headless usage
231
231
  */
232
- var Phone = ({ config, manager, onFinish, onError }) => {
232
+ var PhoneWithLocalConfig = ({ config, manager, onFinish, onError }) => {
233
233
  return /* @__PURE__ */ u(IncodeComponent, { children: config || manager ? /* @__PURE__ */ u(PhoneContent, {
234
234
  config,
235
235
  manager,
@@ -237,6 +237,7 @@ var Phone = ({ config, manager, onFinish, onError }) => {
237
237
  onError
238
238
  }) : null });
239
239
  };
240
+ var Phone = withStandaloneModuleBootstrap(PhoneWithLocalConfig, "PHONE", { supportsExternalManager: true });
240
241
  registerIncodeModuleElement(Phone, "incode-phone");
241
242
  //#endregion
242
243
  export { Phone };
@@ -1,9 +1,9 @@
1
- import { _ as y, a as D, d as T, h as q, l as A, p as d, v as u, x as k } from "./vendor-preact-DThS2ZQ_.js";
2
- import { t as ErrorIcon } from "./errorIcon-BA4T6iy-.js";
3
- import "./icons-CJJbIpBq.js";
4
- import { t as SuccessIcon } from "./successIcon-B5mGvdx1.js";
5
- import { t as InputComposed } from "./inputComposed-C1R2LAa3.js";
6
- import { t as DropdownComposed } from "./dropdownComposed-CoU0enG6.js";
1
+ import { S as k, _ as y, a as D, d as T, h as q, l as A, p as d, v as u } from "./vendor-preact-mvwZ8mJj.js";
2
+ import { n as ErrorIcon } from "./incode-logo-rGFjZHqi.js";
3
+ import "./icons--ezYG2Fb.js";
4
+ import { t as SuccessIcon } from "./successIcon-Bj8Y9CuI.js";
5
+ import { t as InputComposed } from "./inputComposed-BeROn635.js";
6
+ import { t as DropdownComposed } from "./dropdownComposed-OHDHzt1Q.js";
7
7
  //#region ../../node_modules/.pnpm/libphonenumber-js@1.12.31/node_modules/libphonenumber-js/metadata.min.json.js
8
8
  var metadata_min_json_default = {
9
9
  "version": 4,
@@ -12073,6 +12073,7 @@ var PhoneInputComposed = D(({ id, label, labelHint, countryCode = "US", value, p
12073
12073
  const c = getCountryByCode(option.value);
12074
12074
  return c ? `${c.emoji} ${c.callingCode}` : option.label;
12075
12075
  },
12076
+ "data-testid": `${countryDropdownId}-selector`,
12076
12077
  class: "IncodePhoneInputComposedDropdown",
12077
12078
  siblingElement: /* @__PURE__ */ u(InputComposed, {
12078
12079
  id: phoneInputId,
@@ -1,5 +1,5 @@
1
- import { v as u } from "./vendor-preact-DThS2ZQ_.js";
2
- import { t as TransitionSpinner } from "./transitionSpinner-CuNCqHNi.js";
1
+ import { v as u } from "./vendor-preact-mvwZ8mJj.js";
2
+ import { l as TransitionSpinner } from "./incodeComponent-K9ZWg302.js";
3
3
  //#region src/shared/processing/processing.tsx
4
4
  var Processing = () => {
5
5
  return /* @__PURE__ */ u(TransitionSpinner, {});
@@ -1,17 +1,20 @@
1
- import { v as u } from "../vendor-preact-DThS2ZQ_.js";
2
- import { n as ElectronicSignature } from "../electronic-signature-Ueoffasr.js";
3
- import { t as registerIncodeModuleElement } from "../incodeModule-B-4_3JrK.js";
1
+ import { v as u } from "../vendor-preact-mvwZ8mJj.js";
2
+ import { r as withStandaloneModuleBootstrap } from "../incodeComponent-K9ZWg302.js";
3
+ import { n as ElectronicSignature } from "../electronic-signature-yamI6zHM.js";
4
+ import { t as registerIncodeModuleElement } from "../incodeModule-CcLzar_X.js";
4
5
  //#region src/modules/qe-signature/qe-signature.tsx
5
- var QeSignature = ({ config, onFinish, onError }) => {
6
+ var QeSignatureWithLocalConfig = ({ config, manager, onFinish, onError }) => {
6
7
  return /* @__PURE__ */ u(ElectronicSignature, {
7
8
  config: config ? {
8
9
  ...config,
9
10
  variant: "qe"
10
11
  } : void 0,
12
+ manager,
11
13
  onFinish,
12
14
  onError
13
15
  });
14
16
  };
17
+ var QeSignature = withStandaloneModuleBootstrap(QeSignatureWithLocalConfig, "QE_SIGNATURE", { supportsExternalManager: true });
15
18
  registerIncodeModuleElement(QeSignature, "incode-qe-signature");
16
19
  //#endregion
17
20
  export { QeSignature };
@@ -1,9 +1,9 @@
1
- import { n as useTranslation } from "./i18n-CU4xq8qC.js";
2
- import { a as D, p as d, v as u } from "./vendor-preact-DThS2ZQ_.js";
3
- import { n as cn } from "./loadingIcon-B0ysgiNq.js";
4
- import { t as ErrorIcon } from "./errorIcon-BA4T6iy-.js";
5
- import "./icons-CJJbIpBq.js";
6
- import { t as InputComposed } from "./inputComposed-C1R2LAa3.js";
1
+ import { i as useTranslation } from "./uiConfig-B5ASPUL4.js";
2
+ import { a as D, p as d, v as u } from "./vendor-preact-mvwZ8mJj.js";
3
+ import { u as cn } from "./spacer-CDlQd12V.js";
4
+ import { n as ErrorIcon } from "./incode-logo-rGFjZHqi.js";
5
+ import "./icons--ezYG2Fb.js";
6
+ import { t as InputComposed } from "./inputComposed-BeROn635.js";
7
7
  //#region src/shared/errorParams.ts
8
8
  /**
9
9
  * Resolves error params by translating the `fieldName` key
@@ -32,7 +32,7 @@ function translateError(t, error, params) {
32
32
  }
33
33
  //#endregion
34
34
  //#region src/shared/formField/formField.tsx
35
- var FormField = ({ name, label, displayLabel: displayLabelProp, value = "", error, errorParams, type = "text", placeholder, placeholderParams, required, readonly, maxLength, disabled, labelHint, onChange, onBlur }) => {
35
+ var FormField = ({ name, label, displayLabel: displayLabelProp, value = "", error, errorParams, type = "text", placeholder, placeholderParams, required, readonly, maxLength, disabled, autoComplete, labelHint, onChange, onBlur }) => {
36
36
  const { t } = useTranslation();
37
37
  return /* @__PURE__ */ u("div", {
38
38
  className: "IncodeFormField",
@@ -42,6 +42,7 @@ var FormField = ({ name, label, displayLabel: displayLabelProp, value = "", erro
42
42
  labelHint,
43
43
  name,
44
44
  type,
45
+ autoComplete,
45
46
  value,
46
47
  placeholder: placeholder ? t(placeholder, placeholderParams) : void 0,
47
48
  readOnly: readonly,
@@ -60,13 +61,15 @@ var FormField = ({ name, label, displayLabel: displayLabelProp, value = "", erro
60
61
  };
61
62
  //#endregion
62
63
  //#region src/shared/radioButtonComposed/radioButtonComposed.tsx
63
- var RadioButtonComposed = D(({ id, label, labelHint, checked, defaultChecked, disabled = false, required = false, name, value, onChange, error, helper, showErrorIcon = true, class: className, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, "aria-invalid": ariaInvalid, ...restProps }, ref) => {
64
+ var textSizeClass = {
65
+ M: "IncodeRadioButtonTextM",
66
+ S: "IncodeRadioButtonTextS"
67
+ };
68
+ var RadioButtonComposed = D(({ id, label, labelHint, checked, defaultChecked, disabled = false, required = false, name, value, onChange, error, helper, showErrorIcon = true, textSize = "M", class: className, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledBy, "aria-describedby": ariaDescribedBy, ...restProps }, ref) => {
64
69
  const [internalChecked, setInternalChecked] = d(!!defaultChecked);
65
70
  const isControlled = checked !== void 0;
66
71
  const isChecked = isControlled ? !!checked : internalChecked;
67
72
  const isDisabled = !!disabled;
68
- const isRequired = !!required;
69
- const classStr = typeof className === "string" ? className : void 0;
70
73
  const handleChange = (event) => {
71
74
  if (!isControlled) setInternalChecked(event.target.checked);
72
75
  onChange?.(event);
@@ -79,13 +82,13 @@ var RadioButtonComposed = D(({ id, label, labelHint, checked, defaultChecked, di
79
82
  helperTextId
80
83
  ].filter(Boolean).join(" ") || void 0;
81
84
  return /* @__PURE__ */ u("div", {
82
- class: cn("IncodeRadioButton", classStr),
85
+ class: cn("IncodeRadioButton", className),
83
86
  children: [
84
87
  /* @__PURE__ */ u("label", {
85
88
  class: cn("IncodeRadioButtonLabel", { IncodeRadioButtonLabelDisabled: isDisabled }),
86
89
  htmlFor: id,
87
90
  children: [/* @__PURE__ */ u("div", {
88
- class: "relative inline-flex",
91
+ class: "IncodeRadioButtonControl",
89
92
  children: [/* @__PURE__ */ u("input", {
90
93
  ref,
91
94
  type: "radio",
@@ -100,8 +103,6 @@ var RadioButtonComposed = D(({ id, label, labelHint, checked, defaultChecked, di
100
103
  "aria-label": ariaLabel,
101
104
  "aria-labelledby": ariaLabelledBy,
102
105
  "aria-describedby": describedBy,
103
- "aria-invalid": ariaInvalid || !!error,
104
- "aria-required": isRequired,
105
106
  ...restProps
106
107
  }), /* @__PURE__ */ u("div", {
107
108
  class: cn("IncodeRadioButtonVisual", {
@@ -113,7 +114,7 @@ var RadioButtonComposed = D(({ id, label, labelHint, checked, defaultChecked, di
113
114
  children: /* @__PURE__ */ u("span", { class: cn("IncodeRadioButtonDot", { IncodeRadioButtonDotVisible: isChecked }) })
114
115
  })]
115
116
  }), label && /* @__PURE__ */ u("span", {
116
- class: cn("IncodeRadioButtonText", { IncodeRadioButtonTextDisabled: isDisabled }),
117
+ class: cn(textSizeClass[textSize], { IncodeRadioButtonTextDisabled: isDisabled }),
117
118
  "aria-hidden": ariaLabelledBy ? "true" : void 0,
118
119
  children: [label, labelHint && /* @__PURE__ */ u("span", {
119
120
  class: "IncodeRadioButtonLabelHint",
@@ -1,25 +1,23 @@
1
1
  import { t as __commonJSMin } from "../rolldown-runtime--E5BIlTp.js";
2
- import { n as useTranslation, t as Trans } from "../i18n-CU4xq8qC.js";
3
- import { _ as y, h as q, l as A, p as d, v as u, x as k } from "../vendor-preact-DThS2ZQ_.js";
4
- import { c as useModuleTerminalCallbacks, u as useManager } from "../hooks-CNu7o-v8.js";
5
- import { t as IncodeComponent } from "../incodeComponent-CfzJGETt.js";
6
- import { r as Spacer } from "../loadingIcon-B0ysgiNq.js";
7
- import { t as incode_logo_default } from "../incode-logo-57XFniXU.js";
8
- import { n as VerifiedByIncodeLogo, r as usePageUiConfig } from "../page-DidH_RkX.js";
9
- import "../extensibility-7sRIN0JC.js";
10
- import { t as TransitionSpinner } from "../transitionSpinner-CuNCqHNi.js";
11
- import { t as Button } from "../button-Dz6AsbmF.js";
12
- import "../icons-CJJbIpBq.js";
13
- import { t as SuccessIcon } from "../successIcon-B5mGvdx1.js";
14
- import { t as AutoFocusTitle } from "../autoFocusTitle-CuRu2lPg.js";
15
- import { r as getCountryByCallingCode, t as PhoneInputComposed } from "../phoneInputComposed-DMiXfF-1.js";
16
- import { t as registerIncodeElement } from "../registerIncodeElement-DaNjbAwZ.js";
17
- import { t as Snackbar } from "../snackbar-DS7Mv62v.js";
18
- import { t as Tabs } from "../tabs-C__chW-u.js";
2
+ import { i as useTranslation, r as Trans } from "../uiConfig-B5ASPUL4.js";
3
+ import { S as k, _ as y, h as q, l as A, m as g, p as d, v as u } from "../vendor-preact-mvwZ8mJj.js";
4
+ import { _ as useModuleTerminalCallbacks, c as usePageUiConfig, l as TransitionSpinner, r as withStandaloneModuleBootstrap, s as VerifiedByIncodeLogo, t as IncodeComponent, y as useManager } from "../incodeComponent-K9ZWg302.js";
5
+ import { t as Spacer } from "../spacer-CDlQd12V.js";
6
+ import { n as ErrorIcon, r as Button, t as incode_logo_default } from "../incode-logo-rGFjZHqi.js";
7
+ import "../extensibility-iJYzpW6H.js";
8
+ import "../icons--ezYG2Fb.js";
9
+ import { t as SuccessIcon } from "../successIcon-Bj8Y9CuI.js";
10
+ import { t as AutoFocusTitle } from "../autoFocusTitle-gLba2mgp.js";
11
+ import { n as formatResendTimer, r as useResendTimerAnnouncements } from "../otpInput-D5dLXrmC.js";
12
+ import { r as getCountryByCallingCode, t as PhoneInputComposed } from "../phoneInputComposed-CeVWTS_O.js";
13
+ import { t as registerIncodeElement } from "../registerIncodeElement-BduCekz5.js";
14
+ import { t as Snackbar } from "../snackbar-C9Mqrh0e.js";
15
+ import { t as Tabs } from "../tabs-DweBZTV2.js";
19
16
  import { createRedirectToMobileManager } from "@incodetech/core/redirect-to-mobile";
20
17
  //#region src/modules/redirect-to-mobile/redirectHeader.tsx
21
18
  var RedirectHeader = ({ logoSrc }) => {
22
19
  const { t } = useTranslation();
20
+ const subtitleId = `${g()}-subtitle`;
23
21
  return /* @__PURE__ */ u("header", {
24
22
  class: "IncodeRedirectHeader",
25
23
  children: [
@@ -35,11 +33,14 @@ var RedirectHeader = ({ logoSrc }) => {
35
33
  /* @__PURE__ */ u(Spacer, { size: 24 }),
36
34
  /* @__PURE__ */ u(AutoFocusTitle, {
37
35
  className: "IncodeRedirectTitle",
36
+ describedById: subtitleId,
38
37
  children: t("v2.redirectToMobile.title")
39
38
  }),
40
39
  /* @__PURE__ */ u(Spacer, { size: 12 }),
41
40
  /* @__PURE__ */ u("p", {
41
+ id: subtitleId,
42
42
  class: "IncodeRedirectSubtitle",
43
+ "data-testid": "redirect-subtitle",
43
44
  children: t("v2.redirectToMobile.subtitle")
44
45
  })
45
46
  ]
@@ -55,16 +56,26 @@ var RedirectFooter = ({ addContinueToDesktop, onContinueOnDesktop }) => {
55
56
  /* @__PURE__ */ u(Spacer, {}),
56
57
  addContinueToDesktop ? /* @__PURE__ */ u("div", {
57
58
  class: "IncodeRedirectFooterContent",
58
- children: [/* @__PURE__ */ u("span", {
59
- class: "IncodeRedirectFooterContentText",
60
- children: t("idv2.permissions.or")
61
- }), /* @__PURE__ */ u(Button, {
62
- variant: "secondary",
63
- onClick: onContinueOnDesktop,
64
- children: t("redirect.continueOnDesktop")
65
- })]
59
+ "data-testid": "redirect-footer-content",
60
+ children: [
61
+ /* @__PURE__ */ u("span", {
62
+ class: "IncodeRedirectFooterContentText",
63
+ children: t("idv2.permissions.or")
64
+ }),
65
+ /* @__PURE__ */ u(Spacer, { size: 16 }),
66
+ /* @__PURE__ */ u(Button, {
67
+ variant: "secondary",
68
+ onClick: onContinueOnDesktop,
69
+ "data-testid": "redirect-continue-desktop",
70
+ children: t("redirect.continueOnDesktop")
71
+ }),
72
+ /* @__PURE__ */ u(Spacer, { size: 16 })
73
+ ]
66
74
  }) : null,
67
- /* @__PURE__ */ u(VerifiedByIncodeLogo, {})
75
+ /* @__PURE__ */ u("div", {
76
+ class: "IncodeRedirectFooterLogoWrapper",
77
+ children: /* @__PURE__ */ u(VerifiedByIncodeLogo, {})
78
+ })
68
79
  ]
69
80
  });
70
81
  };
@@ -75,9 +86,13 @@ var ResendToast = ({ visible }) => {
75
86
  if (!visible) return null;
76
87
  return /* @__PURE__ */ u("div", {
77
88
  class: "IncodeRedirectToast",
89
+ "data-testid": "redirect-resend-toast",
78
90
  children: /* @__PURE__ */ u(Snackbar, {
79
91
  variant: "positive",
80
- children: t("redirect.linkResent")
92
+ children: /* @__PURE__ */ u("span", {
93
+ class: "IncodeRedirectToastContent",
94
+ children: [/* @__PURE__ */ u(SuccessIcon, { size: 32 }), /* @__PURE__ */ u("span", { children: t("redirect.linkResent") })]
95
+ })
81
96
  })
82
97
  });
83
98
  };
@@ -2517,15 +2532,51 @@ var QrTabContent = ({ redirectUrl }) => {
2517
2532
  };
2518
2533
  //#endregion
2519
2534
  //#region src/modules/redirect-to-mobile/smsSentView.tsx
2520
- var SmsSentView = ({ formattedPhone, onResend, onChangePhone }) => {
2535
+ var SmsSentView = ({ formattedPhone, hasError, resendTimer, canResendSms, onResend, onChangePhone }) => {
2521
2536
  const { t } = useTranslation();
2522
2537
  return /* @__PURE__ */ u("div", {
2523
2538
  class: "IncodeRedirectLinkSent",
2524
- children: [
2539
+ children: [/* @__PURE__ */ u("div", {
2540
+ ref: useResendTimerAnnouncements({
2541
+ canResend: canResendSms,
2542
+ resendTimer,
2543
+ disabled: hasError,
2544
+ i18nKeys: { resendAvailable: "redirectToMobile.resendLinkAvailable" }
2545
+ }),
2546
+ class: "IncodeSrOnly",
2547
+ "aria-live": "polite",
2548
+ "aria-atomic": "true",
2549
+ "data-testid": "redirect-sms-live-region"
2550
+ }), hasError ? /* @__PURE__ */ u(k, { children: [
2551
+ /* @__PURE__ */ u(ErrorIcon, { size: 40 }),
2552
+ /* @__PURE__ */ u(Spacer, { size: 16 }),
2553
+ /* @__PURE__ */ u(AutoFocusTitle, {
2554
+ className: "IncodeRedirectLinkSentTitle",
2555
+ "data-testid": "redirect-sms-status-heading",
2556
+ children: t("redirect.tooManyAttempts")
2557
+ }),
2558
+ /* @__PURE__ */ u(Spacer, { size: 12 }),
2559
+ /* @__PURE__ */ u("p", {
2560
+ class: "IncodeRedirectLinkSentPhone",
2561
+ role: "alert",
2562
+ children: t("redirect.smsErrorSubtitle")
2563
+ }),
2564
+ /* @__PURE__ */ u(Spacer, { size: 24 }),
2565
+ /* @__PURE__ */ u("div", {
2566
+ class: "IncodeRedirectLinkSentActions",
2567
+ children: /* @__PURE__ */ u(Button, {
2568
+ variant: "link",
2569
+ onClick: onChangePhone,
2570
+ "data-testid": "sms-change-phone",
2571
+ children: t("redirect.changePhoneNumber")
2572
+ })
2573
+ })
2574
+ ] }) : /* @__PURE__ */ u(k, { children: [
2525
2575
  /* @__PURE__ */ u(SuccessIcon, { size: 40 }),
2526
2576
  /* @__PURE__ */ u(Spacer, { size: 16 }),
2527
2577
  /* @__PURE__ */ u(AutoFocusTitle, {
2528
2578
  className: "IncodeRedirectLinkSentTitle",
2579
+ "data-testid": "redirect-sms-status-heading",
2529
2580
  children: t("redirect.linkSent")
2530
2581
  }),
2531
2582
  /* @__PURE__ */ u(Spacer, { size: 12 }),
@@ -2536,24 +2587,35 @@ var SmsSentView = ({ formattedPhone, onResend, onChangePhone }) => {
2536
2587
  /* @__PURE__ */ u(Spacer, { size: 32 }),
2537
2588
  /* @__PURE__ */ u("div", {
2538
2589
  class: "IncodeRedirectLinkSentActions",
2539
- children: /* @__PURE__ */ u(Trans, {
2590
+ children: !canResendSms && resendTimer > 0 ? /* @__PURE__ */ u(k, { children: [
2591
+ /* @__PURE__ */ u(Spacer, { size: 8 }),
2592
+ /* @__PURE__ */ u(Button, {
2593
+ variant: "link",
2594
+ size: "inline",
2595
+ disabled: true,
2596
+ "data-testid": "sms-timer",
2597
+ children: t("redirectToMobile.resendCountdown", { time: formatResendTimer(resendTimer) })
2598
+ }),
2599
+ /* @__PURE__ */ u(Spacer, { size: 8 })
2600
+ ] }) : /* @__PURE__ */ u(Trans, {
2540
2601
  i18nKey: "redirect.didntReceiveLinkActions",
2541
- defaultValue: "Didn't receive the link? <resend>Resend</resend> or <changePhone>Change phone number</changePhone>",
2542
2602
  components: {
2543
2603
  resend: /* @__PURE__ */ u(Button, {
2544
2604
  variant: "link",
2545
2605
  size: "inline",
2546
- onClick: onResend
2606
+ onClick: onResend,
2607
+ "data-testid": "sms-resend"
2547
2608
  }),
2548
2609
  changePhone: /* @__PURE__ */ u(Button, {
2549
2610
  variant: "link",
2550
2611
  size: "inline",
2551
- onClick: onChangePhone
2612
+ onClick: onChangePhone,
2613
+ "data-testid": "sms-change-phone"
2552
2614
  })
2553
2615
  }
2554
2616
  })
2555
2617
  })
2556
- ]
2618
+ ] })]
2557
2619
  });
2558
2620
  };
2559
2621
  //#endregion
@@ -2566,12 +2628,15 @@ var SmsForm = ({ countryCode, error, isSending, isPhoneValid, onPhoneChange, onS
2566
2628
  error,
2567
2629
  disabled: isSending,
2568
2630
  autoFocus: true,
2631
+ autocomplete: "tel",
2632
+ "data-testid": "redirect-sms-phone",
2569
2633
  onChange: onPhoneChange
2570
2634
  }), /* @__PURE__ */ u(Button, {
2571
2635
  onClick: onSendSms,
2572
2636
  disabled: !isPhoneValid || isSending,
2573
2637
  isLoading: isSending,
2574
2638
  class: "IncodeRedirectSmsSendButton",
2639
+ "data-testid": "redirect-sms-send",
2575
2640
  children: t("redirect.sendLinkSms")
2576
2641
  })] });
2577
2642
  };
@@ -2581,7 +2646,7 @@ var formatPhoneNumber = (phone, prefix) => {
2581
2646
  if (!phone.startsWith(prefix)) return phone;
2582
2647
  return `${prefix} ${phone.slice(prefix.length).replace(/(\d{3})(?=\d)/g, "$1 ")}`;
2583
2648
  };
2584
- var SmsTabContent = ({ phonePrefix, smsSent, error, manager, onResend }) => {
2649
+ var SmsTabContent = ({ phonePrefix, smsSent, smsFailed, smsResendTimer, canResendSms, error, manager, onResend }) => {
2585
2650
  const { t } = useTranslation();
2586
2651
  const [phoneNumber, setPhoneNumber] = d(phonePrefix);
2587
2652
  const [isPhoneValid, setIsPhoneValid] = d(false);
@@ -2606,14 +2671,17 @@ var SmsTabContent = ({ phonePrefix, smsSent, error, manager, onResend }) => {
2606
2671
  setIsPhoneValid(false);
2607
2672
  manager.resetSms();
2608
2673
  }, [manager, phonePrefix]);
2609
- return /* @__PURE__ */ u(k, { children: [/* @__PURE__ */ u("p", {
2610
- class: "IncodeRedirectTabDescription",
2611
- children: t("v2.redirectToMobile.sms.description")
2612
- }), smsSent ? /* @__PURE__ */ u(SmsSentView, {
2674
+ return /* @__PURE__ */ u(k, { children: smsSent || smsFailed ? /* @__PURE__ */ u(SmsSentView, {
2613
2675
  formattedPhone,
2676
+ hasError: smsFailed,
2677
+ resendTimer: smsResendTimer,
2678
+ canResendSms,
2614
2679
  onResend: handleResend,
2615
2680
  onChangePhone: handleChangePhone
2616
- }) : /* @__PURE__ */ u(SmsForm, {
2681
+ }) : /* @__PURE__ */ u(k, { children: [/* @__PURE__ */ u("p", {
2682
+ class: "IncodeRedirectTabDescription",
2683
+ children: t("v2.redirectToMobile.sms.description")
2684
+ }), /* @__PURE__ */ u(SmsForm, {
2617
2685
  countryCode,
2618
2686
  phonePrefix,
2619
2687
  error,
@@ -2621,16 +2689,21 @@ var SmsTabContent = ({ phonePrefix, smsSent, error, manager, onResend }) => {
2621
2689
  isPhoneValid,
2622
2690
  onPhoneChange: handlePhoneChange,
2623
2691
  onSendSms: handleSendSms
2624
- })] });
2692
+ })] }) });
2625
2693
  };
2626
2694
  //#endregion
2627
2695
  //#region src/modules/redirect-to-mobile/qrScreen.tsx
2628
- var QrScreen = ({ redirectUrl, phonePrefix, smsSent, disableSmsOption, addContinueToDesktop, error, manager, logoSrc }) => {
2696
+ var QrScreen = ({ redirectUrl, phonePrefix, smsSent, smsFailed, smsResendTimer, canResendSms, disableSmsOption, addContinueToDesktop, error, manager, logoSrc }) => {
2629
2697
  const { t } = useTranslation();
2630
2698
  const [showResendToast, setShowResendToast] = d(false);
2699
+ const resendToastTimerRef = A();
2631
2700
  const handleResend = q(() => {
2701
+ clearTimeout(resendToastTimerRef.current);
2632
2702
  setShowResendToast(true);
2633
- setTimeout(() => setShowResendToast(false), 3e3);
2703
+ resendToastTimerRef.current = setTimeout(() => setShowResendToast(false), 3e3);
2704
+ }, []);
2705
+ y(() => {
2706
+ return () => clearTimeout(resendToastTimerRef.current);
2634
2707
  }, []);
2635
2708
  const handleContinueOnDesktop = q(() => {
2636
2709
  manager.continueOnDesktop();
@@ -2650,9 +2723,11 @@ var QrScreen = ({ redirectUrl, phonePrefix, smsSent, disableSmsOption, addContin
2650
2723
  label: t("v2.redirectToMobile.tabs.label"),
2651
2724
  children: [/* @__PURE__ */ u(Tabs.Trigger, {
2652
2725
  value: "qr",
2726
+ "data-testid": "redirect-tab-qr",
2653
2727
  children: t("v2.redirectToMobile.tabs.0")
2654
2728
  }), !disableSmsOption && /* @__PURE__ */ u(Tabs.Trigger, {
2655
2729
  value: "sms",
2730
+ "data-testid": "redirect-tab-sms",
2656
2731
  children: t("v2.redirectToMobile.tabs.1")
2657
2732
  })]
2658
2733
  })]
@@ -2666,6 +2741,9 @@ var QrScreen = ({ redirectUrl, phonePrefix, smsSent, disableSmsOption, addContin
2666
2741
  children: /* @__PURE__ */ u(SmsTabContent, {
2667
2742
  phonePrefix,
2668
2743
  smsSent,
2744
+ smsFailed,
2745
+ smsResendTimer,
2746
+ canResendSms,
2669
2747
  error,
2670
2748
  manager,
2671
2749
  onResend: handleResend
@@ -2673,7 +2751,7 @@ var QrScreen = ({ redirectUrl, phonePrefix, smsSent, disableSmsOption, addContin
2673
2751
  })]
2674
2752
  })]
2675
2753
  }), /* @__PURE__ */ u(RedirectFooter, {
2676
- addContinueToDesktop,
2754
+ addContinueToDesktop: addContinueToDesktop && (!smsSent || smsFailed),
2677
2755
  onContinueOnDesktop: handleContinueOnDesktop
2678
2756
  })]
2679
2757
  })]
@@ -2685,8 +2763,10 @@ var WaitingScreen = ({ title, subtitle, logoSrc }) => {
2685
2763
  const { t } = useTranslation();
2686
2764
  const displayTitle = title ?? t("verificationComplete.title");
2687
2765
  const displaySubtitle = subtitle ?? t("verificationComplete.message");
2766
+ const subtitleId = `${g()}-subtitle`;
2688
2767
  return /* @__PURE__ */ u("div", {
2689
2768
  class: "IncodeRedirectFinishedContainer",
2769
+ tabIndex: 0,
2690
2770
  children: [
2691
2771
  /* @__PURE__ */ u("img", {
2692
2772
  src: logoSrc,
@@ -2696,10 +2776,13 @@ var WaitingScreen = ({ title, subtitle, logoSrc }) => {
2696
2776
  }),
2697
2777
  displayTitle ? /* @__PURE__ */ u(AutoFocusTitle, {
2698
2778
  className: "IncodeRedirectFinishedTitle",
2779
+ describedById: displaySubtitle ? subtitleId : void 0,
2699
2780
  children: displayTitle
2700
2781
  }) : null,
2701
2782
  displaySubtitle ? /* @__PURE__ */ u("p", {
2783
+ id: subtitleId,
2702
2784
  class: "IncodeRedirectFinishedSubtitle",
2785
+ "data-testid": "redirect-waiting-subtitle",
2703
2786
  children: displaySubtitle
2704
2787
  }) : null
2705
2788
  ]
@@ -2742,6 +2825,9 @@ var RedirectToMobileContent = ({ config, manager: externalManager, services, onF
2742
2825
  redirectUrl: state.redirectUrl,
2743
2826
  phonePrefix: state.phonePrefix,
2744
2827
  smsSent: state.smsSent,
2828
+ smsFailed: state.smsFailed,
2829
+ smsResendTimer: state.smsResendTimer,
2830
+ canResendSms: state.canResendSms,
2745
2831
  disableSmsOption: config?.disableSmsOption ?? false,
2746
2832
  addContinueToDesktop: config?.addContinueToDesktop ?? false,
2747
2833
  error: state.error,
@@ -2757,7 +2843,7 @@ var RedirectToMobileContent = ({ config, manager: externalManager, services, onF
2757
2843
  children: content
2758
2844
  });
2759
2845
  };
2760
- var RedirectToMobile = ({ config, manager, services, onFinish, onContinue, onError }) => {
2846
+ var RedirectToMobileWithLocalConfig = ({ config, manager, services, onFinish, onContinue, onError }) => {
2761
2847
  return /* @__PURE__ */ u(IncodeComponent, { children: config || manager ? /* @__PURE__ */ u(RedirectToMobileContent, {
2762
2848
  config,
2763
2849
  manager,
@@ -2767,6 +2853,7 @@ var RedirectToMobile = ({ config, manager, services, onFinish, onContinue, onErr
2767
2853
  onError
2768
2854
  }) : null });
2769
2855
  };
2856
+ var RedirectToMobile = withStandaloneModuleBootstrap(RedirectToMobileWithLocalConfig, "REDIRECT_TO_MOBILE", { supportsExternalManager: true });
2770
2857
  registerIncodeElement(RedirectToMobile, "incode-redirect-to-mobile", [
2771
2858
  "config",
2772
2859
  "services",
@@ -1,7 +1,7 @@
1
1
  /*! tailwindcss v4.2.2 | MIT License | https://tailwindcss.com */
2
2
  @layer properties {
3
3
  @supports (((-webkit-hyphens: none)) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color: rgb(from red r g b)))) {
4
- *, :before, :after, ::backdrop {
4
+ .IncodeComponent, .IncodeComponent *, .IncodeComponent :before, .IncodeComponent :after, .IncodeComponent ::backdrop {
5
5
  --tw-border-style: solid;
6
6
  --tw-outline-style: solid;
7
7
  --tw-font-weight: initial;
@@ -38,10 +38,8 @@
38
38
  background-color: var(--color-surface-neutral-0, var(--surface-neutral-0));
39
39
  width: 100%;
40
40
  padding-inline: var(--spacing-24, var(--spacing-24, 24px));
41
- padding-top: var(--spacing-32, var(--spacing-32, 32px));
42
- padding-bottom: var(--spacing-24, var(--spacing-24, 24px));
41
+ padding-block: var(--spacing-32, var(--spacing-32, 32px));
43
42
  max-width: var(--redirect-card-max-width);
44
- min-height: min(var(--redirect-card-max-width), var(--redirect-card-min-height));
45
43
  flex-direction: column;
46
44
  align-items: center;
47
45
  display: flex;
@@ -57,11 +55,11 @@
57
55
  }
58
56
 
59
57
  .IncodeRedirectRoot .IncodeRedirectContainer .IncodeRedirectCard .IncodeRedirectOptions {
60
- align-items: center;
61
- gap: var(--spacing-32, var(--spacing-32, 32px));
58
+ margin-bottom: var(--spacing-32, var(--spacing-32, 32px));
62
59
  width: 100%;
63
60
  max-width: var(--redirect-options-max-width);
64
61
  flex-direction: column;
62
+ align-items: center;
65
63
  display: flex;
66
64
  }
67
65
 
@@ -73,6 +71,12 @@
73
71
  left: 50%;
74
72
  }
75
73
 
74
+ .IncodeRedirectContainer .IncodeRedirectToastContent {
75
+ align-items: center;
76
+ gap: var(--spacing-12, var(--spacing-12, 12px));
77
+ display: inline-flex;
78
+ }
79
+
76
80
  @keyframes fadeInOut {
77
81
  0% {
78
82
  opacity: 0;
@@ -136,12 +140,11 @@
136
140
  }
137
141
 
138
142
  .IncodeRedirectContainer .IncodeRedirectCard .IncodeRedirectBottomNav {
139
- align-items: center;
140
- gap: var(--spacing-40, var(--spacing-40, 40px));
141
143
  width: 100%;
142
144
  max-width: var(--redirect-form-column-max-width);
143
145
  flex-direction: column;
144
146
  flex: 1;
147
+ align-items: center;
145
148
  display: flex;
146
149
  }
147
150
 
@@ -154,7 +157,7 @@
154
157
  }
155
158
 
156
159
  .IncodeRedirectContainer .IncodeRedirectCard .IncodeRedirectBottomNav .IncodeRedirectFooterContentText {
157
- margin-block: var(--spacing-32, var(--spacing-32, 32px));
160
+ margin-block: var(--spacing-12, var(--spacing-12, 12px));
158
161
  font-family: var(--Button-family, "DM Sans");
159
162
  letter-spacing: 0;
160
163
  font-size: 18px;
@@ -162,6 +165,10 @@
162
165
  line-height: 100%;
163
166
  }
164
167
 
168
+ .IncodeRedirectContainer .IncodeRedirectCard .IncodeRedirectBottomNav .IncodeRedirectFooterLogoWrapper {
169
+ padding-block: var(--spacing-8, var(--spacing-8, 8px));
170
+ }
171
+
165
172
  .IncodeRedirectContainer .IncodeRedirectCard .IncodeRedirectTabs {
166
173
  justify-content: center;
167
174
  align-items: flex-end;
@@ -246,6 +253,7 @@
246
253
  }
247
254
 
248
255
  .IncodeRedirectContainer .IncodeRedirectCard .IncodeRedirectOptions .IncodeRedirectLinkSent {
256
+ margin-top: var(--spacing-32, var(--spacing-32, 32px));
249
257
  flex-direction: column;
250
258
  align-items: center;
251
259
  display: flex;
@@ -272,6 +280,7 @@
272
280
  }
273
281
 
274
282
  .IncodeRedirectContainer .IncodeRedirectCard .IncodeRedirectOptions .IncodeRedirectLinkSent .IncodeRedirectLinkSentActions {
283
+ margin-block: var(--spacing-8, var(--spacing-8, 8px));
275
284
  justify-content: center;
276
285
  align-items: center;
277
286
  gap: var(--spacing-4, var(--spacing-4, 4px));
@@ -287,11 +296,12 @@
287
296
 
288
297
  .IncodeRedirectFinishedContainer {
289
298
  flex-direction: column;
290
- justify-content: center;
299
+ justify-content: safe center;
291
300
  align-items: center;
292
301
  width: 100%;
293
302
  height: 100%;
294
303
  display: flex;
304
+ overflow-y: auto;
295
305
  }
296
306
 
297
307
  .IncodeRedirectFinishedContainer .IncodeRedirectLogo {