@stytch/react 20.0.0-next.1 → 20.0.0-next.3

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 (580) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/cjs/StytchSSRProxy-Bz6LNYdq.js.map +1 -1
  3. package/dist/cjs/adminPortal/index.cjs +1 -1
  4. package/dist/cjs/b2b/index.cjs +14 -13
  5. package/dist/cjs/b2b/index.cjs.map +1 -1
  6. package/dist/cjs/compat.cjs +3647 -0
  7. package/dist/cjs/compat.cjs.map +1 -0
  8. package/dist/cjs/{index-Ni_dyEsz.js → index-BIjXBvf_.js} +2 -2
  9. package/dist/cjs/index-BIjXBvf_.js.map +1 -0
  10. package/dist/cjs/index.cjs +521 -520
  11. package/dist/cjs/index.cjs.map +1 -1
  12. package/dist/cjs/{shadcn-B8TEzQMT.js → shadcn-Z4AvHriT.js} +247 -233
  13. package/dist/cjs/shadcn-Z4AvHriT.js.map +1 -0
  14. package/dist/cjs-dev/StytchSSRProxy-d553KgcY.js +438 -0
  15. package/dist/cjs-dev/StytchSSRProxy-d553KgcY.js.map +1 -0
  16. package/dist/cjs-dev/adminPortal/index.cjs +54 -53
  17. package/dist/cjs-dev/adminPortal/index.cjs.map +1 -1
  18. package/dist/cjs-dev/b2b/index.cjs +85 -72
  19. package/dist/cjs-dev/b2b/index.cjs.map +1 -1
  20. package/dist/cjs-dev/b2b/index.headless.cjs +94 -92
  21. package/dist/cjs-dev/b2b/index.headless.cjs.map +1 -1
  22. package/dist/cjs-dev/compat.cjs +3694 -0
  23. package/dist/cjs-dev/compat.cjs.map +1 -0
  24. package/dist/cjs-dev/{StytchSSRProxy-CxXsyme4.js → dev-DaCGDI6V.js} +60 -426
  25. package/dist/cjs-dev/dev-DaCGDI6V.js.map +1 -0
  26. package/dist/cjs-dev/{idpHelpers-Cf8Qq1B4.js → idpHelpers-DOYYSxsX.js} +60 -141
  27. package/dist/cjs-dev/idpHelpers-DOYYSxsX.js.map +1 -0
  28. package/dist/cjs-dev/{index-DdK3Jt4u.js → index-rquGmIlv.js} +4 -4
  29. package/dist/cjs-dev/index-rquGmIlv.js.map +1 -0
  30. package/dist/cjs-dev/index.cjs +828 -805
  31. package/dist/cjs-dev/index.cjs.map +1 -1
  32. package/dist/cjs-dev/index.headless.cjs +76 -74
  33. package/dist/cjs-dev/index.headless.cjs.map +1 -1
  34. package/dist/cjs-dev/logger-CvOATP4R.js +28 -0
  35. package/dist/cjs-dev/logger-CvOATP4R.js.map +1 -0
  36. package/dist/cjs-dev/{passwordManagerDisableAutofillProps-D70WyvIu.js → passwordManagerDisableAutofillProps-CgiK2M_U.js} +2 -2
  37. package/dist/cjs-dev/{passwordManagerDisableAutofillProps-D70WyvIu.js.map → passwordManagerDisableAutofillProps-CgiK2M_U.js.map} +1 -1
  38. package/dist/cjs-dev/{shadcn-C4w3DtKK.js → shadcn-DnNfms7-.js} +261 -245
  39. package/dist/cjs-dev/shadcn-DnNfms7-.js.map +1 -0
  40. package/dist/esm/b2b/StytchB2BContext.mjs +5 -5
  41. package/dist/esm/b2b/StytchB2BContext.mjs.map +1 -1
  42. package/dist/esm/compat.mjs +3 -0
  43. package/dist/esm/compat.mjs.map +1 -0
  44. package/dist/esm/node_modules/chroma-js/index.mjs +85 -0
  45. package/dist/esm/node_modules/chroma-js/index.mjs.map +1 -0
  46. package/dist/esm/node_modules/chroma-js/src/Color.mjs +53 -0
  47. package/dist/esm/node_modules/chroma-js/src/Color.mjs.map +1 -0
  48. package/dist/esm/node_modules/chroma-js/src/chroma.mjs +11 -0
  49. package/dist/esm/node_modules/chroma-js/src/chroma.mjs.map +1 -0
  50. package/dist/esm/node_modules/chroma-js/src/colors/colorbrewer.mjs +82 -0
  51. package/dist/esm/node_modules/chroma-js/src/colors/colorbrewer.mjs.map +1 -0
  52. package/dist/esm/node_modules/chroma-js/src/colors/w3cx11.mjs +165 -0
  53. package/dist/esm/node_modules/chroma-js/src/colors/w3cx11.mjs.map +1 -0
  54. package/dist/esm/node_modules/chroma-js/src/generator/average.mjs +92 -0
  55. package/dist/esm/node_modules/chroma-js/src/generator/average.mjs.map +1 -0
  56. package/dist/esm/node_modules/chroma-js/src/generator/bezier.mjs +89 -0
  57. package/dist/esm/node_modules/chroma-js/src/generator/bezier.mjs.map +1 -0
  58. package/dist/esm/node_modules/chroma-js/src/generator/blend.mjs +58 -0
  59. package/dist/esm/node_modules/chroma-js/src/generator/blend.mjs.map +1 -0
  60. package/dist/esm/node_modules/chroma-js/src/generator/cubehelix.mjs +93 -0
  61. package/dist/esm/node_modules/chroma-js/src/generator/cubehelix.mjs.map +1 -0
  62. package/dist/esm/node_modules/chroma-js/src/generator/mix.mjs +22 -0
  63. package/dist/esm/node_modules/chroma-js/src/generator/mix.mjs.map +1 -0
  64. package/dist/esm/node_modules/chroma-js/src/generator/random.mjs +16 -0
  65. package/dist/esm/node_modules/chroma-js/src/generator/random.mjs.map +1 -0
  66. package/dist/esm/node_modules/chroma-js/src/generator/scale.mjs +398 -0
  67. package/dist/esm/node_modules/chroma-js/src/generator/scale.mjs.map +1 -0
  68. package/dist/esm/node_modules/chroma-js/src/interpolator/_hsx.mjs +62 -0
  69. package/dist/esm/node_modules/chroma-js/src/interpolator/_hsx.mjs.map +1 -0
  70. package/dist/esm/node_modules/chroma-js/src/interpolator/hcg.mjs +13 -0
  71. package/dist/esm/node_modules/chroma-js/src/interpolator/hcg.mjs.map +1 -0
  72. package/dist/esm/node_modules/chroma-js/src/interpolator/hsi.mjs +13 -0
  73. package/dist/esm/node_modules/chroma-js/src/interpolator/hsi.mjs.map +1 -0
  74. package/dist/esm/node_modules/chroma-js/src/interpolator/hsl.mjs +13 -0
  75. package/dist/esm/node_modules/chroma-js/src/interpolator/hsl.mjs.map +1 -0
  76. package/dist/esm/node_modules/chroma-js/src/interpolator/hsv.mjs +13 -0
  77. package/dist/esm/node_modules/chroma-js/src/interpolator/hsv.mjs.map +1 -0
  78. package/dist/esm/node_modules/chroma-js/src/interpolator/index.mjs +4 -0
  79. package/dist/esm/node_modules/chroma-js/src/interpolator/index.mjs.map +1 -0
  80. package/dist/esm/node_modules/chroma-js/src/interpolator/lab.mjs +20 -0
  81. package/dist/esm/node_modules/chroma-js/src/interpolator/lab.mjs.map +1 -0
  82. package/dist/esm/node_modules/chroma-js/src/interpolator/lch.mjs +14 -0
  83. package/dist/esm/node_modules/chroma-js/src/interpolator/lch.mjs.map +1 -0
  84. package/dist/esm/node_modules/chroma-js/src/interpolator/lrgb.mjs +21 -0
  85. package/dist/esm/node_modules/chroma-js/src/interpolator/lrgb.mjs.map +1 -0
  86. package/dist/esm/node_modules/chroma-js/src/interpolator/num.mjs +15 -0
  87. package/dist/esm/node_modules/chroma-js/src/interpolator/num.mjs.map +1 -0
  88. package/dist/esm/node_modules/chroma-js/src/interpolator/oklab.mjs +20 -0
  89. package/dist/esm/node_modules/chroma-js/src/interpolator/oklab.mjs.map +1 -0
  90. package/dist/esm/node_modules/chroma-js/src/interpolator/oklch.mjs +13 -0
  91. package/dist/esm/node_modules/chroma-js/src/interpolator/oklch.mjs.map +1 -0
  92. package/dist/esm/node_modules/chroma-js/src/interpolator/rgb.mjs +19 -0
  93. package/dist/esm/node_modules/chroma-js/src/interpolator/rgb.mjs.map +1 -0
  94. package/dist/esm/node_modules/chroma-js/src/io/cmyk/cmyk2rgb.mjs +18 -0
  95. package/dist/esm/node_modules/chroma-js/src/io/cmyk/cmyk2rgb.mjs.map +1 -0
  96. package/dist/esm/node_modules/chroma-js/src/io/cmyk/index.mjs +29 -0
  97. package/dist/esm/node_modules/chroma-js/src/io/cmyk/index.mjs.map +1 -0
  98. package/dist/esm/node_modules/chroma-js/src/io/cmyk/rgb2cmyk.mjs +20 -0
  99. package/dist/esm/node_modules/chroma-js/src/io/cmyk/rgb2cmyk.mjs.map +1 -0
  100. package/dist/esm/node_modules/chroma-js/src/io/css/css2rgb.mjs +239 -0
  101. package/dist/esm/node_modules/chroma-js/src/io/css/css2rgb.mjs.map +1 -0
  102. package/dist/esm/node_modules/chroma-js/src/io/css/hsl2css.mjs +29 -0
  103. package/dist/esm/node_modules/chroma-js/src/io/css/hsl2css.mjs.map +1 -0
  104. package/dist/esm/node_modules/chroma-js/src/io/css/index.mjs +27 -0
  105. package/dist/esm/node_modules/chroma-js/src/io/css/index.mjs.map +1 -0
  106. package/dist/esm/node_modules/chroma-js/src/io/css/lab2css.mjs +27 -0
  107. package/dist/esm/node_modules/chroma-js/src/io/css/lab2css.mjs.map +1 -0
  108. package/dist/esm/node_modules/chroma-js/src/io/css/lch2css.mjs +27 -0
  109. package/dist/esm/node_modules/chroma-js/src/io/css/lch2css.mjs.map +1 -0
  110. package/dist/esm/node_modules/chroma-js/src/io/css/oklab2css.mjs +18 -0
  111. package/dist/esm/node_modules/chroma-js/src/io/css/oklab2css.mjs.map +1 -0
  112. package/dist/esm/node_modules/chroma-js/src/io/css/oklch2css.mjs +18 -0
  113. package/dist/esm/node_modules/chroma-js/src/io/css/oklch2css.mjs.map +1 -0
  114. package/dist/esm/node_modules/chroma-js/src/io/css/rgb2css.mjs +65 -0
  115. package/dist/esm/node_modules/chroma-js/src/io/css/rgb2css.mjs.map +1 -0
  116. package/dist/esm/node_modules/chroma-js/src/io/gl/index.mjs +24 -0
  117. package/dist/esm/node_modules/chroma-js/src/io/gl/index.mjs.map +1 -0
  118. package/dist/esm/node_modules/chroma-js/src/io/hcg/hcg2rgb.mjs +58 -0
  119. package/dist/esm/node_modules/chroma-js/src/io/hcg/hcg2rgb.mjs.map +1 -0
  120. package/dist/esm/node_modules/chroma-js/src/io/hcg/index.mjs +29 -0
  121. package/dist/esm/node_modules/chroma-js/src/io/hcg/index.mjs.map +1 -0
  122. package/dist/esm/node_modules/chroma-js/src/io/hcg/rgb2hcg.mjs +25 -0
  123. package/dist/esm/node_modules/chroma-js/src/io/hcg/rgb2hcg.mjs.map +1 -0
  124. package/dist/esm/node_modules/chroma-js/src/io/hex/hex2rgb.mjs +57 -0
  125. package/dist/esm/node_modules/chroma-js/src/io/hex/hex2rgb.mjs.map +1 -0
  126. package/dist/esm/node_modules/chroma-js/src/io/hex/index.mjs +30 -0
  127. package/dist/esm/node_modules/chroma-js/src/io/hex/index.mjs.map +1 -0
  128. package/dist/esm/node_modules/chroma-js/src/io/hex/rgb2hex.mjs +33 -0
  129. package/dist/esm/node_modules/chroma-js/src/io/hex/rgb2hex.mjs.map +1 -0
  130. package/dist/esm/node_modules/chroma-js/src/io/hsi/hsi2rgb.mjs +49 -0
  131. package/dist/esm/node_modules/chroma-js/src/io/hsi/hsi2rgb.mjs.map +1 -0
  132. package/dist/esm/node_modules/chroma-js/src/io/hsi/index.mjs +29 -0
  133. package/dist/esm/node_modules/chroma-js/src/io/hsi/index.mjs.map +1 -0
  134. package/dist/esm/node_modules/chroma-js/src/io/hsi/rgb2hsi.mjs +34 -0
  135. package/dist/esm/node_modules/chroma-js/src/io/hsi/rgb2hsi.mjs.map +1 -0
  136. package/dist/esm/node_modules/chroma-js/src/io/hsl/hsl2rgb.mjs +37 -0
  137. package/dist/esm/node_modules/chroma-js/src/io/hsl/hsl2rgb.mjs.map +1 -0
  138. package/dist/esm/node_modules/chroma-js/src/io/hsl/index.mjs +29 -0
  139. package/dist/esm/node_modules/chroma-js/src/io/hsl/index.mjs.map +1 -0
  140. package/dist/esm/node_modules/chroma-js/src/io/hsl/rgb2hsl.mjs +47 -0
  141. package/dist/esm/node_modules/chroma-js/src/io/hsl/rgb2hsl.mjs.map +1 -0
  142. package/dist/esm/node_modules/chroma-js/src/io/hsv/hsv2rgb.mjs +50 -0
  143. package/dist/esm/node_modules/chroma-js/src/io/hsv/hsv2rgb.mjs.map +1 -0
  144. package/dist/esm/node_modules/chroma-js/src/io/hsv/index.mjs +29 -0
  145. package/dist/esm/node_modules/chroma-js/src/io/hsv/index.mjs.map +1 -0
  146. package/dist/esm/node_modules/chroma-js/src/io/hsv/rgb2hsv.mjs +35 -0
  147. package/dist/esm/node_modules/chroma-js/src/io/hsv/rgb2hsv.mjs.map +1 -0
  148. package/dist/esm/node_modules/chroma-js/src/io/input.mjs +7 -0
  149. package/dist/esm/node_modules/chroma-js/src/io/input.mjs.map +1 -0
  150. package/dist/esm/node_modules/chroma-js/src/io/lab/index.mjs +30 -0
  151. package/dist/esm/node_modules/chroma-js/src/io/lab/index.mjs.map +1 -0
  152. package/dist/esm/node_modules/chroma-js/src/io/lab/lab-constants.mjs +116 -0
  153. package/dist/esm/node_modules/chroma-js/src/io/lab/lab-constants.mjs.map +1 -0
  154. package/dist/esm/node_modules/chroma-js/src/io/lab/lab2rgb.mjs +102 -0
  155. package/dist/esm/node_modules/chroma-js/src/io/lab/lab2rgb.mjs.map +1 -0
  156. package/dist/esm/node_modules/chroma-js/src/io/lab/rgb2lab.mjs +68 -0
  157. package/dist/esm/node_modules/chroma-js/src/io/lab/rgb2lab.mjs.map +1 -0
  158. package/dist/esm/node_modules/chroma-js/src/io/lch/hcl2rgb.mjs +11 -0
  159. package/dist/esm/node_modules/chroma-js/src/io/lch/hcl2rgb.mjs.map +1 -0
  160. package/dist/esm/node_modules/chroma-js/src/io/lch/index.mjs +38 -0
  161. package/dist/esm/node_modules/chroma-js/src/io/lch/index.mjs.map +1 -0
  162. package/dist/esm/node_modules/chroma-js/src/io/lch/lab2lch.mjs +15 -0
  163. package/dist/esm/node_modules/chroma-js/src/io/lch/lab2lch.mjs.map +1 -0
  164. package/dist/esm/node_modules/chroma-js/src/io/lch/lch2lab.mjs +21 -0
  165. package/dist/esm/node_modules/chroma-js/src/io/lch/lch2lab.mjs.map +1 -0
  166. package/dist/esm/node_modules/chroma-js/src/io/lch/lch2rgb.mjs +15 -0
  167. package/dist/esm/node_modules/chroma-js/src/io/lch/lch2rgb.mjs.map +1 -0
  168. package/dist/esm/node_modules/chroma-js/src/io/lch/rgb2lch.mjs +14 -0
  169. package/dist/esm/node_modules/chroma-js/src/io/lch/rgb2lch.mjs.map +1 -0
  170. package/dist/esm/node_modules/chroma-js/src/io/named/index.mjs +30 -0
  171. package/dist/esm/node_modules/chroma-js/src/io/named/index.mjs.map +1 -0
  172. package/dist/esm/node_modules/chroma-js/src/io/num/index.mjs +33 -0
  173. package/dist/esm/node_modules/chroma-js/src/io/num/index.mjs.map +1 -0
  174. package/dist/esm/node_modules/chroma-js/src/io/num/num2rgb.mjs +14 -0
  175. package/dist/esm/node_modules/chroma-js/src/io/num/num2rgb.mjs.map +1 -0
  176. package/dist/esm/node_modules/chroma-js/src/io/num/rgb2num.mjs +10 -0
  177. package/dist/esm/node_modules/chroma-js/src/io/num/rgb2num.mjs.map +1 -0
  178. package/dist/esm/node_modules/chroma-js/src/io/oklab/index.mjs +29 -0
  179. package/dist/esm/node_modules/chroma-js/src/io/oklab/index.mjs.map +1 -0
  180. package/dist/esm/node_modules/chroma-js/src/io/oklab/oklab2rgb.mjs +36 -0
  181. package/dist/esm/node_modules/chroma-js/src/io/oklab/oklab2rgb.mjs.map +1 -0
  182. package/dist/esm/node_modules/chroma-js/src/io/oklab/rgb2oklab.mjs +39 -0
  183. package/dist/esm/node_modules/chroma-js/src/io/oklab/rgb2oklab.mjs.map +1 -0
  184. package/dist/esm/node_modules/chroma-js/src/io/oklch/index.mjs +29 -0
  185. package/dist/esm/node_modules/chroma-js/src/io/oklch/index.mjs.map +1 -0
  186. package/dist/esm/node_modules/chroma-js/src/io/oklch/oklch2rgb.mjs +15 -0
  187. package/dist/esm/node_modules/chroma-js/src/io/oklch/oklch2rgb.mjs.map +1 -0
  188. package/dist/esm/node_modules/chroma-js/src/io/oklch/rgb2oklch.mjs +14 -0
  189. package/dist/esm/node_modules/chroma-js/src/io/oklch/rgb2oklch.mjs.map +1 -0
  190. package/dist/esm/node_modules/chroma-js/src/io/rgb/index.mjs +47 -0
  191. package/dist/esm/node_modules/chroma-js/src/io/rgb/index.mjs.map +1 -0
  192. package/dist/esm/node_modules/chroma-js/src/io/temp/index.mjs +23 -0
  193. package/dist/esm/node_modules/chroma-js/src/io/temp/index.mjs.map +1 -0
  194. package/dist/esm/node_modules/chroma-js/src/io/temp/rgb2temperature.mjs +33 -0
  195. package/dist/esm/node_modules/chroma-js/src/io/temp/rgb2temperature.mjs.map +1 -0
  196. package/dist/esm/node_modules/chroma-js/src/io/temp/temperature2rgb.mjs +40 -0
  197. package/dist/esm/node_modules/chroma-js/src/io/temp/temperature2rgb.mjs.map +1 -0
  198. package/dist/esm/node_modules/chroma-js/src/ops/alpha.mjs +14 -0
  199. package/dist/esm/node_modules/chroma-js/src/ops/alpha.mjs.map +1 -0
  200. package/dist/esm/node_modules/chroma-js/src/ops/clipped.mjs +6 -0
  201. package/dist/esm/node_modules/chroma-js/src/ops/clipped.mjs.map +1 -0
  202. package/dist/esm/node_modules/chroma-js/src/ops/darken.mjs +18 -0
  203. package/dist/esm/node_modules/chroma-js/src/ops/darken.mjs.map +1 -0
  204. package/dist/esm/node_modules/chroma-js/src/ops/get.mjs +14 -0
  205. package/dist/esm/node_modules/chroma-js/src/ops/get.mjs.map +1 -0
  206. package/dist/esm/node_modules/chroma-js/src/ops/luminance.mjs +56 -0
  207. package/dist/esm/node_modules/chroma-js/src/ops/luminance.mjs.map +1 -0
  208. package/dist/esm/node_modules/chroma-js/src/ops/mix.mjs +11 -0
  209. package/dist/esm/node_modules/chroma-js/src/ops/mix.mjs.map +1 -0
  210. package/dist/esm/node_modules/chroma-js/src/ops/premultiply.mjs +13 -0
  211. package/dist/esm/node_modules/chroma-js/src/ops/premultiply.mjs.map +1 -0
  212. package/dist/esm/node_modules/chroma-js/src/ops/saturate.mjs +16 -0
  213. package/dist/esm/node_modules/chroma-js/src/ops/saturate.mjs.map +1 -0
  214. package/dist/esm/node_modules/chroma-js/src/ops/set.mjs +44 -0
  215. package/dist/esm/node_modules/chroma-js/src/ops/set.mjs.map +1 -0
  216. package/dist/esm/node_modules/chroma-js/src/ops/shade.mjs +12 -0
  217. package/dist/esm/node_modules/chroma-js/src/ops/shade.mjs.map +1 -0
  218. package/dist/esm/node_modules/chroma-js/src/utils/analyze.mjs +194 -0
  219. package/dist/esm/node_modules/chroma-js/src/utils/analyze.mjs.map +1 -0
  220. package/dist/esm/node_modules/chroma-js/src/utils/clip_rgb.mjs +18 -0
  221. package/dist/esm/node_modules/chroma-js/src/utils/clip_rgb.mjs.map +1 -0
  222. package/dist/esm/node_modules/chroma-js/src/utils/contrast.mjs +15 -0
  223. package/dist/esm/node_modules/chroma-js/src/utils/contrast.mjs.map +1 -0
  224. package/dist/esm/node_modules/chroma-js/src/utils/contrastAPCA.mjs +71 -0
  225. package/dist/esm/node_modules/chroma-js/src/utils/contrastAPCA.mjs.map +1 -0
  226. package/dist/esm/node_modules/chroma-js/src/utils/delta-e.mjs +66 -0
  227. package/dist/esm/node_modules/chroma-js/src/utils/delta-e.mjs.map +1 -0
  228. package/dist/esm/node_modules/chroma-js/src/utils/distance.mjs +20 -0
  229. package/dist/esm/node_modules/chroma-js/src/utils/distance.mjs.map +1 -0
  230. package/dist/esm/node_modules/chroma-js/src/utils/index.mjs +24 -0
  231. package/dist/esm/node_modules/chroma-js/src/utils/index.mjs.map +1 -0
  232. package/dist/esm/node_modules/chroma-js/src/utils/last.mjs +11 -0
  233. package/dist/esm/node_modules/chroma-js/src/utils/last.mjs.map +1 -0
  234. package/dist/esm/node_modules/chroma-js/src/utils/limit.mjs +8 -0
  235. package/dist/esm/node_modules/chroma-js/src/utils/limit.mjs.map +1 -0
  236. package/dist/esm/node_modules/chroma-js/src/utils/multiply-matrices.mjs +39 -0
  237. package/dist/esm/node_modules/chroma-js/src/utils/multiply-matrices.mjs.map +1 -0
  238. package/dist/esm/node_modules/chroma-js/src/utils/scales.mjs +19 -0
  239. package/dist/esm/node_modules/chroma-js/src/utils/scales.mjs.map +1 -0
  240. package/dist/esm/node_modules/chroma-js/src/utils/type.mjs +21 -0
  241. package/dist/esm/node_modules/chroma-js/src/utils/type.mjs.map +1 -0
  242. package/dist/esm/node_modules/chroma-js/src/utils/unpack.mjs +20 -0
  243. package/dist/esm/node_modules/chroma-js/src/utils/unpack.mjs.map +1 -0
  244. package/dist/esm/node_modules/chroma-js/src/utils/valid.mjs +14 -0
  245. package/dist/esm/node_modules/chroma-js/src/utils/valid.mjs.map +1 -0
  246. package/dist/esm/node_modules/chroma-js/src/version.mjs +5 -0
  247. package/dist/esm/node_modules/chroma-js/src/version.mjs.map +1 -0
  248. package/dist/esm/packages/core/src/public/b2b/ui.mjs.map +1 -1
  249. package/dist/esm/packages/web/src/ui/b2b/App.mjs +2 -2
  250. package/dist/esm/packages/web/src/ui/b2b/App.mjs.map +1 -1
  251. package/dist/esm/packages/web/src/ui/b2b/components/Icons.mjs +3 -1
  252. package/dist/esm/packages/web/src/ui/b2b/components/Icons.mjs.map +1 -1
  253. package/dist/esm/packages/web/src/ui/b2c/AppContainer.mjs +1 -1
  254. package/dist/esm/packages/web/src/ui/b2c/AppContainer.mjs.map +1 -1
  255. package/dist/esm/packages/web/src/ui/b2c/IDPContainer.mjs +1 -1
  256. package/dist/esm/packages/web/src/ui/b2c/IDPContainer.mjs.map +1 -1
  257. package/dist/esm/packages/web/src/ui/b2c/PasskeyRegistrationContainer.mjs +1 -1
  258. package/dist/esm/packages/web/src/ui/b2c/PasskeyRegistrationContainer.mjs.map +1 -1
  259. package/dist/esm/packages/web/src/ui/b2c/ResetPasswordContainer.mjs +1 -1
  260. package/dist/esm/packages/web/src/ui/b2c/ResetPasswordContainer.mjs.map +1 -1
  261. package/dist/esm/packages/web/src/ui/b2c/screens/Crypto/SetupNewWallet.mjs +12 -11
  262. package/dist/esm/packages/web/src/ui/b2c/screens/Crypto/SetupNewWallet.mjs.map +1 -1
  263. package/dist/esm/packages/web/src/ui/b2c/screens/Crypto/WalletButtons.mjs +12 -14
  264. package/dist/esm/packages/web/src/ui/b2c/screens/Crypto/WalletButtons.mjs.map +1 -1
  265. package/dist/esm/packages/web/src/ui/b2c/screens/Secondary/PasswordlessAuthenticate.mjs +6 -2
  266. package/dist/esm/packages/web/src/ui/b2c/screens/Secondary/PasswordlessAuthenticate.mjs.map +1 -1
  267. package/dist/esm/packages/web/src/ui/b2c/screens/Secondary/usePasswordlessAuthenticate.mjs +10 -0
  268. package/dist/esm/packages/web/src/ui/b2c/screens/Secondary/usePasswordlessAuthenticate.mjs.map +1 -1
  269. package/dist/esm/packages/web/src/ui/compat/generateColorFallback.mjs +63 -0
  270. package/dist/esm/packages/web/src/ui/compat/generateColorFallback.mjs.map +1 -0
  271. package/dist/esm/packages/web/src/ui/compat/styleToTheme.mjs +119 -0
  272. package/dist/esm/packages/web/src/ui/compat/styleToTheme.mjs.map +1 -0
  273. package/dist/esm/packages/web/src/ui/components/PresentationConfig.mjs.map +1 -1
  274. package/dist/esm/packages/web/src/ui/components/atoms/Typography.module.css.mjs +2 -2
  275. package/dist/esm/packages/web/src/ui/react/b2b/B2BIdentityProvider.mjs +1 -1
  276. package/dist/esm/packages/web/src/ui/react/b2b/B2BIdentityProvider.mjs.map +1 -1
  277. package/dist/esm/packages/web/src/ui/react/b2b/Stytch.mjs +1 -1
  278. package/dist/esm/packages/web/src/ui/react/b2b/Stytch.mjs.map +1 -1
  279. package/dist/esm/packages/web/src/ui/react/b2b/StytchB2BContext.mjs +1 -1
  280. package/dist/esm/packages/web/src/ui/react/b2b/StytchB2BContext.mjs.map +1 -1
  281. package/dist/esm/packages/web/src/ui/react/b2c/IdentityProvider.mjs +1 -1
  282. package/dist/esm/packages/web/src/ui/react/b2c/IdentityProvider.mjs.map +1 -1
  283. package/dist/esm/packages/web/src/ui/react/b2c/StytchContext.mjs +1 -1
  284. package/dist/esm/packages/web/src/ui/react/b2c/StytchContext.mjs.map +1 -1
  285. package/dist/esm/packages/web/src/ui/react/b2c/StytchLogin.mjs +1 -1
  286. package/dist/esm/packages/web/src/ui/react/b2c/StytchLogin.mjs.map +1 -1
  287. package/dist/esm/packages/web/src/ui/react/b2c/StytchPasskeyRegistration.mjs +1 -1
  288. package/dist/esm/packages/web/src/ui/react/b2c/StytchPasskeyRegistration.mjs.map +1 -1
  289. package/dist/esm/packages/web/src/ui/react/b2c/StytchPasswordReset.mjs +1 -1
  290. package/dist/esm/packages/web/src/ui/react/b2c/StytchPasswordReset.mjs.map +1 -1
  291. package/dist/esm/packages/web/src/ui/react/utils/errors.mjs.map +1 -1
  292. package/dist/esm/packages/web/src/utils/crypto.mjs +15 -14
  293. package/dist/esm/packages/web/src/utils/crypto.mjs.map +1 -1
  294. package/dist/esm/packages/web/src/utils/oauthProviderType.mjs +1 -1
  295. package/dist/esm/packages/web/src/utils/oauthProviderType.mjs.map +1 -1
  296. package/dist/esm-dev/_virtual/index3.mjs +5 -3
  297. package/dist/esm-dev/_virtual/index3.mjs.map +1 -1
  298. package/dist/esm-dev/_virtual/index4.mjs +3 -5
  299. package/dist/esm-dev/_virtual/index4.mjs.map +1 -1
  300. package/dist/esm-dev/b2b/StytchB2BContext.mjs +5 -5
  301. package/dist/esm-dev/b2b/StytchB2BContext.mjs.map +1 -1
  302. package/dist/esm-dev/compat.mjs +3 -0
  303. package/dist/esm-dev/compat.mjs.map +1 -0
  304. package/dist/esm-dev/node_modules/chroma-js/index.mjs +85 -0
  305. package/dist/esm-dev/node_modules/chroma-js/index.mjs.map +1 -0
  306. package/dist/esm-dev/node_modules/chroma-js/src/Color.mjs +53 -0
  307. package/dist/esm-dev/node_modules/chroma-js/src/Color.mjs.map +1 -0
  308. package/dist/esm-dev/node_modules/chroma-js/src/chroma.mjs +11 -0
  309. package/dist/esm-dev/node_modules/chroma-js/src/chroma.mjs.map +1 -0
  310. package/dist/esm-dev/node_modules/chroma-js/src/colors/colorbrewer.mjs +82 -0
  311. package/dist/esm-dev/node_modules/chroma-js/src/colors/colorbrewer.mjs.map +1 -0
  312. package/dist/esm-dev/node_modules/chroma-js/src/colors/w3cx11.mjs +165 -0
  313. package/dist/esm-dev/node_modules/chroma-js/src/colors/w3cx11.mjs.map +1 -0
  314. package/dist/esm-dev/node_modules/chroma-js/src/generator/average.mjs +92 -0
  315. package/dist/esm-dev/node_modules/chroma-js/src/generator/average.mjs.map +1 -0
  316. package/dist/esm-dev/node_modules/chroma-js/src/generator/bezier.mjs +89 -0
  317. package/dist/esm-dev/node_modules/chroma-js/src/generator/bezier.mjs.map +1 -0
  318. package/dist/esm-dev/node_modules/chroma-js/src/generator/blend.mjs +58 -0
  319. package/dist/esm-dev/node_modules/chroma-js/src/generator/blend.mjs.map +1 -0
  320. package/dist/esm-dev/node_modules/chroma-js/src/generator/cubehelix.mjs +93 -0
  321. package/dist/esm-dev/node_modules/chroma-js/src/generator/cubehelix.mjs.map +1 -0
  322. package/dist/esm-dev/node_modules/chroma-js/src/generator/mix.mjs +22 -0
  323. package/dist/esm-dev/node_modules/chroma-js/src/generator/mix.mjs.map +1 -0
  324. package/dist/esm-dev/node_modules/chroma-js/src/generator/random.mjs +16 -0
  325. package/dist/esm-dev/node_modules/chroma-js/src/generator/random.mjs.map +1 -0
  326. package/dist/esm-dev/node_modules/chroma-js/src/generator/scale.mjs +398 -0
  327. package/dist/esm-dev/node_modules/chroma-js/src/generator/scale.mjs.map +1 -0
  328. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/_hsx.mjs +62 -0
  329. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/_hsx.mjs.map +1 -0
  330. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/hcg.mjs +13 -0
  331. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/hcg.mjs.map +1 -0
  332. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/hsi.mjs +13 -0
  333. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/hsi.mjs.map +1 -0
  334. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/hsl.mjs +13 -0
  335. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/hsl.mjs.map +1 -0
  336. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/hsv.mjs +13 -0
  337. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/hsv.mjs.map +1 -0
  338. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/index.mjs +4 -0
  339. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/index.mjs.map +1 -0
  340. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/lab.mjs +20 -0
  341. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/lab.mjs.map +1 -0
  342. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/lch.mjs +14 -0
  343. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/lch.mjs.map +1 -0
  344. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/lrgb.mjs +21 -0
  345. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/lrgb.mjs.map +1 -0
  346. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/num.mjs +15 -0
  347. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/num.mjs.map +1 -0
  348. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/oklab.mjs +20 -0
  349. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/oklab.mjs.map +1 -0
  350. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/oklch.mjs +13 -0
  351. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/oklch.mjs.map +1 -0
  352. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/rgb.mjs +19 -0
  353. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/rgb.mjs.map +1 -0
  354. package/dist/esm-dev/node_modules/chroma-js/src/io/cmyk/cmyk2rgb.mjs +18 -0
  355. package/dist/esm-dev/node_modules/chroma-js/src/io/cmyk/cmyk2rgb.mjs.map +1 -0
  356. package/dist/esm-dev/node_modules/chroma-js/src/io/cmyk/index.mjs +29 -0
  357. package/dist/esm-dev/node_modules/chroma-js/src/io/cmyk/index.mjs.map +1 -0
  358. package/dist/esm-dev/node_modules/chroma-js/src/io/cmyk/rgb2cmyk.mjs +20 -0
  359. package/dist/esm-dev/node_modules/chroma-js/src/io/cmyk/rgb2cmyk.mjs.map +1 -0
  360. package/dist/esm-dev/node_modules/chroma-js/src/io/css/css2rgb.mjs +239 -0
  361. package/dist/esm-dev/node_modules/chroma-js/src/io/css/css2rgb.mjs.map +1 -0
  362. package/dist/esm-dev/node_modules/chroma-js/src/io/css/hsl2css.mjs +29 -0
  363. package/dist/esm-dev/node_modules/chroma-js/src/io/css/hsl2css.mjs.map +1 -0
  364. package/dist/esm-dev/node_modules/chroma-js/src/io/css/index.mjs +27 -0
  365. package/dist/esm-dev/node_modules/chroma-js/src/io/css/index.mjs.map +1 -0
  366. package/dist/esm-dev/node_modules/chroma-js/src/io/css/lab2css.mjs +27 -0
  367. package/dist/esm-dev/node_modules/chroma-js/src/io/css/lab2css.mjs.map +1 -0
  368. package/dist/esm-dev/node_modules/chroma-js/src/io/css/lch2css.mjs +27 -0
  369. package/dist/esm-dev/node_modules/chroma-js/src/io/css/lch2css.mjs.map +1 -0
  370. package/dist/esm-dev/node_modules/chroma-js/src/io/css/oklab2css.mjs +18 -0
  371. package/dist/esm-dev/node_modules/chroma-js/src/io/css/oklab2css.mjs.map +1 -0
  372. package/dist/esm-dev/node_modules/chroma-js/src/io/css/oklch2css.mjs +18 -0
  373. package/dist/esm-dev/node_modules/chroma-js/src/io/css/oklch2css.mjs.map +1 -0
  374. package/dist/esm-dev/node_modules/chroma-js/src/io/css/rgb2css.mjs +65 -0
  375. package/dist/esm-dev/node_modules/chroma-js/src/io/css/rgb2css.mjs.map +1 -0
  376. package/dist/esm-dev/node_modules/chroma-js/src/io/gl/index.mjs +24 -0
  377. package/dist/esm-dev/node_modules/chroma-js/src/io/gl/index.mjs.map +1 -0
  378. package/dist/esm-dev/node_modules/chroma-js/src/io/hcg/hcg2rgb.mjs +58 -0
  379. package/dist/esm-dev/node_modules/chroma-js/src/io/hcg/hcg2rgb.mjs.map +1 -0
  380. package/dist/esm-dev/node_modules/chroma-js/src/io/hcg/index.mjs +29 -0
  381. package/dist/esm-dev/node_modules/chroma-js/src/io/hcg/index.mjs.map +1 -0
  382. package/dist/esm-dev/node_modules/chroma-js/src/io/hcg/rgb2hcg.mjs +25 -0
  383. package/dist/esm-dev/node_modules/chroma-js/src/io/hcg/rgb2hcg.mjs.map +1 -0
  384. package/dist/esm-dev/node_modules/chroma-js/src/io/hex/hex2rgb.mjs +57 -0
  385. package/dist/esm-dev/node_modules/chroma-js/src/io/hex/hex2rgb.mjs.map +1 -0
  386. package/dist/esm-dev/node_modules/chroma-js/src/io/hex/index.mjs +30 -0
  387. package/dist/esm-dev/node_modules/chroma-js/src/io/hex/index.mjs.map +1 -0
  388. package/dist/esm-dev/node_modules/chroma-js/src/io/hex/rgb2hex.mjs +33 -0
  389. package/dist/esm-dev/node_modules/chroma-js/src/io/hex/rgb2hex.mjs.map +1 -0
  390. package/dist/esm-dev/node_modules/chroma-js/src/io/hsi/hsi2rgb.mjs +49 -0
  391. package/dist/esm-dev/node_modules/chroma-js/src/io/hsi/hsi2rgb.mjs.map +1 -0
  392. package/dist/esm-dev/node_modules/chroma-js/src/io/hsi/index.mjs +29 -0
  393. package/dist/esm-dev/node_modules/chroma-js/src/io/hsi/index.mjs.map +1 -0
  394. package/dist/esm-dev/node_modules/chroma-js/src/io/hsi/rgb2hsi.mjs +34 -0
  395. package/dist/esm-dev/node_modules/chroma-js/src/io/hsi/rgb2hsi.mjs.map +1 -0
  396. package/dist/esm-dev/node_modules/chroma-js/src/io/hsl/hsl2rgb.mjs +37 -0
  397. package/dist/esm-dev/node_modules/chroma-js/src/io/hsl/hsl2rgb.mjs.map +1 -0
  398. package/dist/esm-dev/node_modules/chroma-js/src/io/hsl/index.mjs +29 -0
  399. package/dist/esm-dev/node_modules/chroma-js/src/io/hsl/index.mjs.map +1 -0
  400. package/dist/esm-dev/node_modules/chroma-js/src/io/hsl/rgb2hsl.mjs +47 -0
  401. package/dist/esm-dev/node_modules/chroma-js/src/io/hsl/rgb2hsl.mjs.map +1 -0
  402. package/dist/esm-dev/node_modules/chroma-js/src/io/hsv/hsv2rgb.mjs +50 -0
  403. package/dist/esm-dev/node_modules/chroma-js/src/io/hsv/hsv2rgb.mjs.map +1 -0
  404. package/dist/esm-dev/node_modules/chroma-js/src/io/hsv/index.mjs +29 -0
  405. package/dist/esm-dev/node_modules/chroma-js/src/io/hsv/index.mjs.map +1 -0
  406. package/dist/esm-dev/node_modules/chroma-js/src/io/hsv/rgb2hsv.mjs +35 -0
  407. package/dist/esm-dev/node_modules/chroma-js/src/io/hsv/rgb2hsv.mjs.map +1 -0
  408. package/dist/esm-dev/node_modules/chroma-js/src/io/input.mjs +7 -0
  409. package/dist/esm-dev/node_modules/chroma-js/src/io/input.mjs.map +1 -0
  410. package/dist/esm-dev/node_modules/chroma-js/src/io/lab/index.mjs +30 -0
  411. package/dist/esm-dev/node_modules/chroma-js/src/io/lab/index.mjs.map +1 -0
  412. package/dist/esm-dev/node_modules/chroma-js/src/io/lab/lab-constants.mjs +116 -0
  413. package/dist/esm-dev/node_modules/chroma-js/src/io/lab/lab-constants.mjs.map +1 -0
  414. package/dist/esm-dev/node_modules/chroma-js/src/io/lab/lab2rgb.mjs +102 -0
  415. package/dist/esm-dev/node_modules/chroma-js/src/io/lab/lab2rgb.mjs.map +1 -0
  416. package/dist/esm-dev/node_modules/chroma-js/src/io/lab/rgb2lab.mjs +68 -0
  417. package/dist/esm-dev/node_modules/chroma-js/src/io/lab/rgb2lab.mjs.map +1 -0
  418. package/dist/esm-dev/node_modules/chroma-js/src/io/lch/hcl2rgb.mjs +11 -0
  419. package/dist/esm-dev/node_modules/chroma-js/src/io/lch/hcl2rgb.mjs.map +1 -0
  420. package/dist/esm-dev/node_modules/chroma-js/src/io/lch/index.mjs +38 -0
  421. package/dist/esm-dev/node_modules/chroma-js/src/io/lch/index.mjs.map +1 -0
  422. package/dist/esm-dev/node_modules/chroma-js/src/io/lch/lab2lch.mjs +15 -0
  423. package/dist/esm-dev/node_modules/chroma-js/src/io/lch/lab2lch.mjs.map +1 -0
  424. package/dist/esm-dev/node_modules/chroma-js/src/io/lch/lch2lab.mjs +21 -0
  425. package/dist/esm-dev/node_modules/chroma-js/src/io/lch/lch2lab.mjs.map +1 -0
  426. package/dist/esm-dev/node_modules/chroma-js/src/io/lch/lch2rgb.mjs +15 -0
  427. package/dist/esm-dev/node_modules/chroma-js/src/io/lch/lch2rgb.mjs.map +1 -0
  428. package/dist/esm-dev/node_modules/chroma-js/src/io/lch/rgb2lch.mjs +14 -0
  429. package/dist/esm-dev/node_modules/chroma-js/src/io/lch/rgb2lch.mjs.map +1 -0
  430. package/dist/esm-dev/node_modules/chroma-js/src/io/named/index.mjs +30 -0
  431. package/dist/esm-dev/node_modules/chroma-js/src/io/named/index.mjs.map +1 -0
  432. package/dist/esm-dev/node_modules/chroma-js/src/io/num/index.mjs +33 -0
  433. package/dist/esm-dev/node_modules/chroma-js/src/io/num/index.mjs.map +1 -0
  434. package/dist/esm-dev/node_modules/chroma-js/src/io/num/num2rgb.mjs +14 -0
  435. package/dist/esm-dev/node_modules/chroma-js/src/io/num/num2rgb.mjs.map +1 -0
  436. package/dist/esm-dev/node_modules/chroma-js/src/io/num/rgb2num.mjs +10 -0
  437. package/dist/esm-dev/node_modules/chroma-js/src/io/num/rgb2num.mjs.map +1 -0
  438. package/dist/esm-dev/node_modules/chroma-js/src/io/oklab/index.mjs +29 -0
  439. package/dist/esm-dev/node_modules/chroma-js/src/io/oklab/index.mjs.map +1 -0
  440. package/dist/esm-dev/node_modules/chroma-js/src/io/oklab/oklab2rgb.mjs +36 -0
  441. package/dist/esm-dev/node_modules/chroma-js/src/io/oklab/oklab2rgb.mjs.map +1 -0
  442. package/dist/esm-dev/node_modules/chroma-js/src/io/oklab/rgb2oklab.mjs +39 -0
  443. package/dist/esm-dev/node_modules/chroma-js/src/io/oklab/rgb2oklab.mjs.map +1 -0
  444. package/dist/esm-dev/node_modules/chroma-js/src/io/oklch/index.mjs +29 -0
  445. package/dist/esm-dev/node_modules/chroma-js/src/io/oklch/index.mjs.map +1 -0
  446. package/dist/esm-dev/node_modules/chroma-js/src/io/oklch/oklch2rgb.mjs +15 -0
  447. package/dist/esm-dev/node_modules/chroma-js/src/io/oklch/oklch2rgb.mjs.map +1 -0
  448. package/dist/esm-dev/node_modules/chroma-js/src/io/oklch/rgb2oklch.mjs +14 -0
  449. package/dist/esm-dev/node_modules/chroma-js/src/io/oklch/rgb2oklch.mjs.map +1 -0
  450. package/dist/esm-dev/node_modules/chroma-js/src/io/rgb/index.mjs +47 -0
  451. package/dist/esm-dev/node_modules/chroma-js/src/io/rgb/index.mjs.map +1 -0
  452. package/dist/esm-dev/node_modules/chroma-js/src/io/temp/index.mjs +23 -0
  453. package/dist/esm-dev/node_modules/chroma-js/src/io/temp/index.mjs.map +1 -0
  454. package/dist/esm-dev/node_modules/chroma-js/src/io/temp/rgb2temperature.mjs +33 -0
  455. package/dist/esm-dev/node_modules/chroma-js/src/io/temp/rgb2temperature.mjs.map +1 -0
  456. package/dist/esm-dev/node_modules/chroma-js/src/io/temp/temperature2rgb.mjs +40 -0
  457. package/dist/esm-dev/node_modules/chroma-js/src/io/temp/temperature2rgb.mjs.map +1 -0
  458. package/dist/esm-dev/node_modules/chroma-js/src/ops/alpha.mjs +14 -0
  459. package/dist/esm-dev/node_modules/chroma-js/src/ops/alpha.mjs.map +1 -0
  460. package/dist/esm-dev/node_modules/chroma-js/src/ops/clipped.mjs +6 -0
  461. package/dist/esm-dev/node_modules/chroma-js/src/ops/clipped.mjs.map +1 -0
  462. package/dist/esm-dev/node_modules/chroma-js/src/ops/darken.mjs +18 -0
  463. package/dist/esm-dev/node_modules/chroma-js/src/ops/darken.mjs.map +1 -0
  464. package/dist/esm-dev/node_modules/chroma-js/src/ops/get.mjs +14 -0
  465. package/dist/esm-dev/node_modules/chroma-js/src/ops/get.mjs.map +1 -0
  466. package/dist/esm-dev/node_modules/chroma-js/src/ops/luminance.mjs +56 -0
  467. package/dist/esm-dev/node_modules/chroma-js/src/ops/luminance.mjs.map +1 -0
  468. package/dist/esm-dev/node_modules/chroma-js/src/ops/mix.mjs +11 -0
  469. package/dist/esm-dev/node_modules/chroma-js/src/ops/mix.mjs.map +1 -0
  470. package/dist/esm-dev/node_modules/chroma-js/src/ops/premultiply.mjs +13 -0
  471. package/dist/esm-dev/node_modules/chroma-js/src/ops/premultiply.mjs.map +1 -0
  472. package/dist/esm-dev/node_modules/chroma-js/src/ops/saturate.mjs +16 -0
  473. package/dist/esm-dev/node_modules/chroma-js/src/ops/saturate.mjs.map +1 -0
  474. package/dist/esm-dev/node_modules/chroma-js/src/ops/set.mjs +44 -0
  475. package/dist/esm-dev/node_modules/chroma-js/src/ops/set.mjs.map +1 -0
  476. package/dist/esm-dev/node_modules/chroma-js/src/ops/shade.mjs +12 -0
  477. package/dist/esm-dev/node_modules/chroma-js/src/ops/shade.mjs.map +1 -0
  478. package/dist/esm-dev/node_modules/chroma-js/src/utils/analyze.mjs +194 -0
  479. package/dist/esm-dev/node_modules/chroma-js/src/utils/analyze.mjs.map +1 -0
  480. package/dist/esm-dev/node_modules/chroma-js/src/utils/clip_rgb.mjs +18 -0
  481. package/dist/esm-dev/node_modules/chroma-js/src/utils/clip_rgb.mjs.map +1 -0
  482. package/dist/esm-dev/node_modules/chroma-js/src/utils/contrast.mjs +15 -0
  483. package/dist/esm-dev/node_modules/chroma-js/src/utils/contrast.mjs.map +1 -0
  484. package/dist/esm-dev/node_modules/chroma-js/src/utils/contrastAPCA.mjs +71 -0
  485. package/dist/esm-dev/node_modules/chroma-js/src/utils/contrastAPCA.mjs.map +1 -0
  486. package/dist/esm-dev/node_modules/chroma-js/src/utils/delta-e.mjs +66 -0
  487. package/dist/esm-dev/node_modules/chroma-js/src/utils/delta-e.mjs.map +1 -0
  488. package/dist/esm-dev/node_modules/chroma-js/src/utils/distance.mjs +20 -0
  489. package/dist/esm-dev/node_modules/chroma-js/src/utils/distance.mjs.map +1 -0
  490. package/dist/esm-dev/node_modules/chroma-js/src/utils/index.mjs +24 -0
  491. package/dist/esm-dev/node_modules/chroma-js/src/utils/index.mjs.map +1 -0
  492. package/dist/esm-dev/node_modules/chroma-js/src/utils/last.mjs +11 -0
  493. package/dist/esm-dev/node_modules/chroma-js/src/utils/last.mjs.map +1 -0
  494. package/dist/esm-dev/node_modules/chroma-js/src/utils/limit.mjs +8 -0
  495. package/dist/esm-dev/node_modules/chroma-js/src/utils/limit.mjs.map +1 -0
  496. package/dist/esm-dev/node_modules/chroma-js/src/utils/multiply-matrices.mjs +39 -0
  497. package/dist/esm-dev/node_modules/chroma-js/src/utils/multiply-matrices.mjs.map +1 -0
  498. package/dist/esm-dev/node_modules/chroma-js/src/utils/scales.mjs +19 -0
  499. package/dist/esm-dev/node_modules/chroma-js/src/utils/scales.mjs.map +1 -0
  500. package/dist/esm-dev/node_modules/chroma-js/src/utils/type.mjs +21 -0
  501. package/dist/esm-dev/node_modules/chroma-js/src/utils/type.mjs.map +1 -0
  502. package/dist/esm-dev/node_modules/chroma-js/src/utils/unpack.mjs +20 -0
  503. package/dist/esm-dev/node_modules/chroma-js/src/utils/unpack.mjs.map +1 -0
  504. package/dist/esm-dev/node_modules/chroma-js/src/utils/valid.mjs +14 -0
  505. package/dist/esm-dev/node_modules/chroma-js/src/utils/valid.mjs.map +1 -0
  506. package/dist/esm-dev/node_modules/chroma-js/src/version.mjs +5 -0
  507. package/dist/esm-dev/node_modules/chroma-js/src/version.mjs.map +1 -0
  508. package/dist/esm-dev/packages/core/src/public/b2b/ui.mjs.map +1 -1
  509. package/dist/esm-dev/packages/core/src/utils/dev.mjs +7 -1
  510. package/dist/esm-dev/packages/core/src/utils/dev.mjs.map +1 -1
  511. package/dist/esm-dev/packages/web/src/adminPortal/utils/theme.mjs +1 -1
  512. package/dist/esm-dev/packages/web/src/ui/b2b/App.mjs +14 -2
  513. package/dist/esm-dev/packages/web/src/ui/b2b/App.mjs.map +1 -1
  514. package/dist/esm-dev/packages/web/src/ui/b2b/components/Icons.mjs +3 -1
  515. package/dist/esm-dev/packages/web/src/ui/b2b/components/Icons.mjs.map +1 -1
  516. package/dist/esm-dev/packages/web/src/ui/b2c/AppContainer.mjs +8 -1
  517. package/dist/esm-dev/packages/web/src/ui/b2c/AppContainer.mjs.map +1 -1
  518. package/dist/esm-dev/packages/web/src/ui/b2c/IDPContainer.mjs +8 -1
  519. package/dist/esm-dev/packages/web/src/ui/b2c/IDPContainer.mjs.map +1 -1
  520. package/dist/esm-dev/packages/web/src/ui/b2c/PasskeyRegistrationContainer.mjs +8 -1
  521. package/dist/esm-dev/packages/web/src/ui/b2c/PasskeyRegistrationContainer.mjs.map +1 -1
  522. package/dist/esm-dev/packages/web/src/ui/b2c/ResetPasswordContainer.mjs +8 -1
  523. package/dist/esm-dev/packages/web/src/ui/b2c/ResetPasswordContainer.mjs.map +1 -1
  524. package/dist/esm-dev/packages/web/src/ui/b2c/screens/Crypto/SetupNewWallet.mjs +12 -11
  525. package/dist/esm-dev/packages/web/src/ui/b2c/screens/Crypto/SetupNewWallet.mjs.map +1 -1
  526. package/dist/esm-dev/packages/web/src/ui/b2c/screens/Crypto/WalletButtons.mjs +12 -14
  527. package/dist/esm-dev/packages/web/src/ui/b2c/screens/Crypto/WalletButtons.mjs.map +1 -1
  528. package/dist/esm-dev/packages/web/src/ui/b2c/screens/Secondary/PasswordlessAuthenticate.mjs +6 -2
  529. package/dist/esm-dev/packages/web/src/ui/b2c/screens/Secondary/PasswordlessAuthenticate.mjs.map +1 -1
  530. package/dist/esm-dev/packages/web/src/ui/b2c/screens/Secondary/usePasswordlessAuthenticate.mjs +10 -0
  531. package/dist/esm-dev/packages/web/src/ui/b2c/screens/Secondary/usePasswordlessAuthenticate.mjs.map +1 -1
  532. package/dist/esm-dev/packages/web/src/ui/compat/generateColorFallback.mjs +63 -0
  533. package/dist/esm-dev/packages/web/src/ui/compat/generateColorFallback.mjs.map +1 -0
  534. package/dist/esm-dev/packages/web/src/ui/compat/styleToTheme.mjs +166 -0
  535. package/dist/esm-dev/packages/web/src/ui/compat/styleToTheme.mjs.map +1 -0
  536. package/dist/esm-dev/packages/web/src/ui/components/PresentationConfig.mjs +3 -2
  537. package/dist/esm-dev/packages/web/src/ui/components/PresentationConfig.mjs.map +1 -1
  538. package/dist/esm-dev/packages/web/src/ui/components/atoms/Typography.module.css.mjs +2 -2
  539. package/dist/esm-dev/packages/web/src/ui/react/b2b/B2BIdentityProvider.mjs +1 -1
  540. package/dist/esm-dev/packages/web/src/ui/react/b2b/B2BIdentityProvider.mjs.map +1 -1
  541. package/dist/esm-dev/packages/web/src/ui/react/b2b/Stytch.mjs +1 -1
  542. package/dist/esm-dev/packages/web/src/ui/react/b2b/Stytch.mjs.map +1 -1
  543. package/dist/esm-dev/packages/web/src/ui/react/b2b/StytchB2BContext.mjs +1 -1
  544. package/dist/esm-dev/packages/web/src/ui/react/b2b/StytchB2BContext.mjs.map +1 -1
  545. package/dist/esm-dev/packages/web/src/ui/react/b2c/IdentityProvider.mjs +1 -1
  546. package/dist/esm-dev/packages/web/src/ui/react/b2c/IdentityProvider.mjs.map +1 -1
  547. package/dist/esm-dev/packages/web/src/ui/react/b2c/StytchContext.mjs +1 -1
  548. package/dist/esm-dev/packages/web/src/ui/react/b2c/StytchContext.mjs.map +1 -1
  549. package/dist/esm-dev/packages/web/src/ui/react/b2c/StytchLogin.mjs +1 -1
  550. package/dist/esm-dev/packages/web/src/ui/react/b2c/StytchLogin.mjs.map +1 -1
  551. package/dist/esm-dev/packages/web/src/ui/react/b2c/StytchPasskeyRegistration.mjs +1 -1
  552. package/dist/esm-dev/packages/web/src/ui/react/b2c/StytchPasskeyRegistration.mjs.map +1 -1
  553. package/dist/esm-dev/packages/web/src/ui/react/b2c/StytchPasswordReset.mjs +1 -1
  554. package/dist/esm-dev/packages/web/src/ui/react/b2c/StytchPasswordReset.mjs.map +1 -1
  555. package/dist/esm-dev/packages/web/src/ui/react/utils/errors.mjs +8 -4
  556. package/dist/esm-dev/packages/web/src/ui/react/utils/errors.mjs.map +1 -1
  557. package/dist/esm-dev/packages/web/src/utils/crypto.mjs +15 -14
  558. package/dist/esm-dev/packages/web/src/utils/crypto.mjs.map +1 -1
  559. package/dist/esm-dev/packages/web/src/utils/oauthProviderType.mjs +1 -1
  560. package/dist/esm-dev/packages/web/src/utils/oauthProviderType.mjs.map +1 -1
  561. package/dist/types/PresentationConfig-CcNEXkjS.d.ts +172 -0
  562. package/dist/types/{StytchB2BClient-C_7NUKZh.d.ts → StytchB2BClient-D16e_lp1.d.ts} +2 -1
  563. package/dist/types/{StytchClient-Ccvk8Nj1.d.ts → StytchClient-BwQdJzdj.d.ts} +2 -1
  564. package/dist/types/adminPortal/index.d.ts +5 -3
  565. package/dist/types/b2b/index.d.ts +27 -16
  566. package/dist/types/b2b/index.headless.d.ts +5 -4
  567. package/dist/types/compat.d.ts +46 -0
  568. package/dist/types/createAuthUrlHandler-R1kNNQD_.d.ts +2406 -0
  569. package/dist/types/{idpHelpers-aCVwNrDk.d.ts → idpHelpers-BQP76WgZ.d.ts} +1 -1
  570. package/dist/types/index.d.ts +36 -13
  571. package/dist/types/index.headless.d.ts +5 -4
  572. package/dist/types/{shadcn-0e4fkV5Z.d.ts → shadcn-B04UXoBD.d.ts} +10 -169
  573. package/dist/types/{createAuthUrlHandler-BJRA2PHG.d.ts → ui-B7IvSGQf.d.ts} +1123 -3525
  574. package/package.json +1 -1
  575. package/dist/cjs/index-Ni_dyEsz.js.map +0 -1
  576. package/dist/cjs/shadcn-B8TEzQMT.js.map +0 -1
  577. package/dist/cjs-dev/StytchSSRProxy-CxXsyme4.js.map +0 -1
  578. package/dist/cjs-dev/idpHelpers-Cf8Qq1B4.js.map +0 -1
  579. package/dist/cjs-dev/index-DdK3Jt4u.js.map +0 -1
  580. package/dist/cjs-dev/shadcn-C4w3DtKK.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../core/src/Events.ts","../../../web/src/ui/react/b2c/StytchContext.tsx","../../../web/src/messages/en.ts","../../../web/src/ui/b2c/reducer.ts","../../../web/src/ui/b2c/GlobalContextProvider.tsx","../../../web/src/ui/b2c/utils.ts","../../../web/src/ui/hooks/useIsOnlyFloatingOneTap.ts","../../../web/src/ui/hooks/usePromptPasskey.ts","../../../web/src/ui/b2c/screens/Main/index.tsx","../../../web/src/ui/b2c/Container.tsx","../../../web/src/ui/b2c/AppContainer.tsx","../../../web/src/ui/react/bindings/createB2CComponent.tsx","../../../web/src/ui/react/b2c/StytchLogin.tsx","../../../web/src/assets/genericWallet.tsx","../../../web/src/assets/passkeys.tsx","../../../web/src/ui/b2c/screens/Main/LoginForm/OTPForm.tsx","../../../../node_modules/base-x/src/index.js","../../../../node_modules/bs58/index.js","../../../web/src/assets/logo-color/Amazon.tsx","../../../web/src/assets/logo-color/Apple.tsx","../../../web/src/assets/logo-color/Binance.tsx","../../../web/src/assets/logo-color/Bitbucket.tsx","../../../web/src/assets/logo-color/Coinbase.tsx","../../../web/src/assets/logo-color/Discord.tsx","../../../web/src/assets/logo-color/Facebook.tsx","../../../web/src/assets/logo-color/Figma.tsx","../../../web/src/assets/logo-color/Gitlab.tsx","../../../web/src/assets/logo-color/Linkedin.tsx","../../../web/src/assets/logo-color/Metamask.tsx","../../../web/src/assets/logo-color/Phantom.tsx","../../../web/src/assets/logo-color/Salesforce.tsx","../../../web/src/assets/logo-color/Snapchat.tsx","../../../web/src/assets/logo-color/Tiktok.tsx","../../../web/src/assets/logo-color/Twitch.tsx","../../../web/src/assets/logo-color/XTwitter.tsx","../../../web/src/assets/logo-color/Yahoo.tsx","../../../web/src/utils/crypto.tsx","../../../web/src/ui/b2c/screens/Crypto/WalletButtons.tsx","../../../web/src/ui/b2c/screens/Secondary/usePasswordlessAuthenticate.ts","../../../web/src/ui/b2c/screens/Secondary/EmailConfirmation.tsx","../../../../node_modules/@radix-ui/react-compose-refs/dist/index.mjs","../../../../node_modules/@radix-ui/react-slot/dist/index.mjs","../../../../node_modules/@radix-ui/react-primitive/dist/index.mjs","../../../../node_modules/@radix-ui/react-context/dist/index.mjs","../../../../node_modules/@radix-ui/react-collection/dist/index.mjs","../../../../node_modules/@radix-ui/primitive/dist/index.mjs","../../../../node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs","../../../../node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs","../../../../node_modules/@radix-ui/react-presence/dist/index.mjs","../../../../node_modules/@radix-ui/react-id/dist/index.mjs","../../../../node_modules/@radix-ui/react-direction/dist/index.mjs","../../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs","../../../../node_modules/@radix-ui/react-roving-focus/dist/index.mjs","../../../../node_modules/@radix-ui/react-tabs/dist/index.mjs","../../../web/src/ui/b2c/StytchProduct.ts","../../../web/src/ui/b2c/screens/Main/LoginForm/index.tsx","../../../web/src/ui/b2c/screens/Main/LoginForm/MagicLinkForm.tsx","../../../web/src/ui/b2c/components/OAuthButton.tsx","../../../web/src/ui/b2c/screens/Main/useLastUsedOAuth.tsx","../../../web/src/ui/b2c/components/GoogleOneTap.tsx","../../../web/src/ui/b2c/screens/Main/OAuthButtons.tsx","../../../web/src/ui/b2c/screens/Secondary/OTPAuthenticate.tsx","../../../web/src/ui/b2c/screens/Secondary/OTPConfirmation.tsx","../../../web/src/ui/b2c/screens/Password/PasswordNewUser.tsx","../../../web/src/ui/b2c/screens/Password/PasswordAuthenticate.tsx","../../../web/src/ui/b2c/screens/Secondary/PasswordlessAuthenticate.tsx","../../../web/src/ui/b2c/screens/Secondary/PasswordCreateAuthenticate.tsx","../../../web/src/ui/b2c/screens/Password/ResetPasswordScreen.tsx","../../../web/src/ui/b2c/screens/Password/useResetResendPasswordActions.tsx","../../../web/src/ui/b2c/screens/Password/PasswordForgot.tsx","../../../web/src/ui/b2c/screens/Password/PasswordBreached.tsx","../../../web/src/ui/b2c/screens/Password/PasswordSetNew.tsx","../../../web/src/ui/b2c/screens/Password/PasswordDedupe.tsx","../../../web/src/ui/b2c/screens/Password/PasswordConfirmation.tsx","../../../web/src/ui/b2c/screens/Main/LoginForm/PasswordForm.tsx","../../../web/src/utils/passkeys.ts","../../../web/src/ui/b2c/screens/Passkey/PasskeyRegistrationStart.tsx","../../../web/src/ui/hooks/useStytchUser.ts","../../../web/src/ui/b2c/screens/Passkey/EditableRow.tsx","../../../web/src/ui/b2c/screens/Passkey/PasskeyRegistrationSuccess.tsx","../../../web/src/ui/b2c/screens/Passkey/PasskeyConfirmation.tsx","../../../web/src/ui/b2c/screens/Main/LoginForm/PasskeyButton.tsx","../../../web/src/ui/b2c/screens/Crypto/ConnectWallet.tsx","../../../web/src/ui/b2c/screens/Crypto/SignMessage.tsx","../../../web/src/ui/b2c/screens/Crypto/OtherWallets.tsx","../../../web/src/ui/b2c/screens/Crypto/SetupNewWallet.tsx","../../../web/src/ui/b2c/screens/Crypto/Error.tsx","../../../web/src/ui/b2c/screens/Crypto/Success.tsx","../../../web/src/ui/b2c/components/Icons.ts","../../../web/src/ui/b2c/Products.tsx","../../../web/src/ui/b2c/ResetPasswordContainer.tsx","../../../web/src/ui/react/b2c/StytchPasswordReset.tsx","../../../web/src/ui/b2c/PasskeyRegistrationContainer.tsx","../../../web/src/ui/react/b2c/StytchPasskeyRegistration.tsx","../../../web/src/ui/b2c/screens/IdentityProvider/IDPConsent.tsx","../../../web/src/ui/b2c/IDPContainer.tsx","../../../web/src/ui/react/b2c/IdentityProvider.tsx","../../src/StytchContext.tsx","../../src/index.ts"],"sourcesContent":["import { RNUIProductConfig, TokenType, StytchSDKError } from './public';\nimport { BootstrapData, CommonLoginConfig, CommonB2BLoginConfig } from './types';\n\nexport enum EmailSentType {\n LoginOrCreateEML = 'login_or_create_eml',\n LoginOrCreateOTP = 'login_or_create_otp',\n ResetPassword = 'reset_password',\n}\n\nexport type AnalyticsEvent =\n | {\n name: 'sdk_instance_instantiated';\n details: {\n event_callback_registered: boolean;\n error_callback_registered: boolean;\n success_callback_registered: boolean;\n };\n }\n | {\n name: 'b2b_sdk_instance_instantiated';\n details: {\n event_callback_registered: boolean;\n error_callback_registered: boolean;\n success_callback_registered: boolean;\n };\n }\n | {\n name: 'render_login_screen';\n details: {\n options: CommonLoginConfig | RNUIProductConfig;\n bootstrap: BootstrapData;\n };\n }\n | {\n name: 'render_b2b_login_screen';\n details: {\n options: CommonB2BLoginConfig;\n bootstrap: BootstrapData;\n };\n }\n | {\n name: 'render_idp_screen';\n details: {\n bootstrap: BootstrapData;\n };\n }\n | {\n name: 'render_b2b_idp_screen';\n details: {\n bootstrap: BootstrapData;\n };\n }\n | {\n name: 'email_sent';\n details: {\n email: string;\n type: EmailSentType;\n };\n }\n | {\n name: 'email_try_again_clicked';\n details: {\n email: string;\n type: EmailSentType;\n };\n }\n | {\n name: 'start_oauth_flow';\n details: {\n provider_type: string;\n custom_scopes?: string[];\n cname_domain: string | null;\n pkce: boolean;\n provider_params?: Record<string, string>;\n };\n }\n | {\n name: 'deeplink_handled_success';\n details: {\n token_type: TokenType;\n };\n }\n | {\n name: 'deeplink_handled_failure';\n details: {\n error: StytchSDKError | undefined;\n };\n }\n | {\n name: 'oauth_success';\n details: {\n provider_type: string;\n };\n }\n | {\n name: 'oauth_failure';\n details: {\n error: StytchSDKError | string | undefined;\n };\n }\n | {\n name: 'ui_authentication_success';\n details: {\n method: 'oauth' | 'otp' | 'magicLinks' | 'passwords';\n };\n }\n | {\n name: 'render_b2b_admin_portal_sso';\n details: Record<string, never>;\n }\n | {\n name: 'render_b2b_admin_portal_org_settings';\n details: Record<string, never>;\n }\n | {\n name: 'render_b2b_admin_portal_member_management';\n details: Record<string, never>;\n }\n | {\n name: 'render_b2b_admin_portal_scim';\n details: Record<string, never>;\n };\n","'use client';\n\nimport React, {\n ComponentType,\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n} from 'react';\nimport { mergeWithStableProps } from '@stytch/js-utils';\nimport { PermissionsMap, Session, StytchProjectConfigurationInput, User } from '@stytch/core/public';\nimport { useAsyncState } from '../utils/async';\nimport { noProviderError, providerMustBeUniqueError } from '../utils/errors';\nimport { invariant } from '../utils/invariant';\nimport { isStytchSSRProxy } from '../bindings/StytchSSRProxy';\nimport { StytchClient } from '../../../StytchClient';\n\n// There's no user facing strings in this file\n/* eslint-disable lingui/no-unlocalized-strings */\n\ntype StytchContext<TProjectConfiguration extends StytchProjectConfigurationInput> =\n | {\n isMounted: false;\n }\n | {\n isMounted: true;\n client: StytchClient<TProjectConfiguration>;\n };\n\ntype SWRUserUninitialized = {\n /**\n * Either the active {@link User} object, or null if the user is not logged in.\n */\n user: null;\n /**\n * If true, indicates that the value returned is from the application cache and a state refresh is in progress.\n */\n fromCache: false;\n /**\n * If true, indicates that the SDK has completed initialization.\n */\n isInitialized: false;\n};\n\ntype SWRUserInitialized = {\n /**\n * Either the active {@link User} object, or null if the user is not logged in.\n */\n user: User | null;\n /**\n * If true, indicates that the value returned is from the application cache and a state refresh is in progress.\n */\n fromCache: boolean;\n /**\n * If true, indicates that the SDK has completed initialization.\n */\n isInitialized: true;\n};\n\ntype SWRUser<TAlwaysInitialized extends boolean = boolean> = TAlwaysInitialized extends true\n ? SWRUserInitialized\n : SWRUserInitialized | SWRUserUninitialized;\n\nconst initialUser: SWRUserUninitialized = {\n user: null,\n fromCache: false,\n isInitialized: false,\n};\n\ntype SWRSessionUninitialized = {\n /**\n * Either the active {@link Session} object, or null if the user is not logged in.\n */\n session: null;\n /**\n * If true, indicates that the value returned is from the application cache and a state refresh is in progress.\n */\n fromCache: false;\n /**\n * If true, indicates that the SDK has completed initialization.\n */\n isInitialized: false;\n};\n\ntype SWRSessionInitialized = {\n /**\n * Either the active {@link Session} object, or null if the user is not logged in.\n */\n session: Session | null;\n /**\n * If true, indicates that the value returned is from the application cache and a state refresh is in progress.\n */\n fromCache: boolean;\n /**\n * If true, indicates that the SDK has completed initialization.\n */\n isInitialized: true;\n};\n\ntype SWRSession<TAlwaysInitialized extends boolean = boolean> = TAlwaysInitialized extends true\n ? SWRSessionInitialized\n : SWRSessionInitialized | SWRSessionUninitialized;\n\nconst initialSession: SWRSessionUninitialized = {\n session: null,\n fromCache: false,\n isInitialized: false,\n};\n\nconst StytchContext = createContext<StytchContext<StytchProjectConfigurationInput>>({ isMounted: false });\nconst StytchUserContext = createContext<SWRUser>(initialUser);\nconst StytchSessionContext = createContext<SWRSession>(initialSession);\n\nexport const useIsMounted__INTERNAL = (): boolean => useContext(StytchContext).isMounted;\n\n/**\n * Returns the active User.\n * The Stytch SDKs are used for client-side authentication and session management.\n * Check the isInitialized property to determine if the SDK has completed initialization.\n * Check the fromCache property to determine if the user data is from persistent storage.\n * @example\n * const {user, isInitialized, fromCache} = useStytchUser();\n * if (!isInitialized) {\n * return <p>Loading...</p>;\n * }\n * return (<h1>Welcome, {user.name.first_name}</h1>);\n */\nexport const useStytchUser = <TAssumeHydrated extends boolean = false>(): SWRUser<TAssumeHydrated> => {\n invariant(useIsMounted__INTERNAL(), noProviderError('useStytchUser'));\n return useContext(StytchUserContext) as SWRUser<TAssumeHydrated>;\n};\n\n/**\n * Returns the active user's Stytch session.\n * The Stytch SDKs are used for client-side authentication and session management.\n * Check the isInitialized property to determine if the SDK has completed initialization.\n * Check the fromCache property to determine if the session data is from persistent storage.\n * @example\n * const {session, isInitialized, fromCache} = useStytchSession();\n * useEffect(() => {\n * if (!isInitialized) {\n * return;\n * }\n * if (!session) {\n * router.replace('/login')\n * }\n * }, [session, isInitialized]);\n */\nexport const useStytchSession = <TAssumeHydrated extends boolean = false>(): SWRSession<TAssumeHydrated> => {\n invariant(useIsMounted__INTERNAL(), noProviderError('useStytchSession'));\n return useContext(StytchSessionContext) as SWRSession<TAssumeHydrated>;\n};\n\n/**\n * Returns the Stytch client stored in the Stytch context.\n *\n * @example\n * const stytch = useStytch();\n * useEffect(() => {\n * stytch.magicLinks.authenticate('...')\n * }, [stytch]);\n */\nexport const useStytch = <\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n>(): StytchClient<TProjectConfiguration> => {\n const ctx = useContext(StytchContext);\n invariant(ctx.isMounted, noProviderError('useStytch'));\n return ctx.client as StytchClient<TProjectConfiguration>;\n};\n\nexport const withStytch = <\n T extends object,\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n>(\n Component: ComponentType<T & { stytch: StytchClient<TProjectConfiguration> }>,\n): ComponentType<T> => {\n const WithStytch: ComponentType<T> = (props) => {\n invariant(useIsMounted__INTERNAL(), noProviderError('withStytch'));\n return <Component {...props} stytch={useStytch()} />;\n };\n WithStytch.displayName = `withStytch(${Component.displayName || Component.name || 'Component'})`;\n return WithStytch;\n};\n\nexport const withStytchUser = <T extends object, TAssumeHydrated extends boolean = false>(\n Component: ComponentType<\n T & { stytchUser: User | null; stytchUserIsInitialized: boolean; stytchUserIsFromCache: boolean }\n >,\n): ComponentType<T> => {\n const WithStytchUser: ComponentType<T> = (props) => {\n invariant(useIsMounted__INTERNAL(), noProviderError('withStytchUser'));\n const { user, isInitialized, fromCache } = useStytchUser<TAssumeHydrated>();\n return (\n <Component\n {...props}\n stytchUser={user}\n stytchUserIsInitialized={isInitialized}\n stytchUserIsFromCache={fromCache}\n />\n );\n };\n WithStytchUser.displayName = `withStytchUser(${Component.displayName || Component.name || 'Component'})`;\n return WithStytchUser;\n};\n\nexport const withStytchSession = <T extends object, TAssumeHydrated extends boolean = false>(\n Component: ComponentType<\n T & { stytchSession: Session | null; stytchSessionIsInitialized: boolean; stytchSessionIsFromCache: boolean }\n >,\n): ComponentType<T> => {\n const WithStytchSession: ComponentType<T> = (props) => {\n invariant(useIsMounted__INTERNAL(), noProviderError('withStytchSession'));\n const { session, isInitialized, fromCache } = useStytchSession<TAssumeHydrated>();\n return (\n <Component\n {...props}\n stytchSession={session}\n stytchSessionIsInitialized={isInitialized}\n stytchSessionIsFromCache={fromCache}\n />\n );\n };\n WithStytchSession.displayName = `withStytchSession(${Component.displayName || Component.name || 'Component'})`;\n return WithStytchSession;\n};\n\ntype SWRIsAuthorizedUninitialized = {\n /**\n * Whether the logged-in user is allowed to perform the specified action on the specified resource.\n */\n isAuthorized: false;\n /**\n * If true, indicates that the value returned is from the application cache and a state refresh is in progress.\n */\n fromCache: false;\n /**\n * If true, indicates that the SDK has completed initialization.\n */\n isInitialized: false;\n};\n\ntype SWRIsAuthorizedInitialized = {\n /**\n * Whether the logged-in user is allowed to perform the specified action on the specified resource.\n */\n isAuthorized: boolean;\n /**\n * If true, indicates that the value returned is from the application cache and a state refresh is in progress.\n */\n fromCache: boolean;\n /**\n * If true, indicates that the SDK has completed initialization.\n */\n isInitialized: boolean;\n};\n\ntype SWRIsAuthorized<TAlwaysInitialized extends boolean> = TAlwaysInitialized extends true\n ? SWRIsAuthorizedInitialized\n : SWRIsAuthorizedInitialized | SWRIsAuthorizedUninitialized;\n\n/**\n * Determines whether the logged-in user is allowed to perform the specified action on the specified resource.\n * Returns `true` if the user can perform the action, `false` otherwise.\n *\n * If the user is not logged in, this method will always return false.\n * If the resource or action provided are not valid for the configured RBAC policy, this method will return false.\n *\n * Remember - authorization checks for sensitive actions should always occur on the backend as well.\n * @example\n * const { isAuthorized } = useStytchIsAuthorized<Permissions>('documents', 'edit');\n * return <button disabled={!isAuthorized}>Edit</button>\n */\nexport const useStytchIsAuthorized = <TAssumeHydrated extends boolean = false>(\n resourceId: string,\n action: string,\n): SWRIsAuthorized<TAssumeHydrated> => {\n invariant(useIsMounted__INTERNAL(), noProviderError('useStytchIsAuthorized', 'StytchProvider'));\n const client = useStytch();\n const { user } = useStytchUser();\n const [isAuthorized, setIsAuthorized] = useAsyncState<SWRIsAuthorized<boolean>>({\n isInitialized: false,\n fromCache: false,\n isAuthorized: false,\n });\n\n useEffect(() => {\n if (isStytchSSRProxy(client)) {\n return;\n }\n\n setIsAuthorized({\n isInitialized: true,\n fromCache: true,\n isAuthorized: client.rbac.isAuthorizedSync(resourceId, action),\n });\n }, [action, client, resourceId, setIsAuthorized]);\n\n useEffect(() => {\n if (isStytchSSRProxy(client)) {\n return;\n }\n client.rbac.isAuthorized(resourceId, action).then((isAuthorized) => {\n setIsAuthorized({ isAuthorized, fromCache: false, isInitialized: true });\n });\n }, [client, user?.roles, resourceId, action, setIsAuthorized]);\n\n return isAuthorized;\n};\n\ntype permissionsLoaded<Permissions extends Record<string, string>> =\n | {\n loaded: false;\n value: null;\n }\n | {\n loaded: true;\n value: PermissionsMap<Permissions>;\n };\n\n/**\n * Wrap your component with this HOC in order to receive the permissions for the logged-in user.\n * Evaluates all permissions granted to the logged-in user.\n * Returns a Record<RoleId, Record<Action, boolean>> response indicating the user's permissions.\n * Each boolean will be `true` if the user can perform the action, `false` otherwise.\n *\n * If the user is not logged in, all values will be false.\n *\n * Remember - authorization checks for sensitive actions should always occur on the backend as well.\n * @example\n * type Permissions = {\n * document: 'create' | 'read' | 'write\n * image: 'create' | 'read'\n * }\n *\n * const MyComponent = (props) => {\n * const canEditDocuments = props.stytchPermissions.document.edit;\n * const canReadImages = props.stytchPermissions.image.read;\n * }\n * return withStytchPermissions<Permissions>(MyComponent)\n */\nexport const withStytchPermissions = <Permissions extends Record<string, string>, T extends object>(\n Component: ComponentType<T & { stytchPermissions: PermissionsMap<Permissions> }>,\n): ComponentType<T> => {\n const WithStytchPermissions: ComponentType<T> = (props) => {\n invariant(useIsMounted__INTERNAL(), noProviderError('useRBACPermissions', 'StytchProvider'));\n const client = useStytch();\n const { user } = useStytchUser();\n const [permissions, setPermissions] = useAsyncState<permissionsLoaded<Permissions>>({ loaded: false, value: null });\n\n useEffect(() => {\n client.rbac.allPermissions<Permissions>().then((permissions) => {\n setPermissions({ loaded: true, value: permissions });\n });\n }, [client, user?.roles, setPermissions]);\n\n if (!permissions.loaded) {\n return null;\n }\n return <Component {...props} stytchPermissions={permissions.value} />;\n };\n WithStytchPermissions.displayName = `withStytchPermissions(${\n Component.displayName || Component.name || 'Component'\n })`;\n return WithStytchPermissions;\n};\n\nexport interface StytchProviderProps<\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n> {\n /**\n * A Stytch client instance, created using either {@link createStytchHeadlessClient} or {@link createStytchClient}\n */\n stytch: StytchClient<TProjectConfiguration>;\n /**\n * When true, the provider will assume that the component will only be\n * rendered in a browser environment, either in a single-page application or\n * after completing hydration of a server-rendered application. This allows\n * cached values to be retrieved from the browser on the first render, meaning\n * that the `isInitialized` value returned from Stytch hooks will be `true`\n * starting from the first render.\n *\n * When `false`, the provider will defer initialization until after the first\n * render, and `isInitialized` will initially be `false`.\n *\n * This value defaults to `false` in `@stytch/nextjs`.\n */\n assumeHydrated?: boolean;\n children?: ReactNode;\n}\n\n/**\n * The Stytch Context Provider.\n * Wrap your application with this component in order to use Stytch everywhere in your app.\n * @example\n * const stytch = createStytchClient('public-token-<find yours in the stytch dashboard>')\n *\n * return (\n * <StytchProvider stytch={stytch}>\n * <App />\n * </StytchProvider>\n * )\n */\nexport const StytchProvider = <\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n>({\n stytch,\n children,\n assumeHydrated = false,\n}: StytchProviderProps<TProjectConfiguration>) => {\n invariant(!useIsMounted__INTERNAL(), providerMustBeUniqueError);\n invariant(\n !assumeHydrated || typeof window !== 'undefined',\n 'The `assumeHydrated` prop must be set to `false` when using StytchProvider in a server environment.',\n );\n\n const ctx = useMemo(() => ({ client: stytch, isMounted: true }), [stytch]);\n\n type ClientState<TAlwaysInitialized extends boolean> = {\n session: SWRSession<TAlwaysInitialized>;\n user: SWRUser<TAlwaysInitialized>;\n };\n\n const getHydratedState = useCallback(() => {\n return {\n session: { ...stytch.session.getInfo(), isInitialized: true },\n user: { ...stytch.user.getInfo(), isInitialized: true },\n } satisfies ClientState<true>;\n }, [stytch]);\n\n const getInitialState = () => {\n return {\n session: initialSession,\n user: initialUser,\n } satisfies ClientState<false>;\n };\n\n const [{ user, session }, setClientState] = useAsyncState<ClientState<boolean>>(() =>\n assumeHydrated ? getHydratedState() : (getInitialState() as ClientState<boolean>),\n );\n\n // Store the initial value of `assumeHydrated` in a ref, because it is\n // logically only relevant for the first render\n const assumeHydratedRef = useRef(assumeHydrated);\n useEffect(() => {\n if (isStytchSSRProxy(stytch)) {\n return;\n }\n\n const updateState = () => {\n setClientState((oldState) => mergeWithStableProps(oldState, getHydratedState()));\n };\n\n if (!assumeHydratedRef.current) {\n updateState();\n }\n\n return stytch.onStateChange(updateState);\n }, [getHydratedState, setClientState, stytch]);\n\n return (\n <StytchContext.Provider value={ctx}>\n <StytchUserContext.Provider value={user}>\n <StytchSessionContext.Provider value={session}>{children}</StytchSessionContext.Provider>\n </StytchUserContext.Provider>\n </StytchContext.Provider>\n );\n};\n","import { Messages } from '@lingui/core';\nimport { messages as _messages } from '../../messages/en.json';\n\nexport const messages = _messages as unknown as Messages;\n","import { AppScreens, AppState, OTPState, CryptoState, PasswordState } from './GlobalContextProvider';\n\nexport type Action =\n | { type: 'transition'; screen: AppScreens }\n | { type: 'set_magic_link_email'; email: string }\n | { type: 'update_otp_state'; otpState: OTPState }\n | { type: 'update_crypto_state'; cryptoState: CryptoState }\n | { type: 'update_password_state'; passwordState: PasswordState };\n\nexport const reducer = (state: AppState, action: Action): AppState => {\n switch (action.type) {\n case 'transition':\n return {\n ...state,\n screen: action.screen,\n };\n case 'set_magic_link_email': {\n return {\n ...state,\n formState: {\n ...state.formState,\n magicLinkState: { email: action.email },\n },\n };\n }\n case 'update_otp_state': {\n return {\n ...state,\n formState: {\n ...state.formState,\n otpState: action.otpState,\n },\n };\n }\n case 'update_crypto_state': {\n return {\n ...state,\n formState: {\n ...state.formState,\n cryptoState: action.cryptoState,\n },\n };\n }\n case 'update_password_state': {\n return {\n ...state,\n formState: {\n ...state.formState,\n passwordState: action.passwordState,\n },\n };\n }\n\n default:\n throw new Error();\n }\n};\n","import React, { useContext } from 'react';\nimport { useEvent } from '../hooks/useEvent';\nimport { noop } from '../../utils';\n\nimport { Callbacks, OTPMethods, StytchProjectConfigurationInput, Wallets } from '@stytch/core/public';\nimport { Action, reducer } from './reducer';\nimport type { StytchClient } from '../../StytchClient';\n\nimport { StytchLoginConfig } from '../../types';\n\n/* eslint-disable lingui/no-unlocalized-strings -- internal constants, not user-facing strings */\nexport const AppScreens = {\n Main: 'Main',\n FloatingOneTap: 'FloatingOneTap',\n PasskeyRegistrationStart: 'PasskeyRegistrationStart',\n PasskeyRegistrationSuccess: 'PasskeyRegistrationSuccess',\n PasskeyConfirmation: 'PasskeyConfirmation',\n PasswordCreateOrLogin: 'PasswordCreateOrLogin',\n PasswordResetForm: 'PasswordResetForm',\n PasswordForgot: 'PasswordForgot',\n PasswordBreached: 'PasswordBreached',\n PasswordSetNew: 'PasswordSetNew',\n PasswordDedupe: 'PasswordDedupe',\n PasswordConfirmation: 'PasswordConfirmation',\n EmailConfirmation: 'EmailConfirmation',\n OTPAuthenticate: 'OTPAuthenticate',\n OTPConfirmation: 'OTPConfirmation',\n CryptoConnect: 'CryptoConnect',\n CryptoSignMessage: 'CryptoSignMessage',\n CryptoOtherScreen: 'CryptoOtherScreen',\n CryptoSetupWallet: 'CryptoSetupWallet',\n CryptoError: 'CryptoError',\n CryptoConfirmation: 'CryptoConfirmation',\n} as const;\n/* eslint-enable lingui/no-unlocalized-strings */\n\nexport type AppScreens = keyof typeof AppScreens;\n\nexport type MagicLinkState = {\n email: string;\n};\n\nexport type OTPState = {\n type: OTPMethods;\n methodId: string;\n otpDestination: string;\n};\n\nexport type PasswordState = {\n email: string;\n type: 'new' | 'passwordless' | 'password';\n};\n\nexport type CryptoState = {\n walletAddress: string;\n walletOption: Wallets;\n walletChallenge: string;\n};\n\nexport type ResetPasswordState = {\n token: string;\n};\n\nexport type FormState = {\n magicLinkState: MagicLinkState;\n otpState: OTPState;\n cryptoState: CryptoState;\n passwordState: PasswordState;\n resetPasswordState: ResetPasswordState;\n};\n\nexport type AppState = {\n screen: AppScreens;\n formState: FormState;\n};\n\nexport type AppContext<TProjectConfiguration extends StytchProjectConfigurationInput> = {\n client: StytchClient<TProjectConfiguration>;\n config: StytchLoginConfig;\n callbacks?: Callbacks<TProjectConfiguration>;\n state: [AppState, React.Dispatch<Action>];\n};\n\nexport const DEFAULT_STATE: AppState = {\n screen: AppScreens.Main,\n formState: {\n magicLinkState: {\n email: '',\n },\n otpState: {\n type: OTPMethods.Email,\n methodId: '',\n otpDestination: '',\n },\n cryptoState: {\n walletAddress: '',\n walletOption: Wallets.Metamask,\n walletChallenge: '',\n },\n passwordState: {\n email: '',\n type: 'new',\n },\n resetPasswordState: {\n token: '',\n },\n },\n};\n\nexport const GlobalContext = React.createContext<AppContext<StytchProjectConfigurationInput>>({\n client: {} as StytchClient<StytchProjectConfigurationInput>,\n config: {} as StytchLoginConfig,\n state: [DEFAULT_STATE, () => null],\n});\n\nexport type GlobalContextProviderProps<TProjectConfiguration extends StytchProjectConfigurationInput> = {\n children: React.ReactNode;\n client: StytchClient<TProjectConfiguration>;\n config: StytchLoginConfig;\n callbacks?: Callbacks<TProjectConfiguration>;\n initialState?: AppState;\n};\n\nexport const GlobalContextProvider = <TProjectConfiguration extends StytchProjectConfigurationInput>({\n children,\n client,\n config,\n callbacks,\n initialState,\n}: GlobalContextProviderProps<TProjectConfiguration>) => {\n const state = React.useReducer(reducer, initialState ?? DEFAULT_STATE);\n\n return <GlobalContext.Provider value={{ client, state, config, callbacks }}>{children}</GlobalContext.Provider>;\n};\n\nexport const useGlobalContext = () => useContext(GlobalContext);\nexport const useStytch = () => useGlobalContext().client;\nexport const useGlobalReducer = () => useGlobalContext().state;\nexport const useConfig = () => useGlobalContext().config;\nexport const useErrorCallback = () => useEvent(useGlobalContext().callbacks?.onError ?? noop);\nexport const useEventCallback = () => useEvent(useGlobalContext().callbacks?.onEvent ?? noop);\n","import { useEffect, useMemo, useState } from 'react';\nimport { BootstrapData } from '@stytch/core';\nimport { useStytch } from './GlobalContextProvider';\nimport { readB2CInternals } from '../../utils/internal';\nimport { ProductId, StytchProduct } from './StytchProduct';\n\nexport const useBootstrap = (): { bootstrap: BootstrapData; fromCache: boolean } => {\n const stytchClient = useStytch();\n const [bootstrap, setBootstrap] = useState({\n bootstrap: readB2CInternals(stytchClient).bootstrap.getSync(),\n fromCache: true,\n });\n\n useEffect(() => {\n readB2CInternals(stytchClient)\n .bootstrap.getAsync()\n .then((data) =>\n setBootstrap({\n bootstrap: data,\n fromCache: false,\n }),\n );\n }, [stytchClient]);\n\n return bootstrap;\n};\n\nexport function hasProduct(products: StytchProduct[], product: ProductId) {\n return products.some((p) => p.id === product);\n}\n\nexport function useProductComponents<Type extends 'screens' | 'tabs' | 'mainScreen'>(\n products: StytchProduct[],\n screenType: Type,\n) {\n return useMemo(() => {\n const map = {} as Required<StytchProduct[Type]>;\n for (const product of products) {\n if (product[screenType]) Object.assign(map, product[screenType]);\n }\n return map;\n }, [products, screenType]);\n}\n\n/**\n * In B2C, ResetPassword and PasskeyRegistration always need passwords and passkey products respectively,\n * so we inject these into config just in case the customer don't have it. If they are missing the components\n * just crash immediately.\n */\nexport function addProduct<Config extends { products?: StytchProduct[] }>(\n config: Config | undefined,\n product: StytchProduct,\n): Config {\n if (config?.products?.includes(product)) return config;\n\n const products = config?.products ?? [];\n return {\n ...(config ?? {}),\n products: [...products, product],\n } as Config;\n}\n","import { useMemo } from 'react';\nimport { OAuthProviders } from '@stytch/core/public';\nimport { getShouldRenderFloatingOneTap } from '../../oneTap/positionModes';\nimport { hasProduct } from '../b2c/utils';\nimport { StytchLoginConfig } from '../../types';\n\nexport const useIsOnlyFloatingOneTap = (config: StytchLoginConfig) => {\n return useMemo(() => {\n const position = config.oauthOptions?.providers[0].position;\n return (\n config.products.length === 1 &&\n hasProduct(config.products, 'oauth') &&\n config.oauthOptions?.providers.length === 1 &&\n config.oauthOptions?.providers[0].type === OAuthProviders.Google &&\n config.oauthOptions?.providers[0].one_tap === true &&\n getShouldRenderFloatingOneTap(position)\n );\n }, [config]);\n};\n","import { useCallback, useEffect, useState } from 'react';\nimport { StytchEventType, StytchProjectConfigurationInput, WebAuthnAuthenticateResponse } from '@stytch/core/public';\nimport { DEFAULT_SESSION_DURATION_MINUTES } from '@stytch/core';\nimport { useLingui } from '@lingui/react/macro';\nimport {\n AppScreens,\n useConfig,\n useErrorCallback,\n useEventCallback,\n useGlobalReducer,\n useStytch,\n} from '../b2c/GlobalContextProvider';\nimport { extractErrorType } from '../../utils/extractErrorType';\nimport { extractErrorMessage } from '../../utils/extractErrorMessage';\nimport { hasProduct } from '../b2c/utils';\n\nconst MAX_ATTEMPTS = 5;\n\nexport type StartPasskeyAuth = () => Promise<WebAuthnAuthenticateResponse<StytchProjectConfigurationInput>>;\n\nexport const usePromptPasskey = ({\n canAutofill,\n}: {\n canAutofill: boolean;\n}): [startPasskeyAuth: StartPasskeyAuth, error: string | undefined] => {\n const { t } = useLingui();\n const stytchClient = useStytch();\n const config = useConfig();\n const hasPasskeys = hasProduct(config.products, 'passkeys');\n\n const onEvent = useEventCallback();\n const onError = useErrorCallback();\n const [, dispatch] = useGlobalReducer();\n\n const [error, setError] = useState<string>();\n\n const startPasskeyAuth = useCallback(\n async ({\n conditionalMediation = false,\n abortController,\n }: {\n conditionalMediation?: boolean;\n abortController?: AbortController;\n } = {}) => {\n try {\n const resp = await stytchClient.webauthn.authenticate({\n domain: config.passkeyOptions?.domain,\n session_duration_minutes: config.sessionOptions?.sessionDurationMinutes ?? DEFAULT_SESSION_DURATION_MINUTES,\n conditional_mediation: conditionalMediation,\n is_passkey: true,\n signal: abortController?.signal,\n disable_input_check: config.enableShadowDOM,\n });\n\n if (!resp) {\n throw new Error('Empty response');\n }\n\n onEvent({ type: StytchEventType.PasskeyAuthenticate, data: resp });\n dispatch({ type: 'transition', screen: AppScreens.PasskeyConfirmation });\n return resp;\n } catch (e) {\n if (extractErrorType(e) === 'webauthn_registration_not_found') {\n setError(\n t({\n id: 'error.passkeyRegistrationNotFound',\n message:\n 'Passkey registration not found. You may have deleted the passkey from your account but not password manager. Please try again.',\n }),\n );\n } else if (e instanceof Error && e.name === 'StytchAPIError') {\n setError(\n t({\n id: 'error.passkeyUnknown',\n message: 'Unknown error occurred during passkey authentication. Please try again.',\n }),\n );\n }\n\n const message = extractErrorMessage(e);\n if (message) {\n onError({ message });\n }\n\n throw e;\n }\n },\n [\n config.enableShadowDOM,\n config.passkeyOptions?.domain,\n config.sessionOptions?.sessionDurationMinutes,\n dispatch,\n onError,\n onEvent,\n stytchClient.webauthn,\n t,\n ],\n );\n\n useEffect(() => {\n if (!hasPasskeys || !canAutofill) {\n return;\n }\n\n // Skip passkey authentication in Storybook environment\n if (process.env.STORYBOOK) {\n return;\n }\n\n const abortController = new AbortController();\n (async () => {\n if (!(await stytchClient.webauthn.browserSupportsAutofill())) {\n return;\n }\n\n for (let i = 0; i < MAX_ATTEMPTS; ++i) {\n if (abortController.signal.aborted) {\n return;\n }\n\n try {\n await startPasskeyAuth({ abortController, conditionalMediation: true });\n return;\n } catch (e) {\n // User denied permission\n if (e instanceof DOMException && e.name === 'NotAllowedError') {\n return;\n }\n\n // Otherwise swallow error\n }\n }\n })();\n\n return () => {\n abortController.abort();\n };\n }, [canAutofill, hasPasskeys, startPasskeyAuth, stytchClient.webauthn]);\n\n return [startPasskeyAuth, error];\n};\n","import React, { useEffect, useState } from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { usePresentation } from '../../../components/PresentationConfig';\nimport { useConfig, useStytch } from '../../GlobalContextProvider';\nimport Typography from '../../../components/atoms/Typography';\nimport { isTruthy } from '../../../../utils/isTruthy';\nimport { usePromptPasskey } from '../../../hooks/usePromptPasskey';\nimport Column from '../../../components/atoms/Column';\nimport ErrorText from '../../../components/molecules/ErrorText';\nimport { MainScreenGroup, MainScreenKey } from '../../StytchProduct';\nimport { hasProduct, useProductComponents } from '../../utils';\nimport Divider from '../../../components/molecules/Divider';\nimport { DEV } from '@stytch/core';\n\nexport const MainScreen = () => {\n const stytchClient = useStytch();\n const config = useConfig();\n\n const { options } = usePresentation();\n const { t } = useLingui();\n const [mainScreenGroups, setMainScreenGroups] = useState<MainScreenGroup[]>([]);\n\n const { products, oauthOptions } = config;\n const hasButtons = (hasProduct(products, 'oauth') && oauthOptions) || hasProduct(products, 'crypto');\n const hasPasskeys = hasProduct(products, 'passkeys');\n const hasInput =\n hasProduct(products, 'emailMagicLinks') || hasProduct(products, 'otp') || hasProduct(products, 'passwords');\n\n const [startPasskeyAuth, passkeyError] = usePromptPasskey({ canAutofill: hasInput });\n const productComponents = useProductComponents(products, 'mainScreen')!;\n\n useEffect(() => {\n const loadProductComponents = async () => {\n // Deduplicate components mapped from products\n const keys = Array.from(\n new Set<MainScreenKey>(\n products\n .map((product) => {\n switch (product.id) {\n case 'oauth':\n case 'crypto':\n return product.id;\n case 'emailMagicLinks':\n case 'otp':\n case 'passwords':\n return 'login-form';\n }\n })\n .filter(isTruthy),\n ),\n );\n\n const showDivider = hasButtons && hasInput;\n if (keys.length > 1 && showDivider) {\n keys.splice(-1, 0, 'divider');\n }\n\n // Add a passkey button if the user has configured passkeys, don't have a login form,\n // or the browser does not support autofill\n if (hasPasskeys && (!hasInput || !(await stytchClient.webauthn.browserSupportsAutofill()))) {\n keys.unshift('passkey-button');\n }\n\n // Group Wallet and Oauth buttons (basically going from [Password, Wallet, OAuth] to [Password, [Wallet, OAuth]])\n // This reassignment is only there to make TS happy - .splice mutates, and groups === keys\n // so it is not really needed\n const groups: MainScreenGroup[] = keys;\n const walletIndex = keys.indexOf('crypto');\n const oauthIndex = keys.indexOf('oauth');\n if (walletIndex !== -1 && oauthIndex !== -1 && Math.abs(walletIndex - oauthIndex) === 1) {\n const index = Math.min(walletIndex, oauthIndex);\n groups.splice(index, 0, keys.splice(index, 2));\n }\n\n setMainScreenGroups(groups);\n };\n\n loadProductComponents();\n // eslint-disable-next-line react-hooks/exhaustive-deps -- SDK-1354\n }, []);\n\n if (hasPasskeys && products.length === 1)\n return (\n <Typography variant=\"helper\" color=\"destructive\">\n {DEV('Error: Cannot use Passkeys by itself, please add another product to the config.')}\n </Typography>\n );\n\n const props = { startPasskeyAuth };\n const renderComponent = (key: MainScreenGroup, index: number) => {\n if (Array.isArray(key)) {\n return (\n <Column gap={2} key={index}>\n {key.map(renderComponent)}\n </Column>\n );\n }\n\n if (key === 'divider') {\n return <Divider key={index} />;\n }\n\n const Component = productComponents[key];\n return <Component key={key} {...props} />;\n };\n\n return (\n <Column gap={6}>\n {!options.hideHeaderText && (\n <Typography variant=\"header\" align=\"center\">\n {t({ id: 'login.title', message: 'Sign up or log in' })}\n </Typography>\n )}\n\n {passkeyError && <ErrorText>{passkeyError}</ErrorText>}\n\n {mainScreenGroups.map(renderComponent)}\n </Column>\n );\n};\n","import React, { ReactNode } from 'react';\nimport { AppScreens, useConfig, useGlobalReducer } from './GlobalContextProvider';\nimport { useIsOnlyFloatingOneTap } from '../hooks/useIsOnlyFloatingOneTap';\nimport { usePresentation } from '../components/PresentationConfig';\nimport MainContainer from '../components/molecules/MainContainer';\nimport Logo from '../components/atoms/Logo';\nimport { useProductComponents } from './utils';\nimport { MainScreen } from './screens/Main';\n\nconst AppContainer: () => null | ReactNode = () => {\n const [state] = useGlobalReducer();\n const config = useConfig();\n const { displayWatermark, theme, options } = usePresentation();\n const isOnlyFloatingOneTap = useIsOnlyFloatingOneTap(config);\n const currentScreen = state.screen;\n\n const screenComponentMap = useProductComponents(config.products, 'screens');\n\n if (isOnlyFloatingOneTap) {\n const { FloatingOneTap } = screenComponentMap;\n return <FloatingOneTap />;\n }\n\n // MainScreen is omitted from StytchProduct since it's used by everything\n const ScreenComponent = currentScreen === AppScreens.Main ? MainScreen : screenComponentMap[currentScreen];\n return (\n <MainContainer theme={theme} displayWatermark={displayWatermark}>\n {options.logo && <Logo appLogo={options.logo} />}\n\n <ScreenComponent />\n </MainContainer>\n );\n};\n\nexport default AppContainer;\n","import React, { useState, useEffect } from 'react';\nimport { StytchProjectConfigurationInput } from '@stytch/core/public';\nimport { messages } from '../../messages/en';\nimport { I18nProviderWrapper } from '../components/atoms/I18nProviderWrapper';\nimport { GlobalContextProvider } from './GlobalContextProvider';\nimport Container from './Container';\nimport { SDKConfig } from '../../types';\nimport { readB2CInternals } from '../../utils/internal';\nimport { usePresentationWithDefault, PresentationContext } from '../components/PresentationConfig';\n\nexport const AppContainer = <TProjectConfiguration extends StytchProjectConfigurationInput>({\n client,\n config,\n presentation,\n callbacks,\n strings,\n}: SDKConfig<TProjectConfiguration>) => {\n // Read the watermark out of sync storage, then read it out of async storage\n const [displayWatermark, setDisplayWatermark] = useState(() => {\n const { displayWatermark } = readB2CInternals(client).bootstrap.getSync();\n return displayWatermark;\n });\n useEffect(() => {\n readB2CInternals(client)\n .bootstrap.getAsync()\n .then((data) => {\n readB2CInternals(client).networkClient.logEvent({\n name: 'render_login_screen',\n details: { options: config, bootstrap: data },\n });\n setDisplayWatermark(data.displayWatermark);\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps -- SDK-1354\n }, [client]);\n\n const presentationValue = usePresentationWithDefault(presentation, displayWatermark, config.products, 'Products');\n\n return (\n <GlobalContextProvider client={client} config={config} callbacks={callbacks}>\n <PresentationContext.Provider value={presentationValue}>\n <I18nProviderWrapper messages={messages} overrides={strings}>\n <Container />\n </I18nProviderWrapper>\n </PresentationContext.Provider>\n </GlobalContextProvider>\n );\n};\n","import React, { useLayoutEffect, useRef, useState } from 'react';\nimport { StytchProjectConfigurationInput } from '@stytch/core/public';\nimport { injectCssIntoNode, injectGlobalStyle } from '@stytch/internal-style-injector';\nimport { ComponentType } from 'react';\nimport { invariant } from '../utils/invariant';\nimport { useStytch, useIsMounted__INTERNAL } from '../b2c/StytchContext';\nimport { noProviderError, serverRenderError } from '../utils/errors';\nimport { StytchClient } from '../../../StytchClient';\nimport { StytchLoginConfig } from '../../../types';\nimport { createPortal } from 'react-dom';\n\n// Mirrors createB2BComponent and createWebComponent\nexport function createB2CComponent<\n Props extends {\n client: StytchClient<TProjectConfiguration>;\n config?: StytchLoginConfig;\n },\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n>(name: string, Component: ComponentType<Props>) {\n const Wrapped: ComponentType<Omit<Props, 'client'>> = (props) => {\n serverRenderError(name);\n invariant(useIsMounted__INTERNAL(), noProviderError(`<${name} />`));\n\n const client = useStytch<TProjectConfiguration>();\n\n const shadow = props.config?.enableShadowDOM;\n const root = useRef<HTMLDivElement>(null);\n const [mountPoint, setMountPoint] = useState<HTMLDivElement>();\n\n useLayoutEffect(() => {\n if (shadow) {\n if (!root.current || root.current.shadowRoot) return;\n const shadowRoot = root.current.attachShadow({ mode: 'open' });\n const mountPoint = document.createElement('div');\n\n shadowRoot.appendChild(injectCssIntoNode());\n shadowRoot.appendChild(mountPoint);\n\n setMountPoint(mountPoint);\n } else {\n injectGlobalStyle();\n }\n }, [shadow]);\n\n const element = <Component {...(props as Props)} client={client} />;\n if (shadow) {\n return <div ref={root}>{mountPoint && createPortal(element, mountPoint)}</div>;\n } else {\n return element;\n }\n };\n\n Wrapped.displayName = name;\n return Wrapped;\n}\n","import { Callbacks, StringsOptions, StytchProjectConfigurationInput } from '@stytch/core/public';\nimport { AppContainer } from '../../b2c/AppContainer';\nimport { PresentationConfig, StytchLoginConfig } from '../../../types';\nimport { createB2CComponent } from '../bindings/createB2CComponent';\n\nexport interface StytchProps<\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n> extends StringsOptions {\n /**\n * A {@link StytchLoginConfig} object. Add products and product-specific config to this object to change the login methods shown.\n *\n * @example\n * {\n * products: [Products.crypto, Products.otp]\n * }\n *\n * @example\n * {\n * products: [Products.emailMagicLinks]\n * emailMagicLinksOptions: {\n * loginRedirectURL: 'https://example.com/authenticate',\n * signupRedirectURL: 'https://example.com/authenticate',\n * }\n * }\n *\n * @example\n * {\n * products: [Products.oauth]\n * oauthOptions: {\n * providers: [\n * { type: 'google', one_tap: true, position: 'embedded' },\n * { type: 'microsoft' },\n * { type: 'apple' },\n * { type: 'facebook' },\n * ],\n * }\n * }\n */\n config: StytchLoginConfig;\n /**\n * An optional {@link PresentationConfig} to customize the UI presentation.\n */\n presentation?: PresentationConfig;\n /**\n * An optional {@link Callbacks} object.\n *\n * @example\n * {\n * onError: ({message}) => {\n * console.error('Stytch login screen error', message)\n * }\n * }\n *\n * @example\n * {\n * onEvent: ({type, data}) => {\n * if(type === StytchEventType.CryptoWalletAuthenticate) {\n * console.log('Logged in with crypto wallet', data);\n * }\n * }\n * }\n */\n callbacks?: Callbacks<TProjectConfiguration>;\n}\n\n/**\n * The Stytch Login Screen component.\n * This component can only be used with a Stytch UI Client\n * passed into the StytchProvider.\n *\n * See the {@link https://stytch.com/docs/sdks online reference}\n *\n * @example\n * <StytchLogin\n * config={{\n * products: [Products.emailMagicLinks, Products.oauth],\n * emailMagicLinksOptions: {\n * loginRedirectURL: 'https://example.com/authenticate',\n * signupRedirectURL: 'https://example.com/authenticate',\n * },\n * oauthOptions: {\n * providers: [{ type: OAuthProviders.Google }, { type: OAuthProviders.Microsoft }],\n * },\n * }}\n * presentation={{\n * theme: { primary: '#0577CA' },\n * options: {},\n * }}\n * callbacks={{\n * onEvent: (event) => console.log(event)\n * }}\n * />\n */\nexport const StytchLogin = createB2CComponent('StytchLogin', AppContainer);\n","import React from 'react';\nimport { DEFAULT_ICON_SIZE, IconProps } from './types';\n\nexport const GenericWalletIcon = ({ size = DEFAULT_ICON_SIZE, ...props }: IconProps) => (\n <svg width={size} height={size} viewBox=\"0 0 20 18\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n d=\"M18.5 4.28V2C18.5 0.9 17.6 0 16.5 0H2.5C1.39 0 0.5 0.9 0.5 2V16C0.5 17.1 1.39 18 2.5 18H16.5C17.6 18 18.5 17.1 18.5 16V13.72C19.09 13.37 19.5 12.74 19.5 12V6C19.5 5.26 19.09 4.63 18.5 4.28ZM17.5 6V12H10.5V6H17.5ZM2.5 16V2H16.5V4H10.5C9.4 4 8.5 4.9 8.5 6V12C8.5 13.1 9.4 14 10.5 14H16.5V16H2.5Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M13.5 10.5C14.3284 10.5 15 9.82843 15 9C15 8.17157 14.3284 7.5 13.5 7.5C12.6716 7.5 12 8.17157 12 9C12 9.82843 12.6716 10.5 13.5 10.5Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n","import React from 'react';\nimport { DEFAULT_ICON_SIZE, IconProps } from './types';\n\nexport const PasskeyIcon = ({ size = DEFAULT_ICON_SIZE, ...props }: IconProps) => (\n <svg width={size} height={size} viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n d=\"M8.75 10C10.8211 10 12.5 8.32107 12.5 6.25C12.5 4.17893 10.8211 2.5 8.75 2.5C6.67893 2.5 5 4.17893 5 6.25C5 8.32107 6.67893 10 8.75 10Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M18.7501 10.0001C18.7519 9.47774 18.6134 8.96445 18.349 8.51388C18.0847 8.06332 17.7041 7.69203 17.2472 7.43881C16.7903 7.18559 16.2738 7.05973 15.7516 7.07439C15.2294 7.08905 14.7207 7.24369 14.2787 7.52214C13.8367 7.8006 13.4776 8.19265 13.239 8.65733C13.0003 9.12202 12.8908 9.64227 12.9219 10.1637C12.9531 10.6852 13.1237 11.1887 13.416 11.6217C13.7082 12.0547 14.1114 12.4012 14.5834 12.6251V17.0835L15.8334 18.3335L17.9167 16.2501L16.6667 15.0001L17.9167 13.7501L16.8834 12.7168C17.4322 12.505 17.9042 12.1323 18.2373 11.6474C18.5704 11.1626 18.7492 10.5884 18.7501 10.0001ZM15.8334 10.0001C15.6686 10.0001 15.5075 9.95126 15.3704 9.85969C15.2334 9.76812 15.1266 9.63797 15.0635 9.4857C15.0004 9.33343 14.9839 9.16587 15.0161 9.00422C15.0482 8.84257 15.1276 8.69409 15.2441 8.57754C15.3607 8.461 15.5092 8.38163 15.6708 8.34948C15.8325 8.31732 16 8.33383 16.1523 8.3969C16.3046 8.45997 16.4347 8.56678 16.5263 8.70382C16.6179 8.84086 16.6667 9.00198 16.6667 9.1668C16.6667 9.38781 16.5789 9.59977 16.4227 9.75605C16.2664 9.91233 16.0544 10.0001 15.8334 10.0001Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M12.0333 11.6833C11.3934 11.398 10.7007 11.2504 10 11.25H7.5C6.17392 11.25 4.90215 11.7768 3.96447 12.7145C3.02678 13.6521 2.5 14.9239 2.5 16.25V17.9167H13.3333V13.325C12.7713 12.8933 12.3248 12.3293 12.0333 11.6833Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n","import { msg } from '@lingui/core/macro';\nimport { useLingui } from '@lingui/react/macro';\nimport React, { useState } from 'react';\nimport { DEFAULT_OTP_EXPIRATION_MINUTES, EmailSentType, CountryCode } from '@stytch/core';\nimport { OTPMethods, StytchEventType, StytchAPIError } from '@stytch/core/public';\nimport { EMAIL_REGEX } from '../../../../../utils';\nimport {\n useConfig,\n useGlobalReducer,\n AppScreens,\n useStytch,\n useErrorCallback,\n useEventCallback,\n} from '../../../GlobalContextProvider';\nimport PhoneInput, { getPhoneNumberProps } from '../../../../components/molecules/PhoneInput';\nimport EmailInput from '../../../../components/molecules/EmailInput';\nimport Button from '../../../../components/atoms/Button';\nimport Column from '../../../../components/atoms/Column';\nimport { readB2CInternals } from '../../../../../utils/internal';\nimport { formatNumberToIncludeCountryCode } from '../../../../../utils/handleParsePhoneNumber';\nimport { getTranslatedError } from '../../../../../utils/getTranslatedError';\nimport { hasProduct } from '../../../utils';\n\nexport const OTPButtonText = {\n [OTPMethods.SMS]: msg({ id: 'button.sms', message: 'Continue with text message' }),\n [OTPMethods.WhatsApp]: msg({ id: 'button.whatsapp', message: 'Continue with WhatsApp' }),\n [OTPMethods.Email]: msg({ id: 'button.emailLogin', message: 'Continue with email' }),\n};\n\nexport const OTPEmailForm = () => {\n const { t } = useLingui();\n const onEvent = useEventCallback();\n const onError = useErrorCallback();\n const stytchClient = useStytch();\n const config = useConfig();\n const [, dispatch] = useGlobalReducer();\n const [email, setEmail] = useState('');\n const [errorMessage, setErrorMessage] = useState('');\n const [isSubmitting, setIsSubmitting] = useState<boolean>(false);\n\n const hasPasskeys = hasProduct(config.products, 'passkeys');\n\n const stopSubmit = (errorText: string) => {\n onError({ message: errorText });\n setIsSubmitting(false);\n return setErrorMessage(errorText);\n };\n\n const handleEmailSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n setIsSubmitting(true);\n\n if (!email.match(EMAIL_REGEX))\n return stopSubmit(t({ id: 'errors.invalidEmail', message: 'Invalid email address.' }));\n\n setErrorMessage('');\n setIsSubmitting(true);\n\n stytchClient.otps.email\n .loginOrCreate(email, {\n expiration_minutes: config.otpOptions?.expirationMinutes ?? DEFAULT_OTP_EXPIRATION_MINUTES,\n login_template_id: config.otpOptions?.loginTemplateId,\n signup_template_id: config.otpOptions?.signupTemplateId,\n locale: config.otpOptions?.locale,\n })\n .then((data) => {\n setIsSubmitting(false);\n onEvent({ type: StytchEventType.OTPsLoginOrCreateEvent, data });\n dispatch({\n type: 'update_otp_state',\n otpState: {\n type: OTPMethods.Email,\n methodId: data.method_id,\n otpDestination: email,\n },\n });\n dispatch({ type: 'transition', screen: AppScreens.OTPAuthenticate });\n readB2CInternals(stytchClient).networkClient.logEvent({\n name: 'email_sent',\n details: { email: email, type: EmailSentType.LoginOrCreateOTP },\n });\n })\n .catch((e: StytchAPIError) => {\n onError(e);\n setIsSubmitting(false);\n setErrorMessage(getTranslatedError(e, t));\n });\n };\n\n return (\n <Column as=\"form\" onSubmit={handleEmailSubmit} gap={4}>\n <EmailInput email={email} setEmail={setEmail} hasPasskeys={hasPasskeys} hideLabel error={errorMessage} />\n <Button variant=\"primary\" loading={isSubmitting} type=\"submit\">\n {t(OTPButtonText[OTPMethods.Email])}\n </Button>\n </Column>\n );\n};\n\nexport const PhoneForm = ({ method }: { method: OTPMethods }) => {\n const { t } = useLingui();\n const onEvent = useEventCallback();\n const onError = useErrorCallback();\n const stytchClient = useStytch();\n const config = useConfig();\n const [, dispatch] = useGlobalReducer();\n const [phoneNumber, setPhoneNumber] = useState('');\n // eslint-disable-next-line lingui/no-unlocalized-strings\n const [country, setCountry] = useState<CountryCode>('US');\n const [errorMessage, setErrorMessage] = useState('');\n const [isSubmitting, setIsSubmitting] = useState<boolean>(false);\n const hasPasskeys = hasProduct(config.products, 'passkeys');\n\n const stopSubmit = (errorText: string) => {\n onError({ message: errorText });\n setIsSubmitting(false);\n setErrorMessage(errorText);\n };\n\n const { parsePhoneNumber, getExampleNumber } = getPhoneNumberProps(readB2CInternals(stytchClient).clientsideServices);\n\n const handlePhoneSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n\n const parsedNumber = await formatNumberToIncludeCountryCode({\n parsePhoneNumber,\n phoneNumber,\n country,\n });\n\n if (!parsedNumber.isValid) {\n return stopSubmit(\n t({\n id: 'error.invalidPhoneNumber',\n message: 'Phone number format is invalid. Ensure the phone number is in the E.164 format.',\n }),\n );\n }\n\n setIsSubmitting(true);\n setErrorMessage('');\n\n stytchClient.otps[method]\n .loginOrCreate(parsedNumber.number, {\n expiration_minutes: config.otpOptions?.expirationMinutes ?? DEFAULT_OTP_EXPIRATION_MINUTES,\n })\n .then((data) => {\n setIsSubmitting(false);\n onEvent({ type: StytchEventType.OTPsLoginOrCreateEvent, data });\n dispatch({\n type: 'update_otp_state',\n otpState: {\n type: method,\n methodId: data.method_id,\n otpDestination: parsedNumber.number,\n },\n });\n dispatch({ type: 'transition', screen: AppScreens.OTPAuthenticate });\n })\n .catch((e: StytchAPIError) => {\n onError(e);\n setIsSubmitting(false);\n setErrorMessage(getTranslatedError(e, t));\n });\n };\n return (\n <Column as=\"form\" gap={4} onSubmit={handlePhoneSubmit}>\n <PhoneInput\n phone={phoneNumber}\n setPhone={setPhoneNumber}\n country={country}\n setCountry={setCountry}\n parsePhoneNumber={parsePhoneNumber}\n getExampleNumber={getExampleNumber}\n hasPasskeys={hasPasskeys}\n error={errorMessage}\n />\n\n <Button variant=\"primary\" loading={isSubmitting} type=\"submit\">\n {t(OTPButtonText[method])}\n </Button>\n </Column>\n );\n};\n","'use strict'\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256)\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i)\n var xc = x.charCodeAt(0)\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i\n }\n var BASE = ALPHABET.length\n var LEADER = ALPHABET.charAt(0)\n var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n function encode (source) {\n if (source instanceof Uint8Array) {\n } else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength)\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source)\n }\n if (!(source instanceof Uint8Array)) { throw new TypeError('Expected Uint8Array') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0\n var length = 0\n var pbegin = 0\n var pend = source.length\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++\n zeroes++\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n var b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0\n b58[it1] = (carry % BASE) >>> 0\n carry = (carry / BASE) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return new Uint8Array() }\n var psz = 0\n // Skip and count leading '1's.\n var zeroes = 0\n var length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size)\n // Process the characters.\n while (source[psz]) {\n // Find code of next character\n var charCode = source.charCodeAt(psz)\n // Base map can not be indexed using char code\n if (charCode > 255) { return }\n // Decode character\n var carry = BASE_MAP[charCode]\n // Invalid character\n if (carry === 255) { return }\n var i = 0\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0\n b256[it3] = (carry % 256) >>> 0\n carry = (carry / 256) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip leading zeroes in b256.\n var it4 = size - length\n while (it4 !== size && b256[it4] === 0) {\n it4++\n }\n var vch = new Uint8Array(zeroes + (size - it4))\n var j = zeroes\n while (it4 !== size) {\n vch[j++] = b256[it4++]\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string)\n if (buffer) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nmodule.exports = base\n","const basex = require('base-x')\nconst ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n\nmodule.exports = basex(ALPHABET)\n","import * as React from 'react';\nimport type { SVGProps } from 'react';\n/* AUTOGENERATED: DO NOT EDIT */\nimport _styles from '../logo.module.css';\nexport const AmazonIcon = (props: SVGProps<SVGSVGElement>): JSX.Element => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} fill=\"none\" {...props}>\n <path\n fill=\"#F90\"\n d=\"M16.5 15.53C9.2 19 4.69 16.1 1.8 14.33c-.19-.1-.5.03-.23.34.97 1.17 4.13 3.98 8.25 3.98s6.59-2.25 6.9-2.64c.3-.4.08-.6-.22-.48m2.04-1.13c-.2-.25-1.19-.3-1.81-.22s-1.57.45-1.49.68c.04.09.13.05.56.01s1.64-.2 1.9.14c.25.33-.4 1.9-.51 2.16s.04.32.25.15.6-.6.85-1.23c.25-.62.4-1.5.25-1.69\"\n />\n <path\n fill=\"#000\"\n fillRule=\"evenodd\"\n d=\"M11.6 8.46c0 .9.02 1.67-.44 2.47-.37.66-.96 1.06-1.62 1.06-.9 0-1.42-.68-1.42-1.69 0-1.99 1.79-2.35 3.48-2.35zm2.35 5.69a.5.5 0 0 1-.55.05c-.78-.64-.91-.94-1.34-1.55-1.28 1.3-2.19 1.7-3.85 1.7-1.96 0-3.5-1.22-3.5-3.64 0-1.9 1.03-3.19 2.5-3.82 1.26-.56 3.03-.66 4.39-.81v-.3c0-.56.04-1.22-.29-1.7-.28-.43-.83-.6-1.3-.6-.9 0-1.7.45-1.89 1.4-.04.21-.19.42-.4.43l-2.27-.25c-.19-.04-.4-.2-.34-.49C5.63 1.83 8.1 1 10.33 1c1.13 0 2.62.3 3.52 1.16 1.13 1.06 1.02 2.48 1.02 4.02v3.64c0 1.1.46 1.57.88 2.16.16.21.19.47 0 .63-.48.4-1.33 1.13-1.8 1.55z\"\n clipRule=\"evenodd\"\n className={_styles.darkInvert}\n />\n </svg>\n);\n","import * as React from 'react';\nimport type { SVGProps } from 'react';\n/* AUTOGENERATED: DO NOT EDIT */\nimport _styles from '../logo.module.css';\nexport const AppleIcon = (props: SVGProps<SVGSVGElement>): JSX.Element => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} fill=\"none\" {...props}>\n <path\n fill=\"#000\"\n d=\"M16.55 7.14c-.1.08-1.86 1.12-1.86 3.43A4 4 0 0 0 17 14.2c0 .06-.35 1.3-1.18 2.56-.74 1.1-1.5 2.21-2.67 2.21s-1.47-.7-2.82-.7c-1.32 0-1.79.73-2.86.73S5.66 17.97 4.8 16.7c-1-1.48-1.8-3.78-1.8-5.96C3 7.25 5.17 5.4 7.31 5.4c1.14 0 2.09.78 2.8.78.68 0 1.74-.83 3.03-.83.5 0 2.26.05 3.41 1.79m-4.02-3.27c.53-.66.91-1.59.91-2.5q0-.22-.03-.37c-.87.03-1.9.6-2.53 1.36-.49.59-.95 1.5-.95 2.44 0 .14.03.28.04.33l.23.02c.78 0 1.76-.54 2.33-1.28\"\n className={_styles.darkInvert}\n />\n </svg>\n);\n","import * as React from 'react';\nimport type { SVGProps } from 'react';\n/* AUTOGENERATED: DO NOT EDIT */\nimport _styles from '../logo.module.css';\nexport const BinanceIcon = (props: SVGProps<SVGSVGElement>): JSX.Element => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} fill=\"none\" {...props}>\n <path\n fill=\"#F3BA2F\"\n d=\"m6.43 8.56 3.5-3.5 3.49 3.5 2.03-2.03L9.92 1 4.4 6.53zM4.99 10 2.96 7.97.92 10l2.04 2.03zM6.43 11.44l3.5 3.5 3.49-3.5 2.03 2.03L9.92 19 4.4 13.47zM16.89 12.03 18.92 10 16.9 7.97 14.85 10z\"\n />\n <path fill=\"#F3BA2F\" d=\"M11.99 10 9.92 7.93 8.4 9.46l-.18.18-.36.36 2.06 2.07z\" />\n </svg>\n);\n","import * as React from 'react';\nimport type { SVGProps } from 'react';\n/* AUTOGENERATED: DO NOT EDIT */\nimport _styles from '../logo.module.css';\nexport const BitbucketIcon = (props: SVGProps<SVGSVGElement>): JSX.Element => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} fill=\"none\" {...props}>\n <path\n fill=\"#1868DB\"\n d=\"m17.96 9.14-1.34 8.08a.9.9 0 0 1-.93.78H4.3a.9.9 0 0 1-.93-.78L1.02 2.81c-.1-.5.17-.81.64-.81h16.68c.47 0 .73.32.64.8l-.64 3.8c-.09.55-.4.78-.93.78H7.37q-.23 0-.2.26l.79 4.78q.05.18.23.2h3.62q.17-.02.23-.2l.56-3.46c.05-.43.35-.6.75-.6h3.94c.58 0 .76.29.67.78\"\n />\n </svg>\n);\n","import * as React from 'react';\nimport type { SVGProps } from 'react';\n/* AUTOGENERATED: DO NOT EDIT */\nimport _styles from '../logo.module.css';\nexport const CoinbaseIcon = (props: SVGProps<SVGSVGElement>): JSX.Element => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} fill=\"none\" {...props}>\n <path fill=\"#0052FF\" d=\"M10.02 14.5a4.5 4.5 0 1 1 4.44-5.25H19a9 9 0 1 0 0 1.5h-4.54a4.5 4.5 0 0 1-4.44 3.75\" />\n </svg>\n);\n","import * as React from 'react';\nimport type { SVGProps } from 'react';\n/* AUTOGENERATED: DO NOT EDIT */\nimport _styles from '../logo.module.css';\nexport const DiscordIcon = (props: SVGProps<SVGSVGElement>): JSX.Element => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} fill=\"none\" {...props}>\n <path\n fill=\"#5865F2\"\n d=\"M12.53 3q-.26.44-.47.92a15 15 0 0 0-4.12 0q-.21-.47-.48-.92-1.93.3-3.72 1.1a13.8 13.8 0 0 0-2.66 9.72Q3.15 15.28 5.63 16q.56-.72.98-1.5a10 10 0 0 1-1.54-.7l.38-.27c2.88 1.3 6.22 1.3 9.1 0q.19.15.38.27a10 10 0 0 1-1.54.7q.41.8.98 1.5 2.48-.7 4.55-2.18c.38-3.69-.64-6.89-2.67-9.73a15 15 0 0 0-3.71-1.08zm-5.52 8.86c-.89 0-1.62-.77-1.62-1.72 0-.94.7-1.71 1.62-1.71.9 0 1.63.77 1.62 1.71-.02.95-.72 1.72-1.62 1.72m5.98 0c-.89 0-1.62-.77-1.62-1.72 0-.94.7-1.71 1.62-1.71.91 0 1.63.77 1.62 1.71-.02.95-.72 1.72-1.62 1.72\"\n />\n </svg>\n);\n","import * as React from 'react';\nimport type { SVGProps } from 'react';\n/* AUTOGENERATED: DO NOT EDIT */\nimport _styles from '../logo.module.css';\nexport const FacebookIcon = (props: SVGProps<SVGSVGElement>): JSX.Element => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} fill=\"none\" {...props}>\n <path\n fill=\"#0866FF\"\n d=\"M19 10a9 9 0 1 0-11.17 8.73v-5.98H5.97V10h1.86V8.81c0-3.06 1.38-4.48 4.39-4.48.57 0 1.55.11 1.96.23v2.49q-.35-.03-1.04-.03c-1.48 0-2.05.55-2.05 2V10h2.94l-.5 2.75h-2.44v6.18A9 9 0 0 0 19 10\"\n />\n <path\n fill=\"#fff\"\n d=\"m13.53 12.75.5-2.75h-2.94v-.97c0-1.46.57-2.01 2.05-2.01q.7 0 1.04.03v-2.5a10 10 0 0 0-1.96-.22c-3 0-4.4 1.42-4.4 4.48V10H5.98v2.75h1.86v5.98a9 9 0 0 0 3.26.2v-6.18z\"\n />\n </svg>\n);\n","import * as React from 'react';\nimport type { SVGProps } from 'react';\n/* AUTOGENERATED: DO NOT EDIT */\nimport _styles from '../logo.module.css';\nexport const FigmaIcon = (props: SVGProps<SVGSVGElement>): JSX.Element => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} fill=\"none\" {...props}>\n <path fill=\"#24CB71\" d=\"M4 16a3 3 0 0 1 3-3h3v3a3 3 0 0 1-6 0\" />\n <path fill=\"#FF7237\" d=\"M10 1v6h3a3 3 0 0 0 0-6z\" />\n <path fill=\"#00B6FF\" d=\"M12.98 13a3 3 0 1 0 0-6 3 3 0 0 0 0 6\" />\n <path fill=\"#FF3737\" d=\"M4 4a3 3 0 0 0 3 3h3V1H7a3 3 0 0 0-3 3\" />\n <path fill=\"#874FFF\" d=\"M4 10a3 3 0 0 0 3 3h3V7H7a3 3 0 0 0-3 3\" />\n </svg>\n);\n","import * as React from 'react';\nimport type { SVGProps } from 'react';\n/* AUTOGENERATED: DO NOT EDIT */\nimport _styles from '../logo.module.css';\nexport const GitlabIcon = (props: SVGProps<SVGSVGElement>): JSX.Element => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} fill=\"none\" {...props}>\n <path\n fill=\"#E24329\"\n d=\"m18.7 8.2-.03-.07-2.45-6.4A.65.65 0 0 0 15 1.8l-1.65 5.07h-6.7L5 1.8a.64.64 0 0 0-.97-.37.6.6 0 0 0-.25.3l-2.45 6.4-.03.06a4.55 4.55 0 0 0 1.51 5.26l.03.02 3.73 2.8 1.85 1.4 1.12.84c.27.21.65.21.92 0l1.12-.84 1.85-1.4 3.75-2.81.01-.01a4.55 4.55 0 0 0 1.5-5.26\"\n />\n <path\n fill=\"#FC6D26\"\n d=\"m18.7 8.2-.03-.07a8 8 0 0 0-3.29 1.48L10 13.68l3.43 2.59 3.75-2.81.01-.01a4.55 4.55 0 0 0 1.5-5.26\"\n />\n <path\n fill=\"#FCA326\"\n d=\"m6.57 16.27 1.85 1.4 1.12.84c.27.21.65.21.92 0l1.12-.84 1.85-1.4s-1.6-1.2-3.43-2.6c-1.83 1.4-3.43 2.6-3.43 2.6\"\n />\n <path\n fill=\"#FC6D26\"\n d=\"M4.62 9.61a8 8 0 0 0-3.3-1.48l-.02.06a4.55 4.55 0 0 0 1.51 5.26l.03.02 3.73 2.8s1.6-1.2 3.43-2.6z\"\n />\n </svg>\n);\n","import * as React from 'react';\nimport type { SVGProps } from 'react';\n/* AUTOGENERATED: DO NOT EDIT */\nimport _styles from '../logo.module.css';\nexport const LinkedinIcon = (props: SVGProps<SVGSVGElement>): JSX.Element => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} fill=\"none\" {...props}>\n <path\n fill=\"#007EBB\"\n fillRule=\"evenodd\"\n d=\"M3 19h14a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2H3a2 2 0 0 0-2 2v14c0 1.1.9 2 2 2\"\n clipRule=\"evenodd\"\n />\n <path\n fill=\"#fff\"\n fillRule=\"evenodd\"\n d=\"M16.5 16.5h-2.67v-4.55c0-1.25-.48-1.94-1.46-1.94-1.08 0-1.64.72-1.64 1.94v4.55H8.16V7.83h2.57V9s.78-1.43 2.62-1.43c1.83 0 3.15 1.12 3.15 3.44zM5.09 6.7A1.6 1.6 0 0 1 3.5 5.1c0-.88.71-1.6 1.59-1.6.87 0 1.58.72 1.58 1.6s-.7 1.6-1.58 1.6m-1.33 9.8h2.68V7.83H3.76z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n","import * as React from 'react';\nimport type { SVGProps } from 'react';\n/* AUTOGENERATED: DO NOT EDIT */\nimport _styles from '../logo.module.css';\nexport const MetamaskIcon = (props: SVGProps<SVGSVGElement>): JSX.Element => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} fill=\"none\" {...props}>\n <path\n fill=\"#FF5C16\"\n d=\"m17.82 18.08-3.88-1.15-2.92 1.75H8.98l-2.93-1.75-3.87 1.15L1 14.1 2.18 9.7 1 5.95l1.18-4.63 6.05 3.62h3.54l6.05-3.62L19 5.95 17.82 9.7 19 14.1z\"\n />\n <path\n fill=\"#FF5C16\"\n d=\"m2.18 1.32 6.06 3.62-.25 2.49zM6.06 14.1l2.66 2.03-2.66.8zM8.5 10.75 8 7.43 4.71 9.69V12l1.33-1.26zM17.82 1.32l-6.05 3.62.24 2.49zM13.95 14.1l-2.67 2.03 2.67.8zM15.29 9.69 12 7.43l-.52 3.32h2.46L15.28 12z\"\n />\n <path\n fill=\"#E34807\"\n d=\"m6.05 16.93-3.87 1.15L1 14.1h5.05zM8.5 10.75l.75 4.8-1.03-2.67-3.5-.87 1.33-1.26zM13.95 16.93l3.87 1.15L19 14.1h-5.05zM11.5 10.75l-.75 4.8 1.03-2.67 3.5-.87-1.33-1.26z\"\n />\n <path\n fill=\"#FF8D5D\"\n d=\"M1 14.1 2.18 9.7H4.7L4.72 12l3.5.87 1.03 2.66-.53.6-2.67-2.04zM19 14.1 17.82 9.7H15.3L15.28 12l-3.5.87-1.03 2.66.53.6 2.67-2.04z\"\n />\n <path fill=\"#FF8D5D\" d=\"M11.77 4.94H8.23L8 7.43l1.26 8.11h1.5l1.26-8.11z\" />\n <path\n fill=\"#661800\"\n d=\"M2.18 1.32 1 5.95 2.18 9.7H4.7L8 7.43zM7.77 11.71H6.62l-.62.61 2.22.56zM17.82 1.32 19 5.95 17.82 9.7H15.3L12 7.43zM12.23 11.71h1.15l.62.62-2.22.55zM11.02 17.1l.26-.97-.53-.58h-1.5l-.53.58.26.96\"\n />\n <path fill=\"#C0C4CD\" d=\"M11.02 17.1v1.58H8.98v-1.59z\" />\n <path fill=\"#E7EBF6\" d=\"m6.06 16.93 2.92 1.75v-1.59l-.26-.96zM13.95 16.93l-2.93 1.75v-1.59l.26-.96z\" />\n </svg>\n);\n","import * as React from 'react';\nimport type { SVGProps } from 'react';\n/* AUTOGENERATED: DO NOT EDIT */\nimport _styles from '../logo.module.css';\nexport const PhantomIcon = (props: SVGProps<SVGSVGElement>): JSX.Element => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} fill=\"none\" {...props}>\n <path\n fill=\"#AB9FF2\"\n d=\"M3.13 17.5c2.3 0 4.02-2 5.05-3.58q-.19.53-.2 1.04c0 .92.54 1.58 1.58 1.58 1.44 0 2.97-1.26 3.76-2.62a2 2 0 0 0-.08.55c0 .64.36 1.04 1.1 1.04 2.32 0 4.66-4.12 4.66-7.73 0-2.8-1.42-5.28-4.98-5.28C7.75 2.5 1 10.16 1 15.11c0 1.94 1.04 2.39 2.13 2.39m8.73-10.02c0-.7.39-1.2.96-1.2s.95.5.95 1.2-.4 1.2-.95 1.2c-.57 0-.96-.5-.96-1.2m2.98 0c0-.7.39-1.2.96-1.2.55 0 .94.5.94 1.2s-.38 1.2-.94 1.2c-.57 0-.96-.5-.96-1.2\"\n />\n </svg>\n);\n","import * as React from 'react';\nimport type { SVGProps } from 'react';\n/* AUTOGENERATED: DO NOT EDIT */\nimport _styles from '../logo.module.css';\nexport const SalesforceIcon = (props: SVGProps<SVGSVGElement>): JSX.Element => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} fill=\"none\" {...props}>\n <path\n fill=\"#00A1E0\"\n fillRule=\"evenodd\"\n d=\"M8.49 4.92a3.1 3.1 0 0 1 2.28-1.01c1.2 0 2.22.68 2.78 1.7q.75-.35 1.57-.35c2.14 0 3.88 1.8 3.88 4.04a3.96 3.96 0 0 1-4.65 3.96c-.49.9-1.42 1.5-2.47 1.5q-.65 0-1.25-.3a3.2 3.2 0 0 1-2.97 2.04c-1.4 0-2.58-.9-3.04-2.18q-.3.06-.62.06c-1.66 0-3-1.4-3-3.13 0-1.16.6-2.17 1.5-2.71a4 4 0 0 1-.29-1.44c0-1.99 1.57-3.6 3.5-3.6 1.13 0 2.15.56 2.78 1.42\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n","import * as React from 'react';\nimport type { SVGProps } from 'react';\n/* AUTOGENERATED: DO NOT EDIT */\nimport _styles from '../logo.module.css';\nexport const SnapchatIcon = (props: SVGProps<SVGSVGElement>): JSX.Element => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} fill=\"none\" {...props}>\n <path\n fill=\"#fff\"\n d=\"M17.72 14.26c-2.78-1.35-3.23-3.43-3.25-3.59-.02-.18-.05-.33.16-.52.2-.19 1.08-.73 1.32-.9q.63-.41.46-.92c-.1-.24-.32-.33-.56-.33l-.22.03c-.44.1-.87.32-1.12.38h-.1q-.19.02-.17-.21c.03-.49.1-1.44.02-2.32a3.7 3.7 0 0 0-.96-2.36A4.3 4.3 0 0 0 10 2.14a4.3 4.3 0 0 0-3.3 1.37 3.7 3.7 0 0 0-.96 2.36c-.08.89 0 1.84.02 2.33q.01.22-.17.22l-.1-.02c-.24-.06-.68-.28-1.12-.38L4.15 8c-.24 0-.46.1-.55.33-.14.35.04.63.45.91.24.17 1.13.72 1.33.9.2.2.18.34.15.53-.02.16-.46 2.24-3.25 3.59-.16.08-.44.24.05.51.77.43 1.28.38 1.68.64.34.22.14.69.38.86.3.2 1.2-.02 2.35.36.96.32 1.55 1.22 3.26 1.22s2.32-.9 3.27-1.22c1.15-.38 2.04-.16 2.34-.36.25-.17.05-.64.39-.86.4-.26.9-.21 1.68-.64.48-.26.2-.43.04-.5\"\n className={_styles.darkInvert}\n />\n <path\n fill=\"#000\"\n d=\"M18.94 14.1a1.3 1.3 0 0 0-.64-.67l-.14-.07-.24-.13a5.4 5.4 0 0 1-1.97-1.68 4 4 0 0 1-.33-.6q-.06-.16-.01-.23l.1-.12.82-.53q.52-.36.74-.8a1.6 1.6 0 0 0 .08-1.3c-.23-.6-.8-.98-1.5-.98a2 2 0 0 0-.54.08q.01-.64-.04-1.29a4.83 4.83 0 0 0-2.44-3.93A5.6 5.6 0 0 0 10 1.15a5.6 5.6 0 0 0-2.82.72 4.8 4.8 0 0 0-2.44 3.93q-.06.66-.04 1.28a3 3 0 0 0-.55-.08 1.54 1.54 0 0 0-1.6 1.65q.01.33.18.64.23.43.74.8l.42.27.38.25q.08.04.12.12.05.07-.01.24-.14.3-.33.59a5.4 5.4 0 0 1-1.91 1.65c-.43.23-.89.39-1.08.9-.14.4-.05.84.32 1.21q.2.21.46.35.53.3 1.12.45.13.03.23.1c.13.12.12.3.3.55q.13.2.33.34c.37.26.78.27 1.23.3.4 0 .85.02 1.37.2q.3.11.7.36c.61.38 1.46.9 2.88.9s2.27-.52 2.9-.9q.37-.25.68-.36c.52-.17.97-.2 1.37-.2.44-.02.86-.04 1.23-.3q.24-.16.38-.41c.13-.22.13-.37.25-.47l.21-.1a5 5 0 0 0 1.14-.46q.28-.15.48-.37v-.01c.35-.37.44-.8.3-1.18m-1.27.68c-.77.42-1.28.38-1.67.64-.34.21-.14.68-.39.85-.3.21-1.2-.01-2.34.37-.95.31-1.56 1.21-3.27 1.21-1.7 0-2.3-.9-3.27-1.22-1.15-.38-2.04-.15-2.34-.36-.25-.17-.05-.64-.38-.86-.4-.25-.91-.2-1.68-.63-.5-.27-.21-.44-.05-.52 2.79-1.35 3.23-3.43 3.25-3.58.02-.2.05-.34-.16-.53-.2-.18-1.08-.73-1.32-.9-.4-.28-.59-.57-.46-.91.1-.25.32-.34.56-.34l.22.03c.44.1.87.32 1.12.38l.1.01q.19 0 .17-.22c-.03-.49-.1-1.43-.02-2.32.1-1.22.5-1.83.96-2.36A4.3 4.3 0 0 1 10 2.15a4.3 4.3 0 0 1 3.3 1.36c.46.54.86 1.14.96 2.36.08.89.01 1.84-.02 2.33q-.01.23.17.22l.1-.02c.24-.06.68-.28 1.12-.38l.22-.02c.24 0 .46.1.56.33q.17.5-.46.91c-.24.17-1.13.72-1.32.9-.21.2-.18.34-.16.53.02.16.46 2.24 3.25 3.59.17.08.44.25-.05.52\"\n className={_styles.darkInvert}\n />\n </svg>\n);\n","import * as React from 'react';\nimport type { SVGProps } from 'react';\n/* AUTOGENERATED: DO NOT EDIT */\nimport _styles from '../logo.module.css';\nexport const TiktokIcon = (props: SVGProps<SVGSVGElement>): JSX.Element => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} fill=\"none\" {...props}>\n <path\n fill=\"#161823\"\n fillRule=\"evenodd\"\n d=\"M11.38 1.79h2.3A4.42 4.42 0 0 0 18 5.3v.68l.01 2.41a7.6 7.6 0 0 1-4.39-1.38v6.28c0 3.14-2.6 5.7-5.8 5.7a6 6 0 0 1-3.33-1.03A5.7 5.7 0 0 1 2 13.3a5.76 5.76 0 0 1 6.59-5.64v3.16q-.37-.11-.78-.12a2.63 2.63 0 0 0-2.66 2.6c0 1 .58 1.87 1.43 2.3q.55.3 1.23.3c1.42 0 2.59-1.1 2.64-2.5V1h3.16q0 .4.08.79z\"\n clipRule=\"evenodd\"\n className={_styles.darkInvert}\n />\n </svg>\n);\n","import * as React from 'react';\nimport type { SVGProps } from 'react';\n/* AUTOGENERATED: DO NOT EDIT */\nimport _styles from '../logo.module.css';\nexport const TwitchIcon = (props: SVGProps<SVGSVGElement>): JSX.Element => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} fill=\"none\" {...props}>\n <path fill=\"#fff\" d=\"m16.25 9.36-2.5 2.57h-2.5l-2.19 2.25v-2.25H6.25V2.29h10z\" />\n <path\n fill=\"#9146FF\"\n d=\"M5.63 1 2.5 4.21V15.8h3.75V19l3.13-3.21h2.5L17.5 10V1zm10.62 8.36-2.5 2.57h-2.5l-2.19 2.25v-2.25H6.25V2.29h10z\"\n />\n <path fill=\"#9146FF\" d=\"M14.38 4.54h-1.26v3.85h1.26zM10.94 4.54H9.69v3.85h1.25z\" />\n </svg>\n);\n","import * as React from 'react';\nimport type { SVGProps } from 'react';\n/* AUTOGENERATED: DO NOT EDIT */\nimport _styles from '../logo.module.css';\nexport const XTwitterIcon = (props: SVGProps<SVGSVGElement>): JSX.Element => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} fill=\"none\" {...props}>\n <path\n fill=\"#000\"\n d=\"M11.67 8.62 18.23 1h-1.55l-5.7 6.61L6.44 1H1.2l6.87 10-6.87 8h1.55l6.01-7 4.8 7h5.24zm-2.12 2.47-.7-1-5.54-7.92H5.7l4.47 6.4.7 1 5.8 8.3H14.3z\"\n className={_styles.darkInvert}\n />\n </svg>\n);\n","import * as React from 'react';\nimport type { SVGProps } from 'react';\n/* AUTOGENERATED: DO NOT EDIT */\nimport _styles from '../logo.module.css';\nexport const YahooIcon = (props: SVGProps<SVGSVGElement>): JSX.Element => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} fill=\"none\" {...props}>\n <path\n fill=\"#5F01D2\"\n fillRule=\"evenodd\"\n d=\"M1 5.74 4.92 15l-1.4 3.33h3.44l5.23-12.6H8.76l-2.13 5.4-2.1-5.4zm9.47 7.24c0 1.16.9 2.1 2.1 2.1 1.25 0 2.19-.98 2.19-2.17 0-1.18-.9-2.11-2.11-2.11-1.25 0-2.18 1-2.18 2.18m4.68-11.31L11.7 9.99h3.85L19 1.67z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n","import { MessageDescriptor } from '@lingui/core';\nimport { msg } from '@lingui/core/macro';\nimport * as React from 'react';\nimport { Wallets } from '@stytch/core/public';\nimport { encode } from 'bs58';\n\nimport { GenericWalletIcon } from '../assets';\nimport { PhantomIcon, MetamaskIcon, BinanceIcon, CoinbaseIcon } from '../assets/logo-color';\n\ntype ProviderRequest = ({\n method,\n params,\n}: {\n method: 'eth_requestAccounts' | 'personal_sign';\n params?: string[];\n}) => string[] | string;\n\ntype ETHProvider = {\n isMetaMask?: boolean;\n isCoinbaseWallet?: boolean;\n request: ProviderRequest;\n};\n\ndeclare global {\n interface Window {\n solana: {\n isPhantom?: boolean;\n connect: () => { publicKey: { toString: () => string } };\n request: ({\n method,\n params,\n }: {\n method: 'signMessage';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n params: Record<string, any>;\n }) => { signature: Uint8Array };\n };\n\n ethereum: {\n isMetaMask?: boolean;\n isCoinbaseWallet?: boolean;\n request?: ({ method, params }: { method: string; params?: string[] }) => string[] | string;\n providers?: ETHProvider[];\n };\n\n BinanceChain: { request: ProviderRequest };\n }\n}\n\nconst hasMultipleEthereumWallets = () => !!window.ethereum?.providers;\n\nconst hasMetaMask = () =>\n !!(hasMultipleEthereumWallets()\n ? window.ethereum.providers?.find((wallet) => wallet.isMetaMask)\n : window.ethereum.isMetaMask);\n\nconst hasCoinbaseWallet = () =>\n !!(hasMultipleEthereumWallets()\n ? window.ethereum.providers?.find((wallet) => wallet.isCoinbaseWallet)\n : window.ethereum?.isCoinbaseWallet);\n\nconst hasOtherEthereumWallet = () => !hasMetaMask() && !hasCoinbaseWallet() && !!window.ethereum;\n\nconst getMetaMaskProvider = () =>\n hasMultipleEthereumWallets() ? window.ethereum.providers?.find((wallet) => wallet.isMetaMask) : window.ethereum;\n\nconst getCoinbaseProvider = () =>\n hasMultipleEthereumWallets() ? window.ethereum.providers?.find((wallet) => wallet.isCoinbaseWallet) : window.ethereum;\n\nconst getOtherInjectedProvider = () =>\n window.ethereum.providers?.find((wallet) => !wallet.isCoinbaseWallet && !wallet.isMetaMask);\n\nexport const WalletToIcon: Record<Wallets, React.FC> = {\n [Wallets.Phantom]: PhantomIcon,\n [Wallets.Binance]: BinanceIcon,\n [Wallets.Coinbase]: CoinbaseIcon,\n [Wallets.Metamask]: MetamaskIcon,\n [Wallets.GenericEthereumWallet]: GenericWalletIcon,\n [Wallets.GenericSolanaWallet]: GenericWalletIcon,\n};\n\nexport const WalletToText: Record<Wallets, MessageDescriptor> = {\n [Wallets.Phantom]: msg({ id: 'crypto.wallet.phantom', message: 'Phantom' }),\n [Wallets.Binance]: msg({ id: 'crypto.wallet.binance', message: 'Binance' }),\n [Wallets.Coinbase]: msg({ id: 'crypto.wallet.coinbase', message: 'Coinbase' }),\n [Wallets.Metamask]: msg({ id: 'crypto.wallet.metamask', message: 'Metamask' }),\n [Wallets.GenericEthereumWallet]: msg({ id: 'crypto.wallet.otherEthereum', message: 'Other Ethereum Wallet' }),\n [Wallets.GenericSolanaWallet]: msg({ id: 'crypto.wallet.otherSolana', message: 'Other Solana Wallet' }),\n};\n\nexport const isWalletVisible = (wallet: Wallets): boolean => {\n switch (wallet) {\n case Wallets.Metamask:\n return !!window.ethereum && hasMetaMask();\n case Wallets.Phantom:\n return (!!window.solana && window.solana?.isPhantom) ?? false;\n case Wallets.Binance:\n return !!window.BinanceChain;\n case Wallets.Coinbase:\n return !!window.ethereum && hasCoinbaseWallet();\n case Wallets.GenericEthereumWallet:\n return !!window.ethereum && hasOtherEthereumWallet();\n case Wallets.GenericSolanaWallet:\n return !!window.solana && !window.solana.isPhantom;\n default:\n return false;\n }\n};\n\nconst connectWithEthereumProvider = async (request: ProviderRequest): Promise<string> => {\n const [address] = await request({\n method: 'eth_requestAccounts',\n });\n return address;\n};\n\nexport const connectWithWallet = async ({ wallet }: { wallet: Wallets }): Promise<string> => {\n switch (wallet) {\n case Wallets.Metamask: {\n const provider = getMetaMaskProvider();\n return provider?.request ? connectWithEthereumProvider(provider?.request) : '';\n }\n case Wallets.Phantom: {\n const connectResp = await window.solana.connect();\n return connectResp.publicKey.toString();\n }\n case Wallets.Binance: {\n const provider = window.BinanceChain;\n return provider?.request ? connectWithEthereumProvider(provider?.request) : '';\n }\n case Wallets.Coinbase: {\n const provider = getCoinbaseProvider();\n return provider?.request ? connectWithEthereumProvider(provider?.request) : '';\n }\n case Wallets.GenericEthereumWallet: {\n const provider = getOtherInjectedProvider();\n return provider?.request ? connectWithEthereumProvider(provider?.request) : '';\n }\n case Wallets.GenericSolanaWallet: {\n const connectResp = await window.solana.connect();\n return connectResp.publicKey.toString();\n }\n default:\n return '';\n }\n};\n\nconst signMessageWithSolanaProvider = async (message: string): Promise<string> => {\n const encodedMessage = new TextEncoder().encode(message);\n const signResp = await window.solana.request({\n method: 'signMessage',\n params: {\n message: encodedMessage,\n display: 'utf8',\n },\n });\n return encode(signResp.signature);\n};\n\nconst signMessageWithEthereumProvider = async (\n request: ProviderRequest,\n message: string,\n address: string,\n): Promise<string> => {\n const signature = await request({\n method: 'personal_sign',\n params: [message, address],\n });\n return signature as string;\n};\n\nexport const signMessageWithWallet = async ({\n wallet,\n message,\n address,\n}: {\n wallet: Wallets;\n message: string;\n address: string;\n}): Promise<string> => {\n switch (wallet) {\n case Wallets.Phantom:\n case Wallets.GenericSolanaWallet:\n return signMessageWithSolanaProvider(message);\n case Wallets.Metamask: {\n const provider = getMetaMaskProvider();\n return provider?.request ? signMessageWithEthereumProvider(provider?.request, message, address) : '';\n }\n case Wallets.Binance: {\n const provider = window.BinanceChain;\n return provider?.request ? signMessageWithEthereumProvider(provider?.request, message, address) : '';\n }\n case Wallets.Coinbase: {\n const provider = getCoinbaseProvider();\n return provider?.request ? signMessageWithEthereumProvider(provider?.request, message, address) : '';\n }\n case Wallets.GenericEthereumWallet: {\n const provider = getOtherInjectedProvider();\n return provider?.request ? signMessageWithEthereumProvider(provider?.request, message, address) : '';\n }\n default:\n return '';\n }\n};\n\nexport const isSolanaWallet = (wallet: Wallets) => {\n const solanaWallets: Wallets[] = [Wallets.Phantom, Wallets.GenericSolanaWallet];\n return solanaWallets.includes(wallet);\n};\n\nexport const isEthereumWallet = (wallet: Wallets) => {\n const ethWallets: Wallets[] = [Wallets.Binance, Wallets.GenericEthereumWallet, Wallets.Coinbase, Wallets.Metamask];\n return ethWallets.includes(wallet);\n};\n","import * as React from 'react';\nimport { MessageDescriptor } from '@lingui/core';\nimport { msg } from '@lingui/core/macro';\nimport { useLingui } from '@lingui/react/macro';\nimport { Wallets } from '@stytch/core/public';\n\nimport { useConfig, useGlobalReducer, AppScreens } from '../../GlobalContextProvider';\nimport { WalletToIcon, WalletToText, isWalletVisible } from '../../../../utils/crypto';\nimport ButtonColumn from '../../../components/molecules/ButtonColumn';\nimport Button from '../../../components/atoms/Button';\n\nconst MAX_BUTTONS = 6;\n\nconst WalletIconComponent = ({ wallet }: { wallet: Wallets }) => {\n const Icon = WalletToIcon[wallet];\n return <Icon />;\n};\n\nconst walletMessages = {\n [Wallets.Phantom]: msg({ id: 'crypto.wallet.continueWithPhantom', message: 'Continue with Phantom' }),\n [Wallets.Binance]: msg({ id: 'crypto.wallet.continueWithBinance', message: 'Continue with Binance' }),\n [Wallets.Coinbase]: msg({ id: 'crypto.wallet.continueWithCoinbase', message: 'Continue with Coinbase' }),\n [Wallets.Metamask]: msg({ id: 'crypto.wallet.continueWithMetamask', message: 'Continue with Metamask' }),\n [Wallets.GenericEthereumWallet]: msg({\n id: 'crypto.wallet.continueWithEthereum',\n message: 'Continue with Other Ethereum Wallet',\n }),\n [Wallets.GenericSolanaWallet]: msg({\n id: 'crypto.wallet.continueWithSolana',\n message: 'Continue with Other Solana Wallet',\n }),\n} satisfies Record<Wallets, MessageDescriptor>;\n\nexport const CryptoWalletButtons = ({ type }: { type: 'main' | 'other' }) => {\n const { t } = useLingui();\n const [state, dispatch] = useGlobalReducer();\n const config = useConfig();\n const oAuthOptions = config.oauthOptions?.providers.length ?? 0;\n\n // Crypto Buttons on screen = Maximum Buttons - OAuth Buttons - 1 (Other crypto or set up new wallet)\n const cryptoButtonsOnMainScreen = MAX_BUTTONS - oAuthOptions - 1;\n const onWalletStart = (wallet: Wallets) => {\n dispatch({\n type: 'update_crypto_state',\n cryptoState: {\n ...state.formState.cryptoState,\n walletOption: wallet,\n },\n });\n dispatch({ type: 'transition', screen: AppScreens.CryptoConnect });\n };\n\n const allDetectedWallets = (Object.keys(Wallets) as (keyof typeof Wallets)[]).filter((wallet) =>\n isWalletVisible(Wallets[wallet]),\n );\n\n const renderOtherScreenButton = allDetectedWallets.length > cryptoButtonsOnMainScreen;\n\n const mainWallets = allDetectedWallets.slice(0, cryptoButtonsOnMainScreen);\n const otherWallet = allDetectedWallets.slice(cryptoButtonsOnMainScreen);\n\n const walletsToRender = type === 'main' ? mainWallets : otherWallet;\n\n return (\n <ButtonColumn>\n {walletsToRender.map((wallet) => (\n <Button\n key={wallet}\n variant=\"outline\"\n icon={<WalletIconComponent wallet={Wallets[wallet]} />}\n onClick={() => onWalletStart(Wallets[wallet])}\n >\n {type === 'main' ? t(walletMessages[Wallets[wallet]]) : t(WalletToText[Wallets[wallet]])}\n </Button>\n ))}\n {renderOtherScreenButton && type === 'main' ? (\n <Button\n variant=\"outline\"\n icon={<WalletIconComponent wallet={Wallets.GenericEthereumWallet} />}\n onClick={() => dispatch({ type: 'transition', screen: AppScreens.CryptoOtherScreen })}\n >\n {t(msg({ id: 'crypto.wallet.continueWithOtherWallet', message: 'Continue with other Crypto Wallet' }))}\n </Button>\n ) : (\n <Button\n variant=\"outline\"\n onClick={() => dispatch({ type: 'transition', screen: AppScreens.CryptoSetupWallet })}\n >\n {t(msg({ id: 'crypto.wallet.setupNewWallet', message: 'Set up a new crypto wallet' }))}\n </Button>\n )}\n </ButtonColumn>\n );\n};\n","import { useState } from 'react';\nimport { DEFAULT_OTP_EXPIRATION_MINUTES } from '@stytch/core';\nimport { OTPMethods, StytchEventType, StytchSDKAPIError } from '@stytch/core/public';\nimport {\n useConfig,\n useErrorCallback,\n useEventCallback,\n useGlobalReducer,\n useStytch,\n} from '../../GlobalContextProvider';\nimport { convertMagicLinkOptions } from '../../../../utils';\n\nexport function usePasswordlessAuthenticate() {\n const stytchClient = useStytch();\n const { emailMagicLinksOptions, otpOptions } = useConfig();\n const [state, dispatch] = useGlobalReducer();\n const onEvent = useEventCallback();\n const onError = useErrorCallback();\n\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const email = state.formState.passwordState.email;\n\n const sendLink = async () => {\n setIsSubmitting(true);\n\n try {\n const data = await stytchClient.magicLinks.email.loginOrCreate(\n email,\n convertMagicLinkOptions(emailMagicLinksOptions),\n );\n onEvent({ type: StytchEventType.MagicLinkLoginOrCreateEvent, data: { ...data, email } });\n dispatch({ type: 'set_magic_link_email', email: email });\n } catch (e) {\n onError(e as StytchSDKAPIError);\n throw e;\n } finally {\n setIsSubmitting(false);\n }\n };\n\n const sendCode = async () => {\n setIsSubmitting(true);\n\n try {\n const data = await stytchClient.otps.email.loginOrCreate(email, {\n expiration_minutes: otpOptions?.expirationMinutes ?? DEFAULT_OTP_EXPIRATION_MINUTES,\n locale: otpOptions?.locale,\n });\n onEvent({ type: StytchEventType.OTPsLoginOrCreateEvent, data });\n dispatch({\n type: 'update_otp_state',\n otpState: {\n type: OTPMethods.Email,\n methodId: data.method_id,\n otpDestination: email,\n },\n });\n } catch (e) {\n onError(e as StytchSDKAPIError);\n throw e;\n } finally {\n setIsSubmitting(false);\n }\n };\n\n return {\n sendLink,\n sendCode,\n isSubmitting,\n };\n}\n","import React, { useState, useEffect } from 'react';\nimport { AppScreens, useConfig, useGlobalReducer, useStytch } from '../../GlobalContextProvider';\nimport { readB2CInternals } from '../../../../utils/internal';\nimport { EmailConfirmationView } from '../../../components/organisms/EmailConfirmationView';\nimport { EmailSentType } from '@stytch/core';\nimport { useCountdown } from '../../../components/atoms/Countdown';\n\nimport { usePasswordlessAuthenticate } from './usePasswordlessAuthenticate';\n\n/**\n * Resolves the best email domain to use as a hint for login\n */\nexport const useEmailDomain = () => {\n const stytch = useStytch();\n const config = useConfig();\n /**\n * Read the emailDomains out of sync storage, then read out of async storage\n * TODO - Should all bootstrap data live in the config somewhere?\n */\n const [emailDomains, setEmailDomains] = useState(() => {\n const { emailDomains } = readB2CInternals(stytch).bootstrap.getSync();\n return emailDomains;\n });\n\n useEffect(() => {\n readB2CInternals(stytch)\n .bootstrap.getAsync()\n .then(({ emailDomains }) => {\n setEmailDomains(emailDomains);\n });\n }, [stytch]);\n\n // If a domain is explicitly passed in, use it!\n if (config.emailMagicLinksOptions?.domainHint) {\n return config.emailMagicLinksOptions?.domainHint;\n }\n // If there can only be one logical choice, use it!\n if (emailDomains?.length === 1) {\n return emailDomains[0];\n }\n // If it isn't clear who sent the email\n // we simply won't provide a hint!\n return null;\n};\n\nexport const EmailConfirmation = ({ showGoBack = true }: { showGoBack?: boolean }) => {\n const stytchClient = useStytch();\n const [state, dispatch] = useGlobalReducer();\n const emailDomain = useEmailDomain();\n const countdown = useCountdown();\n const { sendLink, isSubmitting } = usePasswordlessAuthenticate();\n\n const email =\n state.formState.magicLinkState.email !== ''\n ? state.formState.magicLinkState.email\n : state.formState.passwordState.email;\n\n const goBack = () => {\n dispatch({ type: 'set_magic_link_email', email: '' });\n dispatch({ type: 'transition', screen: AppScreens.Main });\n readB2CInternals(stytchClient).networkClient.logEvent({\n name: 'email_try_again_clicked',\n details: { email: email, type: EmailSentType.LoginOrCreateEML },\n });\n };\n\n return (\n <EmailConfirmationView\n emailDomain={emailDomain}\n email={email}\n goBack={showGoBack ? goBack : undefined}\n resend={sendLink}\n countdown={countdown}\n isSubmitting={isSubmitting}\n />\n );\n};\n","// packages/react/compose-refs/src/compose-refs.tsx\nimport * as React from \"react\";\nfunction setRef(ref, value) {\n if (typeof ref === \"function\") {\n return ref(value);\n } else if (ref !== null && ref !== void 0) {\n ref.current = value;\n }\n}\nfunction composeRefs(...refs) {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == \"function\") {\n hasCleanup = true;\n }\n return cleanup;\n });\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == \"function\") {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\nfunction useComposedRefs(...refs) {\n return React.useCallback(composeRefs(...refs), refs);\n}\nexport {\n composeRefs,\n useComposedRefs\n};\n//# sourceMappingURL=index.mjs.map\n","// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/context/src/create-context.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createContext2(rootComponentName, defaultContext) {\n const Context = React.createContext(defaultContext);\n const Provider = (props) => {\n const { children, ...context } = props;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName) {\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n}\nfunction createContextScope(scopeName, createContextScopeDeps = []) {\n let defaultContexts = [];\n function createContext3(rootComponentName, defaultContext) {\n const BaseContext = React.createContext(defaultContext);\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n const Provider = (props) => {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName, scope) {\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n }\n const createScope = () => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return React.createContext(defaultContext);\n });\n return function useScope(scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return React.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n };\n };\n createScope.scopeName = scopeName;\n return [createContext3, composeContextScopes(createScope, ...createContextScopeDeps)];\n}\nfunction composeContextScopes(...scopes) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n const createScope = () => {\n const scopeHooks = scopes.map((createScope2) => ({\n useScope: createScope2(),\n scopeName: createScope2.scopeName\n }));\n return function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes2, ...currentScope };\n }, {});\n return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n };\n };\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\nexport {\n createContext2 as createContext,\n createContextScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/collection-legacy.tsx\nimport React from \"react\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createCollection(name) {\n const PROVIDER_NAME = name + \"CollectionProvider\";\n const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);\n const [CollectionProviderImpl, useCollectionContext] = createCollectionContext(\n PROVIDER_NAME,\n { collectionRef: { current: null }, itemMap: /* @__PURE__ */ new Map() }\n );\n const CollectionProvider = (props) => {\n const { scope, children } = props;\n const ref = React.useRef(null);\n const itemMap = React.useRef(/* @__PURE__ */ new Map()).current;\n return /* @__PURE__ */ jsx(CollectionProviderImpl, { scope, itemMap, collectionRef: ref, children });\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n const CollectionSlotImpl = createSlot(COLLECTION_SLOT_NAME);\n const CollectionSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);\n return /* @__PURE__ */ jsx(CollectionSlotImpl, { ref: composedRefs, children });\n }\n );\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n const CollectionItemSlotImpl = createSlot(ITEM_SLOT_NAME);\n const CollectionItemSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n React.useEffect(() => {\n context.itemMap.set(ref, { ref, ...itemData });\n return () => void context.itemMap.delete(ref);\n });\n return /* @__PURE__ */ jsx(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n }\n );\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n function useCollection(scope) {\n const context = useCollectionContext(name + \"CollectionConsumer\", scope);\n const getItems = React.useCallback(() => {\n const collectionNode = context.collectionRef.current;\n if (!collectionNode) return [];\n const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));\n const items = Array.from(context.itemMap.values());\n const orderedItems = items.sort(\n (a, b) => orderedNodes.indexOf(a.ref.current) - orderedNodes.indexOf(b.ref.current)\n );\n return orderedItems;\n }, [context.collectionRef, context.itemMap]);\n return getItems;\n }\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n useCollection,\n createCollectionScope\n ];\n}\n\n// src/collection.tsx\nimport React2 from \"react\";\nimport { createContextScope as createContextScope2 } from \"@radix-ui/react-context\";\nimport { useComposedRefs as useComposedRefs2 } from \"@radix-ui/react-compose-refs\";\nimport { createSlot as createSlot2 } from \"@radix-ui/react-slot\";\n\n// src/ordered-dictionary.ts\nvar __instanciated = /* @__PURE__ */ new WeakMap();\nvar OrderedDict = class _OrderedDict extends Map {\n #keys;\n constructor(entries) {\n super(entries);\n this.#keys = [...super.keys()];\n __instanciated.set(this, true);\n }\n set(key, value) {\n if (__instanciated.get(this)) {\n if (this.has(key)) {\n this.#keys[this.#keys.indexOf(key)] = key;\n } else {\n this.#keys.push(key);\n }\n }\n super.set(key, value);\n return this;\n }\n insert(index, key, value) {\n const has = this.has(key);\n const length = this.#keys.length;\n const relativeIndex = toSafeInteger(index);\n let actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n const safeIndex = actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n if (safeIndex === this.size || has && safeIndex === this.size - 1 || safeIndex === -1) {\n this.set(key, value);\n return this;\n }\n const size = this.size + (has ? 0 : 1);\n if (relativeIndex < 0) {\n actualIndex++;\n }\n const keys = [...this.#keys];\n let nextValue;\n let shouldSkip = false;\n for (let i = actualIndex; i < size; i++) {\n if (actualIndex === i) {\n let nextKey = keys[i];\n if (keys[i] === key) {\n nextKey = keys[i + 1];\n }\n if (has) {\n this.delete(key);\n }\n nextValue = this.get(nextKey);\n this.set(key, value);\n } else {\n if (!shouldSkip && keys[i - 1] === key) {\n shouldSkip = true;\n }\n const currentKey = keys[shouldSkip ? i : i - 1];\n const currentValue = nextValue;\n nextValue = this.get(currentKey);\n this.delete(currentKey);\n this.set(currentKey, currentValue);\n }\n }\n return this;\n }\n with(index, key, value) {\n const copy = new _OrderedDict(this);\n copy.insert(index, key, value);\n return copy;\n }\n before(key) {\n const index = this.#keys.indexOf(key) - 1;\n if (index < 0) {\n return void 0;\n }\n return this.entryAt(index);\n }\n /**\n * Sets a new key-value pair at the position before the given key.\n */\n setBefore(key, newKey, value) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index, newKey, value);\n }\n after(key) {\n let index = this.#keys.indexOf(key);\n index = index === -1 || index === this.size - 1 ? -1 : index + 1;\n if (index === -1) {\n return void 0;\n }\n return this.entryAt(index);\n }\n /**\n * Sets a new key-value pair at the position after the given key.\n */\n setAfter(key, newKey, value) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index + 1, newKey, value);\n }\n first() {\n return this.entryAt(0);\n }\n last() {\n return this.entryAt(-1);\n }\n clear() {\n this.#keys = [];\n return super.clear();\n }\n delete(key) {\n const deleted = super.delete(key);\n if (deleted) {\n this.#keys.splice(this.#keys.indexOf(key), 1);\n }\n return deleted;\n }\n deleteAt(index) {\n const key = this.keyAt(index);\n if (key !== void 0) {\n return this.delete(key);\n }\n return false;\n }\n at(index) {\n const key = at(this.#keys, index);\n if (key !== void 0) {\n return this.get(key);\n }\n }\n entryAt(index) {\n const key = at(this.#keys, index);\n if (key !== void 0) {\n return [key, this.get(key)];\n }\n }\n indexOf(key) {\n return this.#keys.indexOf(key);\n }\n keyAt(index) {\n return at(this.#keys, index);\n }\n from(key, offset) {\n const index = this.indexOf(key);\n if (index === -1) {\n return void 0;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.at(dest);\n }\n keyFrom(key, offset) {\n const index = this.indexOf(key);\n if (index === -1) {\n return void 0;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.keyAt(dest);\n }\n find(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return entry;\n }\n index++;\n }\n return void 0;\n }\n findIndex(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return index;\n }\n index++;\n }\n return -1;\n }\n filter(predicate, thisArg) {\n const entries = [];\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n entries.push(entry);\n }\n index++;\n }\n return new _OrderedDict(entries);\n }\n map(callbackfn, thisArg) {\n const entries = [];\n let index = 0;\n for (const entry of this) {\n entries.push([entry[0], Reflect.apply(callbackfn, thisArg, [entry, index, this])]);\n index++;\n }\n return new _OrderedDict(entries);\n }\n reduce(...args) {\n const [callbackfn, initialValue] = args;\n let index = 0;\n let accumulator = initialValue ?? this.at(0);\n for (const entry of this) {\n if (index === 0 && args.length === 1) {\n accumulator = entry;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n index++;\n }\n return accumulator;\n }\n reduceRight(...args) {\n const [callbackfn, initialValue] = args;\n let accumulator = initialValue ?? this.at(-1);\n for (let index = this.size - 1; index >= 0; index--) {\n const entry = this.at(index);\n if (index === this.size - 1 && args.length === 1) {\n accumulator = entry;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n }\n return accumulator;\n }\n toSorted(compareFn) {\n const entries = [...this.entries()].sort(compareFn);\n return new _OrderedDict(entries);\n }\n toReversed() {\n const reversed = new _OrderedDict();\n for (let index = this.size - 1; index >= 0; index--) {\n const key = this.keyAt(index);\n const element = this.get(key);\n reversed.set(key, element);\n }\n return reversed;\n }\n toSpliced(...args) {\n const entries = [...this.entries()];\n entries.splice(...args);\n return new _OrderedDict(entries);\n }\n slice(start, end) {\n const result = new _OrderedDict();\n let stop = this.size - 1;\n if (start === void 0) {\n return result;\n }\n if (start < 0) {\n start = start + this.size;\n }\n if (end !== void 0 && end > 0) {\n stop = end - 1;\n }\n for (let index = start; index <= stop; index++) {\n const key = this.keyAt(index);\n const element = this.get(key);\n result.set(key, element);\n }\n return result;\n }\n every(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (!Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return false;\n }\n index++;\n }\n return true;\n }\n some(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return true;\n }\n index++;\n }\n return false;\n }\n};\nfunction at(array, index) {\n if (\"at\" in Array.prototype) {\n return Array.prototype.at.call(array, index);\n }\n const actualIndex = toSafeIndex(array, index);\n return actualIndex === -1 ? void 0 : array[actualIndex];\n}\nfunction toSafeIndex(array, index) {\n const length = array.length;\n const relativeIndex = toSafeInteger(index);\n const actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n return actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n}\nfunction toSafeInteger(number) {\n return number !== number || number === 0 ? 0 : Math.trunc(number);\n}\n\n// src/collection.tsx\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nfunction createCollection2(name) {\n const PROVIDER_NAME = name + \"CollectionProvider\";\n const [createCollectionContext, createCollectionScope] = createContextScope2(PROVIDER_NAME);\n const [CollectionContextProvider, useCollectionContext] = createCollectionContext(\n PROVIDER_NAME,\n {\n collectionElement: null,\n collectionRef: { current: null },\n collectionRefObject: { current: null },\n itemMap: new OrderedDict(),\n setItemMap: () => void 0\n }\n );\n const CollectionProvider = ({ state, ...props }) => {\n return state ? /* @__PURE__ */ jsx2(CollectionProviderImpl, { ...props, state }) : /* @__PURE__ */ jsx2(CollectionInit, { ...props });\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n const CollectionInit = (props) => {\n const state = useInitCollection();\n return /* @__PURE__ */ jsx2(CollectionProviderImpl, { ...props, state });\n };\n CollectionInit.displayName = PROVIDER_NAME + \"Init\";\n const CollectionProviderImpl = (props) => {\n const { scope, children, state } = props;\n const ref = React2.useRef(null);\n const [collectionElement, setCollectionElement] = React2.useState(\n null\n );\n const composeRefs = useComposedRefs2(ref, setCollectionElement);\n const [itemMap, setItemMap] = state;\n React2.useEffect(() => {\n if (!collectionElement) return;\n const observer = getChildListObserver(() => {\n });\n observer.observe(collectionElement, {\n childList: true,\n subtree: true\n });\n return () => {\n observer.disconnect();\n };\n }, [collectionElement]);\n return /* @__PURE__ */ jsx2(\n CollectionContextProvider,\n {\n scope,\n itemMap,\n setItemMap,\n collectionRef: composeRefs,\n collectionRefObject: ref,\n collectionElement,\n children\n }\n );\n };\n CollectionProviderImpl.displayName = PROVIDER_NAME + \"Impl\";\n const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n const CollectionSlotImpl = createSlot2(COLLECTION_SLOT_NAME);\n const CollectionSlot = React2.forwardRef(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs2(forwardedRef, context.collectionRef);\n return /* @__PURE__ */ jsx2(CollectionSlotImpl, { ref: composedRefs, children });\n }\n );\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n const CollectionItemSlotImpl = createSlot2(ITEM_SLOT_NAME);\n const CollectionItemSlot = React2.forwardRef(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React2.useRef(null);\n const [element, setElement] = React2.useState(null);\n const composedRefs = useComposedRefs2(forwardedRef, ref, setElement);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n const { setItemMap } = context;\n const itemDataRef = React2.useRef(itemData);\n if (!shallowEqual(itemDataRef.current, itemData)) {\n itemDataRef.current = itemData;\n }\n const memoizedItemData = itemDataRef.current;\n React2.useEffect(() => {\n const itemData2 = memoizedItemData;\n setItemMap((map) => {\n if (!element) {\n return map;\n }\n if (!map.has(element)) {\n map.set(element, { ...itemData2, element });\n return map.toSorted(sortByDocumentPosition);\n }\n return map.set(element, { ...itemData2, element }).toSorted(sortByDocumentPosition);\n });\n return () => {\n setItemMap((map) => {\n if (!element || !map.has(element)) {\n return map;\n }\n map.delete(element);\n return new OrderedDict(map);\n });\n };\n }, [element, memoizedItemData, setItemMap]);\n return /* @__PURE__ */ jsx2(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n }\n );\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n function useInitCollection() {\n return React2.useState(new OrderedDict());\n }\n function useCollection(scope) {\n const { itemMap } = useCollectionContext(name + \"CollectionConsumer\", scope);\n return itemMap;\n }\n const functions = {\n createCollectionScope,\n useCollection,\n useInitCollection\n };\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n functions\n ];\n}\nfunction shallowEqual(a, b) {\n if (a === b) return true;\n if (typeof a !== \"object\" || typeof b !== \"object\") return false;\n if (a == null || b == null) return false;\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n for (const key of keysA) {\n if (!Object.prototype.hasOwnProperty.call(b, key)) return false;\n if (a[key] !== b[key]) return false;\n }\n return true;\n}\nfunction isElementPreceding(a, b) {\n return !!(b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING);\n}\nfunction sortByDocumentPosition(a, b) {\n return !a[1].element || !b[1].element ? 0 : isElementPreceding(a[1].element, b[1].element) ? -1 : 1;\n}\nfunction getChildListObserver(callback) {\n const observer = new MutationObserver((mutationsList) => {\n for (const mutation of mutationsList) {\n if (mutation.type === \"childList\") {\n callback();\n return;\n }\n }\n });\n return observer;\n}\nexport {\n createCollection,\n createCollection2 as unstable_createCollection\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nfunction composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {\n return function handleEvent(event) {\n originalEventHandler?.(event);\n if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\nfunction getOwnerWindow(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access window outside of the DOM\");\n }\n return element?.ownerDocument?.defaultView ?? window;\n}\nfunction getOwnerDocument(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access document outside of the DOM\");\n }\n return element?.ownerDocument ?? document;\n}\nfunction getActiveElement(node, activeDescendant = false) {\n const { activeElement } = getOwnerDocument(node);\n if (!activeElement?.nodeName) {\n return null;\n }\n if (isFrame(activeElement) && activeElement.contentDocument) {\n return getActiveElement(activeElement.contentDocument.body, activeDescendant);\n }\n if (activeDescendant) {\n const id = activeElement.getAttribute(\"aria-activedescendant\");\n if (id) {\n const element = getOwnerDocument(activeElement).getElementById(id);\n if (element) {\n return element;\n }\n }\n }\n return activeElement;\n}\nfunction isFrame(element) {\n return element.tagName === \"IFRAME\";\n}\nexport {\n canUseDOM,\n composeEventHandlers,\n getActiveElement,\n getOwnerDocument,\n getOwnerWindow,\n isFrame\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-layout-effect/src/use-layout-effect.tsx\nimport * as React from \"react\";\nvar useLayoutEffect2 = globalThis?.document ? React.useLayoutEffect : () => {\n};\nexport {\n useLayoutEffect2 as useLayoutEffect\n};\n//# sourceMappingURL=index.mjs.map\n","// src/use-controllable-state.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useInsertionEffect = React[\" useInsertionEffect \".trim().toString()] || useLayoutEffect;\nfunction useControllableState({\n prop,\n defaultProp,\n onChange = () => {\n },\n caller\n}) {\n const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({\n defaultProp,\n onChange\n });\n const isControlled = prop !== void 0;\n const value = isControlled ? prop : uncontrolledProp;\n if (true) {\n const isControlledRef = React.useRef(prop !== void 0);\n React.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const setValue = React.useCallback(\n (nextValue) => {\n if (isControlled) {\n const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue;\n if (value2 !== prop) {\n onChangeRef.current?.(value2);\n }\n } else {\n setUncontrolledProp(nextValue);\n }\n },\n [isControlled, prop, setUncontrolledProp, onChangeRef]\n );\n return [value, setValue];\n}\nfunction useUncontrolledState({\n defaultProp,\n onChange\n}) {\n const [value, setValue] = React.useState(defaultProp);\n const prevValueRef = React.useRef(value);\n const onChangeRef = React.useRef(onChange);\n useInsertionEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n React.useEffect(() => {\n if (prevValueRef.current !== value) {\n onChangeRef.current?.(value);\n prevValueRef.current = value;\n }\n }, [value, prevValueRef]);\n return [value, setValue, onChangeRef];\n}\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\n// src/use-controllable-state-reducer.tsx\nimport * as React2 from \"react\";\nimport { useEffectEvent } from \"@radix-ui/react-use-effect-event\";\nvar SYNC_STATE = Symbol(\"RADIX:SYNC_STATE\");\nfunction useControllableStateReducer(reducer, userArgs, initialArg, init) {\n const { prop: controlledState, defaultProp, onChange: onChangeProp, caller } = userArgs;\n const isControlled = controlledState !== void 0;\n const onChange = useEffectEvent(onChangeProp);\n if (true) {\n const isControlledRef = React2.useRef(controlledState !== void 0);\n React2.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const args = [{ ...initialArg, state: defaultProp }];\n if (init) {\n args.push(init);\n }\n const [internalState, dispatch] = React2.useReducer(\n (state2, action) => {\n if (action.type === SYNC_STATE) {\n return { ...state2, state: action.state };\n }\n const next = reducer(state2, action);\n if (isControlled && !Object.is(next.state, state2.state)) {\n onChange(next.state);\n }\n return next;\n },\n ...args\n );\n const uncontrolledState = internalState.state;\n const prevValueRef = React2.useRef(uncontrolledState);\n React2.useEffect(() => {\n if (prevValueRef.current !== uncontrolledState) {\n prevValueRef.current = uncontrolledState;\n if (!isControlled) {\n onChange(uncontrolledState);\n }\n }\n }, [onChange, uncontrolledState, prevValueRef, isControlled]);\n const state = React2.useMemo(() => {\n const isControlled2 = controlledState !== void 0;\n if (isControlled2) {\n return { ...internalState, state: controlledState };\n }\n return internalState;\n }, [internalState, controlledState]);\n React2.useEffect(() => {\n if (isControlled && !Object.is(controlledState, internalState.state)) {\n dispatch({ type: SYNC_STATE, state: controlledState });\n }\n }, [controlledState, internalState.state, isControlled]);\n return [state, dispatch];\n}\nexport {\n useControllableState,\n useControllableStateReducer\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/presence.tsx\nimport * as React2 from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\n\n// src/use-state-machine.tsx\nimport * as React from \"react\";\nfunction useStateMachine(initialState, machine) {\n return React.useReducer((state, event) => {\n const nextState = machine[state][event];\n return nextState ?? state;\n }, initialState);\n}\n\n// src/presence.tsx\nvar Presence = (props) => {\n const { present, children } = props;\n const presence = usePresence(present);\n const child = typeof children === \"function\" ? children({ present: presence.isPresent }) : React2.Children.only(children);\n const ref = useComposedRefs(presence.ref, getElementRef(child));\n const forceMount = typeof children === \"function\";\n return forceMount || presence.isPresent ? React2.cloneElement(child, { ref }) : null;\n};\nPresence.displayName = \"Presence\";\nfunction usePresence(present) {\n const [node, setNode] = React2.useState();\n const stylesRef = React2.useRef(null);\n const prevPresentRef = React2.useRef(present);\n const prevAnimationNameRef = React2.useRef(\"none\");\n const initialState = present ? \"mounted\" : \"unmounted\";\n const [state, send] = useStateMachine(initialState, {\n mounted: {\n UNMOUNT: \"unmounted\",\n ANIMATION_OUT: \"unmountSuspended\"\n },\n unmountSuspended: {\n MOUNT: \"mounted\",\n ANIMATION_END: \"unmounted\"\n },\n unmounted: {\n MOUNT: \"mounted\"\n }\n });\n React2.useEffect(() => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n prevAnimationNameRef.current = state === \"mounted\" ? currentAnimationName : \"none\";\n }, [state]);\n useLayoutEffect(() => {\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = getAnimationName(styles);\n if (present) {\n send(\"MOUNT\");\n } else if (currentAnimationName === \"none\" || styles?.display === \"none\") {\n send(\"UNMOUNT\");\n } else {\n const isAnimating = prevAnimationName !== currentAnimationName;\n if (wasPresent && isAnimating) {\n send(\"ANIMATION_OUT\");\n } else {\n send(\"UNMOUNT\");\n }\n }\n prevPresentRef.current = present;\n }\n }, [present, send]);\n useLayoutEffect(() => {\n if (node) {\n let timeoutId;\n const ownerWindow = node.ownerDocument.defaultView ?? window;\n const handleAnimationEnd = (event) => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n const isCurrentAnimation = currentAnimationName.includes(CSS.escape(event.animationName));\n if (event.target === node && isCurrentAnimation) {\n send(\"ANIMATION_END\");\n if (!prevPresentRef.current) {\n const currentFillMode = node.style.animationFillMode;\n node.style.animationFillMode = \"forwards\";\n timeoutId = ownerWindow.setTimeout(() => {\n if (node.style.animationFillMode === \"forwards\") {\n node.style.animationFillMode = currentFillMode;\n }\n });\n }\n }\n };\n const handleAnimationStart = (event) => {\n if (event.target === node) {\n prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n }\n };\n node.addEventListener(\"animationstart\", handleAnimationStart);\n node.addEventListener(\"animationcancel\", handleAnimationEnd);\n node.addEventListener(\"animationend\", handleAnimationEnd);\n return () => {\n ownerWindow.clearTimeout(timeoutId);\n node.removeEventListener(\"animationstart\", handleAnimationStart);\n node.removeEventListener(\"animationcancel\", handleAnimationEnd);\n node.removeEventListener(\"animationend\", handleAnimationEnd);\n };\n } else {\n send(\"ANIMATION_END\");\n }\n }, [node, send]);\n return {\n isPresent: [\"mounted\", \"unmountSuspended\"].includes(state),\n ref: React2.useCallback((node2) => {\n stylesRef.current = node2 ? getComputedStyle(node2) : null;\n setNode(node2);\n }, [])\n };\n}\nfunction getAnimationName(styles) {\n return styles?.animationName || \"none\";\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nvar Root = Presence;\nexport {\n Presence,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/id/src/id.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useReactId = React[\" useId \".trim().toString()] || (() => void 0);\nvar count = 0;\nfunction useId(deterministicId) {\n const [id, setId] = React.useState(useReactId());\n useLayoutEffect(() => {\n if (!deterministicId) setId((reactId) => reactId ?? String(count++));\n }, [deterministicId]);\n return deterministicId || (id ? `radix-${id}` : \"\");\n}\nexport {\n useId\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/direction/src/direction.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DirectionContext = React.createContext(void 0);\nvar DirectionProvider = (props) => {\n const { dir, children } = props;\n return /* @__PURE__ */ jsx(DirectionContext.Provider, { value: dir, children });\n};\nfunction useDirection(localDir) {\n const globalDir = React.useContext(DirectionContext);\n return localDir || globalDir || \"ltr\";\n}\nvar Provider = DirectionProvider;\nexport {\n DirectionProvider,\n Provider,\n useDirection\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-callback-ref/src/use-callback-ref.tsx\nimport * as React from \"react\";\nfunction useCallbackRef(callback) {\n const callbackRef = React.useRef(callback);\n React.useEffect(() => {\n callbackRef.current = callback;\n });\n return React.useMemo(() => (...args) => callbackRef.current?.(...args), []);\n}\nexport {\n useCallbackRef\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/roving-focus-group.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { jsx } from \"react/jsx-runtime\";\nvar ENTRY_FOCUS = \"rovingFocusGroup.onEntryFocus\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar GROUP_NAME = \"RovingFocusGroup\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(GROUP_NAME);\nvar [createRovingFocusGroupContext, createRovingFocusGroupScope] = createContextScope(\n GROUP_NAME,\n [createCollectionScope]\n);\nvar [RovingFocusProvider, useRovingFocusContext] = createRovingFocusGroupContext(GROUP_NAME);\nvar RovingFocusGroup = React.forwardRef(\n (props, forwardedRef) => {\n return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(RovingFocusGroupImpl, { ...props, ref: forwardedRef }) }) });\n }\n);\nRovingFocusGroup.displayName = GROUP_NAME;\nvar RovingFocusGroupImpl = React.forwardRef((props, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n orientation,\n loop = false,\n dir,\n currentTabStopId: currentTabStopIdProp,\n defaultCurrentTabStopId,\n onCurrentTabStopIdChange,\n onEntryFocus,\n preventScrollOnEntryFocus = false,\n ...groupProps\n } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const direction = useDirection(dir);\n const [currentTabStopId, setCurrentTabStopId] = useControllableState({\n prop: currentTabStopIdProp,\n defaultProp: defaultCurrentTabStopId ?? null,\n onChange: onCurrentTabStopIdChange,\n caller: GROUP_NAME\n });\n const [isTabbingBackOut, setIsTabbingBackOut] = React.useState(false);\n const handleEntryFocus = useCallbackRef(onEntryFocus);\n const getItems = useCollection(__scopeRovingFocusGroup);\n const isClickFocusRef = React.useRef(false);\n const [focusableItemsCount, setFocusableItemsCount] = React.useState(0);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n node.addEventListener(ENTRY_FOCUS, handleEntryFocus);\n return () => node.removeEventListener(ENTRY_FOCUS, handleEntryFocus);\n }\n }, [handleEntryFocus]);\n return /* @__PURE__ */ jsx(\n RovingFocusProvider,\n {\n scope: __scopeRovingFocusGroup,\n orientation,\n dir: direction,\n loop,\n currentTabStopId,\n onItemFocus: React.useCallback(\n (tabStopId) => setCurrentTabStopId(tabStopId),\n [setCurrentTabStopId]\n ),\n onItemShiftTab: React.useCallback(() => setIsTabbingBackOut(true), []),\n onFocusableItemAdd: React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount + 1),\n []\n ),\n onFocusableItemRemove: React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount - 1),\n []\n ),\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n tabIndex: isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0,\n \"data-orientation\": orientation,\n ...groupProps,\n ref: composedRefs,\n style: { outline: \"none\", ...props.style },\n onMouseDown: composeEventHandlers(props.onMouseDown, () => {\n isClickFocusRef.current = true;\n }),\n onFocus: composeEventHandlers(props.onFocus, (event) => {\n const isKeyboardFocus = !isClickFocusRef.current;\n if (event.target === event.currentTarget && isKeyboardFocus && !isTabbingBackOut) {\n const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);\n event.currentTarget.dispatchEvent(entryFocusEvent);\n if (!entryFocusEvent.defaultPrevented) {\n const items = getItems().filter((item) => item.focusable);\n const activeItem = items.find((item) => item.active);\n const currentItem = items.find((item) => item.id === currentTabStopId);\n const candidateItems = [activeItem, currentItem, ...items].filter(\n Boolean\n );\n const candidateNodes = candidateItems.map((item) => item.ref.current);\n focusFirst(candidateNodes, preventScrollOnEntryFocus);\n }\n }\n isClickFocusRef.current = false;\n }),\n onBlur: composeEventHandlers(props.onBlur, () => setIsTabbingBackOut(false))\n }\n )\n }\n );\n});\nvar ITEM_NAME = \"RovingFocusGroupItem\";\nvar RovingFocusGroupItem = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n focusable = true,\n active = false,\n tabStopId,\n children,\n ...itemProps\n } = props;\n const autoId = useId();\n const id = tabStopId || autoId;\n const context = useRovingFocusContext(ITEM_NAME, __scopeRovingFocusGroup);\n const isCurrentTabStop = context.currentTabStopId === id;\n const getItems = useCollection(__scopeRovingFocusGroup);\n const { onFocusableItemAdd, onFocusableItemRemove, currentTabStopId } = context;\n React.useEffect(() => {\n if (focusable) {\n onFocusableItemAdd();\n return () => onFocusableItemRemove();\n }\n }, [focusable, onFocusableItemAdd, onFocusableItemRemove]);\n return /* @__PURE__ */ jsx(\n Collection.ItemSlot,\n {\n scope: __scopeRovingFocusGroup,\n id,\n focusable,\n active,\n children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n tabIndex: isCurrentTabStop ? 0 : -1,\n \"data-orientation\": context.orientation,\n ...itemProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!focusable) event.preventDefault();\n else context.onItemFocus(id);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => context.onItemFocus(id)),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key === \"Tab\" && event.shiftKey) {\n context.onItemShiftTab();\n return;\n }\n if (event.target !== event.currentTarget) return;\n const focusIntent = getFocusIntent(event, context.orientation, context.dir);\n if (focusIntent !== void 0) {\n if (event.metaKey || event.ctrlKey || event.altKey || event.shiftKey) return;\n event.preventDefault();\n const items = getItems().filter((item) => item.focusable);\n let candidateNodes = items.map((item) => item.ref.current);\n if (focusIntent === \"last\") candidateNodes.reverse();\n else if (focusIntent === \"prev\" || focusIntent === \"next\") {\n if (focusIntent === \"prev\") candidateNodes.reverse();\n const currentIndex = candidateNodes.indexOf(event.currentTarget);\n candidateNodes = context.loop ? wrapArray(candidateNodes, currentIndex + 1) : candidateNodes.slice(currentIndex + 1);\n }\n setTimeout(() => focusFirst(candidateNodes));\n }\n }),\n children: typeof children === \"function\" ? children({ isCurrentTabStop, hasTabStop: currentTabStopId != null }) : children\n }\n )\n }\n );\n }\n);\nRovingFocusGroupItem.displayName = ITEM_NAME;\nvar MAP_KEY_TO_FOCUS_INTENT = {\n ArrowLeft: \"prev\",\n ArrowUp: \"prev\",\n ArrowRight: \"next\",\n ArrowDown: \"next\",\n PageUp: \"first\",\n Home: \"first\",\n PageDown: \"last\",\n End: \"last\"\n};\nfunction getDirectionAwareKey(key, dir) {\n if (dir !== \"rtl\") return key;\n return key === \"ArrowLeft\" ? \"ArrowRight\" : key === \"ArrowRight\" ? \"ArrowLeft\" : key;\n}\nfunction getFocusIntent(event, orientation, dir) {\n const key = getDirectionAwareKey(event.key, dir);\n if (orientation === \"vertical\" && [\"ArrowLeft\", \"ArrowRight\"].includes(key)) return void 0;\n if (orientation === \"horizontal\" && [\"ArrowUp\", \"ArrowDown\"].includes(key)) return void 0;\n return MAP_KEY_TO_FOCUS_INTENT[key];\n}\nfunction focusFirst(candidates, preventScroll = false) {\n const PREVIOUSLY_FOCUSED_ELEMENT = getActiveElement();\n for (const candidate of candidates) {\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus({ preventScroll });\n if (getActiveElement() !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\nfunction wrapArray(array, startIndex) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nvar Root = RovingFocusGroup;\nvar Item = RovingFocusGroupItem;\nexport {\n Item,\n Root,\n RovingFocusGroup,\n RovingFocusGroupItem,\n createRovingFocusGroupScope\n};\nfunction getActiveElement(root = document) {\n const activeElement = root.activeElement;\n return activeElement && activeElement.shadowRoot ? getActiveElement(activeElement.shadowRoot) : activeElement;\n}\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/tabs.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TABS_NAME = \"Tabs\";\nvar [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [\n createRovingFocusGroupScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar [TabsProvider, useTabsContext] = createTabsContext(TABS_NAME);\nvar Tabs = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeTabs,\n value: valueProp,\n onValueChange,\n defaultValue,\n orientation = \"horizontal\",\n dir,\n activationMode = \"automatic\",\n ...tabsProps\n } = props;\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n onChange: onValueChange,\n defaultProp: defaultValue ?? \"\",\n caller: TABS_NAME\n });\n return /* @__PURE__ */ jsx(\n TabsProvider,\n {\n scope: __scopeTabs,\n baseId: useId(),\n value,\n onValueChange: setValue,\n orientation,\n dir: direction,\n activationMode,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n dir: direction,\n \"data-orientation\": orientation,\n ...tabsProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabs.displayName = TABS_NAME;\nvar TAB_LIST_NAME = \"TabsList\";\nvar TabsList = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, loop = true, ...listProps } = props;\n const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n orientation: context.orientation,\n dir: context.dir,\n loop,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"tablist\",\n \"aria-orientation\": context.orientation,\n ...listProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabsList.displayName = TAB_LIST_NAME;\nvar TRIGGER_NAME = \"TabsTrigger\";\nvar TabsTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, disabled = false, ...triggerProps } = props;\n const context = useTabsContext(TRIGGER_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Item,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n focusable: !disabled,\n active: isSelected,\n children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"tab\",\n \"aria-selected\": isSelected,\n \"aria-controls\": contentId,\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n id: triggerId,\n ...triggerProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onValueChange(value);\n } else {\n event.preventDefault();\n }\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if ([\" \", \"Enter\"].includes(event.key)) context.onValueChange(value);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => {\n const isAutomaticActivation = context.activationMode !== \"manual\";\n if (!isSelected && !disabled && isAutomaticActivation) {\n context.onValueChange(value);\n }\n })\n }\n )\n }\n );\n }\n);\nTabsTrigger.displayName = TRIGGER_NAME;\nvar CONTENT_NAME = \"TabsContent\";\nvar TabsContent = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, forceMount, children, ...contentProps } = props;\n const context = useTabsContext(CONTENT_NAME, __scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n const isMountAnimationPreventedRef = React.useRef(isSelected);\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);\n return () => cancelAnimationFrame(rAF);\n }, []);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || isSelected, children: ({ present }) => /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-orientation\": context.orientation,\n role: \"tabpanel\",\n \"aria-labelledby\": triggerId,\n hidden: !present,\n id: contentId,\n tabIndex: 0,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...props.style,\n animationDuration: isMountAnimationPreventedRef.current ? \"0s\" : void 0\n },\n children: present && children\n }\n ) });\n }\n);\nTabsContent.displayName = CONTENT_NAME;\nfunction makeTriggerId(baseId, value) {\n return `${baseId}-trigger-${value}`;\n}\nfunction makeContentId(baseId, value) {\n return `${baseId}-content-${value}`;\n}\nvar Root2 = Tabs;\nvar List = TabsList;\nvar Trigger = TabsTrigger;\nvar Content = TabsContent;\nexport {\n Content,\n List,\n Root2 as Root,\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n Trigger,\n createTabsScope\n};\n//# sourceMappingURL=index.mjs.map\n","import type { ComponentType } from 'react';\nimport type { OTPMethods } from '@stytch/core/public';\nimport type { AppScreens } from './GlobalContextProvider';\nimport type { StartPasskeyAuth } from '../hooks/usePromptPasskey';\nimport type { Values } from '../../utils/types';\nimport type { IconRegistry } from '../components/IconRegistry';\nimport type { IconNames } from './components/Icons';\n\nexport type ProductId =\n | 'emailMagicLinks'\n | 'oauth'\n | 'otp'\n | 'crypto'\n | 'passwords'\n | 'passkeys'\n | 'passkeyRegistration';\n\n// tabs types\nexport const MagicLinkMethods = {\n Email: 'emailMagicLinks',\n} as const;\nexport type MagicLinkMethods = Values<typeof MagicLinkMethods>;\n\nexport const PasswordMethods = {\n Email: 'passwords',\n} as const;\nexport type PasswordMethods = Values<typeof PasswordMethods>;\n\nexport type TabMethods = OTPMethods | MagicLinkMethods | PasswordMethods;\n\n// mainScreen types\nexport type MainScreenKey = 'oauth' | 'crypto' | 'login-form' | 'divider' | 'passkey-button';\nexport type MainScreenGroup = MainScreenKey | MainScreenKey[];\n\nexport type MainScreenChildProps = {\n startPasskeyAuth: StartPasskeyAuth;\n};\n\nexport type StytchProduct = Readonly<{\n id: ProductId;\n\n screens: Partial<Record<AppScreens, ComponentType>>;\n tabs?: Partial<Record<TabMethods, ComponentType>>;\n mainScreen?: Partial<Record<MainScreenKey, ComponentType<MainScreenChildProps>>>;\n icons?: Partial<IconRegistry<IconNames>>;\n}>;\n","import React from 'react';\nimport classNames from 'classnames';\nimport { msg } from '@lingui/core/macro';\nimport { useLingui } from '@lingui/react/macro';\nimport { DEV } from '@stytch/core';\nimport type { MessageDescriptor } from '@lingui/core';\nimport { Tabs } from 'radix-ui';\nimport { OTPMethods } from '@stytch/core/public';\nimport { useConfig } from '../../../GlobalContextProvider';\nimport Typography from '../../../../components/atoms/Typography';\nimport { buttonClassNames } from '../../../../components/atoms/Button';\nimport styles from './index.module.css';\nimport { hasProduct, useProductComponents } from '../../../utils';\nimport { MagicLinkMethods, PasswordMethods, StytchProduct, TabMethods } from '../../../StytchProduct';\n\nexport const OTPTabHeaders: Record<TabMethods, MessageDescriptor> = {\n [OTPMethods.SMS]: msg({ id: 'tab.text', message: 'Text' }),\n [OTPMethods.WhatsApp]: msg({ id: 'tab.whatsapp', message: 'WhatsApp' }),\n [OTPMethods.Email]: msg({ id: 'tab.email', message: 'Email' }),\n [MagicLinkMethods.Email]: msg({ id: 'tab.email', message: 'Email' }),\n [PasswordMethods.Email]: msg({ id: 'tab.email', message: 'Email' }),\n};\n\nexport const getTabMethods = (products: StytchProduct[], otpMethods: OTPMethods[]) => {\n const hasPassword = hasProduct(products, 'passwords');\n const tabMethods = new Set<TabMethods>();\n for (const { id } of products) {\n if (id === 'emailMagicLinks') {\n tabMethods.add(hasPassword ? PasswordMethods.Email : MagicLinkMethods.Email);\n } else if (id === 'passwords') {\n tabMethods.add(PasswordMethods.Email);\n } else if (id === 'otp') {\n for (const method of otpMethods) {\n tabMethods.add(method === OTPMethods.Email && hasPassword ? PasswordMethods.Email : method);\n }\n }\n }\n return Array.from(tabMethods);\n};\n\nexport const LoginForm = () => {\n const { t } = useLingui();\n const { otpOptions, products } = useConfig();\n const productsIncludesOtp = hasProduct(products, 'otp');\n const otpMethods = productsIncludesOtp ? (otpOptions?.methods ?? []) : [];\n const hasEmailMagicLink = hasProduct(products, 'emailMagicLinks');\n const hasOTPEmail = productsIncludesOtp && otpMethods.includes(OTPMethods.Email);\n\n const tabMethods = getTabMethods(products, otpMethods);\n const tabMethodComponents = useProductComponents(products, 'tabs');\n\n if (hasEmailMagicLink && hasOTPEmail)\n return (\n <Typography variant=\"helper\" color=\"destructive\">\n {DEV('Error: Cannot use both EML and Email OTP')}\n </Typography>\n );\n\n return (\n <Tabs.Root defaultValue={tabMethods[0]}>\n {tabMethods.length > 1 && (\n <Tabs.List className={styles.tabRow} aria-label={t({ message: 'Select login method', id: 'tab.listLabel' })}>\n {tabMethods.map((method) => (\n <Tabs.Trigger\n value={method}\n key={method}\n className={classNames(buttonClassNames({ variant: 'outline', block: true }), styles.tab)}\n >\n {t(OTPTabHeaders[method])}\n </Tabs.Trigger>\n ))}\n </Tabs.List>\n )}\n\n {tabMethods.map((method) => {\n const Component = tabMethodComponents![method];\n if (tabMethods.length > 1) {\n return (\n // We override tabIndex here because each tab will have some interactive element\n // > It is recommended that all tabpanel elements in a tab set are focusable if there are any panels in\n // > the set that contain content where the first element in the panel is not focusable.\n // - From: https://www.w3.org/WAI/ARIA/apg/patterns/tabs/examples/tabs-automatic/#accessibilityfeatures\n <Tabs.Content value={method} key={method} tabIndex={-1}>\n <Component />\n </Tabs.Content>\n );\n } else {\n return <Component key={method} />;\n }\n })}\n </Tabs.Root>\n );\n};\n","import React, { useState } from 'react';\nimport { StytchEventType, StytchAPIError } from '@stytch/core/public';\nimport { useLingui } from '@lingui/react/macro';\nimport { EmailSentType } from '@stytch/core';\n\nimport {\n useConfig,\n useStytch,\n useGlobalReducer,\n AppScreens,\n useErrorCallback,\n useEventCallback,\n} from '../../../GlobalContextProvider';\nimport { EMAIL_REGEX, convertMagicLinkOptions } from '../../../../../utils';\nimport Button from '../../../../components/atoms/Button';\nimport EmailInput from '../../../../components/molecules/EmailInput';\nimport Column from '../../../../components/atoms/Column';\nimport { readB2CInternals } from '../../../../../utils/internal';\nimport { getTranslatedError } from '../../../../../utils/getTranslatedError';\nimport { hasProduct } from '../../../utils';\n\nexport const MagicLinkEmailForm = () => {\n const { t } = useLingui();\n const onEvent = useEventCallback();\n const onError = useErrorCallback();\n const [, dispatch] = useGlobalReducer();\n const stytchClient = useStytch();\n const config = useConfig();\n const emailMagicLinksOptions = config.emailMagicLinksOptions;\n const hasPasskeys = hasProduct(config.products, 'passkeys');\n\n const [email, setEmail] = useState('');\n const [errorMessage, setErrorMessage] = useState<string>('');\n const [isSubmitting, setIsSubmitting] = useState<boolean>(false);\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n const submittingEmail = email;\n if (!submittingEmail.match(EMAIL_REGEX)) {\n setErrorMessage(t({ id: 'error.invalidEmail', message: 'Email format is invalid.' }));\n } else {\n setErrorMessage('');\n setIsSubmitting(true);\n stytchClient.magicLinks.email\n .loginOrCreate(submittingEmail, convertMagicLinkOptions(emailMagicLinksOptions))\n .then((data) => {\n onEvent({ type: StytchEventType.MagicLinkLoginOrCreateEvent, data: { ...data, email: submittingEmail } });\n setIsSubmitting(false);\n dispatch({ type: 'set_magic_link_email', email: submittingEmail });\n dispatch({ type: 'transition', screen: AppScreens.EmailConfirmation });\n readB2CInternals(stytchClient).networkClient.logEvent({\n name: 'email_try_again_clicked',\n details: { email: submittingEmail, type: EmailSentType.LoginOrCreateEML },\n });\n })\n .catch((e: StytchAPIError) => {\n onError(e);\n setIsSubmitting(false);\n setErrorMessage(getTranslatedError(e, t));\n });\n }\n };\n\n return (\n <Column as=\"form\" onSubmit={handleSubmit} gap={4}>\n <EmailInput email={email} setEmail={setEmail} hasPasskeys={hasPasskeys} hideLabel error={errorMessage} />\n <Button variant=\"primary\" loading={isSubmitting} type=\"submit\">\n {t({ id: 'button.emailLogin', message: 'Continue with email' })}\n </Button>\n </Column>\n );\n};\n","import React from 'react';\nimport { MessageDescriptor } from '@lingui/core';\nimport { msg } from '@lingui/core/macro';\nimport { useLingui } from '@lingui/react/macro';\nimport { StringLiteralFromEnum } from '@stytch/core';\nimport { OAuthProviders } from '@stytch/core/public';\nimport { useStytch } from '../GlobalContextProvider';\nimport Button from '../../components/atoms/Button';\nimport { usePresentation } from '../../components/PresentationConfig';\nimport type { oauthIcons } from './Icons';\nimport { IconRegistry } from '../../components/IconRegistry';\n\ninterface ProviderInfo {\n messageDescriptor: MessageDescriptor;\n}\n\nconst providerInfo = {\n [OAuthProviders.Google]: {\n messageDescriptor: msg({ id: 'oauth.continueWithGoogle', message: 'Continue with Google' }),\n },\n [OAuthProviders.Microsoft]: {\n messageDescriptor: msg({ id: 'oauth.continueWithMicrosoft', message: 'Continue with Microsoft' }),\n },\n [OAuthProviders.Apple]: {\n messageDescriptor: msg({ id: 'oauth.continueWithApple', message: 'Continue with Apple' }),\n },\n [OAuthProviders.Github]: {\n messageDescriptor: msg({ id: 'oauth.continueWithGitHub', message: 'Continue with GitHub' }),\n },\n [OAuthProviders.GitLab]: {\n messageDescriptor: msg({ id: 'oauth.continueWithGitLab', message: 'Continue with GitLab' }),\n },\n [OAuthProviders.Facebook]: {\n messageDescriptor: msg({ id: 'oauth.continueWithFacebook', message: 'Continue with Facebook' }),\n },\n [OAuthProviders.Discord]: {\n messageDescriptor: msg({ id: 'oauth.continueWithDiscord', message: 'Continue with Discord' }),\n },\n [OAuthProviders.Salesforce]: {\n messageDescriptor: msg({ id: 'oauth.continueWithSalesforce', message: 'Continue with Salesforce' }),\n },\n [OAuthProviders.Slack]: {\n messageDescriptor: msg({ id: 'oauth.continueWithSlack', message: 'Continue with Slack' }),\n },\n [OAuthProviders.Amazon]: {\n messageDescriptor: msg({ id: 'oauth.continueWithAmazon', message: 'Continue with Amazon' }),\n },\n [OAuthProviders.Bitbucket]: {\n messageDescriptor: msg({ id: 'oauth.continueWithBitbucket', message: 'Continue with Bitbucket' }),\n },\n [OAuthProviders.LinkedIn]: {\n messageDescriptor: msg({ id: 'oauth.continueWithLinkedIn', message: 'Continue with LinkedIn' }),\n },\n [OAuthProviders.Coinbase]: {\n messageDescriptor: msg({ id: 'oauth.continueWithCoinbase', message: 'Continue with Coinbase' }),\n },\n [OAuthProviders.Twitch]: {\n messageDescriptor: msg({ id: 'oauth.continueWithTwitch', message: 'Continue with Twitch' }),\n },\n [OAuthProviders.Twitter]: {\n messageDescriptor: msg({ id: 'oauth.continueWithX', message: 'Continue with X' }),\n },\n [OAuthProviders.TikTok]: {\n messageDescriptor: msg({ id: 'oauth.continueWithTikTok', message: 'Continue with TikTok' }),\n },\n [OAuthProviders.Snapchat]: {\n messageDescriptor: msg({ id: 'oauth.continueWithSnapchat', message: 'Continue with Snapchat' }),\n },\n [OAuthProviders.Figma]: {\n messageDescriptor: msg({ id: 'oauth.continueWithFigma', message: 'Continue with Figma' }),\n },\n [OAuthProviders.Yahoo]: {\n messageDescriptor: msg({ id: 'oauth.continueWithYahoo', message: 'Continue with Yahoo' }),\n },\n} satisfies Record<OAuthProviders, ProviderInfo>;\n\ntype Props = {\n providerType: StringLiteralFromEnum<OAuthProviders>;\n loginRedirectUrl?: string;\n signupRedirectUrl?: string;\n customScopes?: string[];\n providerParams?: Record<string, string>;\n onSuccess?: () => void;\n};\n\nexport const OAuthButton = ({\n providerType,\n loginRedirectUrl,\n signupRedirectUrl,\n customScopes,\n providerParams,\n onSuccess,\n}: Props) => {\n const { t } = useLingui();\n const stytchClient = useStytch();\n const iconRegistry: IconRegistry<keyof typeof oauthIcons> = usePresentation().iconRegistry;\n\n const provider = providerInfo[providerType];\n let label: string = providerType;\n let icon = null;\n if (provider) {\n const { messageDescriptor } = provider;\n\n const iconName = providerType === 'twitter' ? 'xTwitter' : providerType;\n const Icon = iconRegistry[iconName];\n\n label = t(messageDescriptor);\n icon = <Icon />;\n }\n\n const onButtonClick = async () => {\n await stytchClient.oauth[providerType].start({\n login_redirect_url: loginRedirectUrl,\n signup_redirect_url: signupRedirectUrl,\n custom_scopes: customScopes,\n provider_params: providerParams,\n });\n onSuccess?.();\n };\n\n return (\n <Button onClick={onButtonClick} variant=\"outline\" icon={icon}>\n {label}\n </Button>\n );\n};\n","import { useStytch } from '../../GlobalContextProvider';\nimport { readB2CInternals } from '../../../../utils/internal';\nimport { useMemo } from 'react';\nimport { safeLocalStorage } from '../../../../utils/storage';\nimport { OAuthProviders } from '@stytch/core/public';\n\nexport function useLastUsedOAuth() {\n const stytch = useStytch();\n const { publicToken } = readB2CInternals(stytch);\n\n const lastUsedOAuth = useMemo(() => safeLocalStorage.getItem(publicToken, 'b2c_last_used_oauth'), [publicToken]);\n const setLastUsedOAuth = (providerType: OAuthProviders) => {\n safeLocalStorage.setItem(publicToken, 'b2c_last_used_oauth', providerType);\n };\n\n return [lastUsedOAuth, setLastUsedOAuth] as const;\n}\n","import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { OAuthProviders, OneTapPositions } from '@stytch/core/public';\nimport { DEV, logger, StringLiteralFromEnum } from '@stytch/core';\nimport classNames from 'classnames';\nimport { OAuthButton } from './OAuthButton';\nimport { useConfig, useStytch } from '../GlobalContextProvider';\nimport { readB2CInternals } from '../../../utils/internal';\nimport { useIsUnmounted } from '../../hooks/useIsMounted';\nimport { ErrorMessages, OneTapErrors } from '../../components/organisms/OneTapError';\nimport { OneTapProvider } from '../../../oneTap/OneTapProvider';\nimport { CircularProgress } from '../../components/atoms/CircularProgress';\nimport { useIsOnlyFloatingOneTap } from '../../hooks/useIsOnlyFloatingOneTap';\nimport { GoogleOneTapClient } from '../../../oneTap/GoogleOneTapClient';\nimport { getRenderedOneTapMode } from '../../../oneTap/positionModes';\nimport styles from './GoogleOneTap.module.css';\nimport LastUsed from '../../components/molecules/LastUsed';\nimport { useLastUsedOAuth } from '../screens/Main/useLastUsedOAuth';\n\ntype Props = {\n position?: StringLiteralFromEnum<OneTapPositions>;\n customScopes?: string[];\n providerParams?: Record<string, string>;\n cancelOnTapOutside?: boolean;\n};\n\nconst OAUTH_BUTTON_HEIGHT = 38;\n\n// See WebComponents.tsx - when using shadow DOM, the Google script cannot see the\n// mount point, so we render it outside and use slot to bring it back in\nconst OneTapMountNode = ({ enableShadowDOM }: { enableShadowDOM: boolean }) =>\n enableShadowDOM ? (\n <slot name=\"one-tap\"></slot>\n ) : (\n <div data-prompt_parent_id=\"g_id_onload\" id=\"google-parent-prompt\" />\n );\n\nexport const GoogleOneTap = ({ position, customScopes, providerParams, cancelOnTapOutside }: Props) => {\n const oneTapRenderMode = getRenderedOneTapMode(position);\n const shouldRenderEmbeddedOneTap = oneTapRenderMode === 'embedded';\n const shouldRenderOneTap = !!oneTapRenderMode;\n\n const config = useConfig();\n const stytch = useStytch();\n const isOnlyFloatingOneTap = useIsOnlyFloatingOneTap(config);\n const [pending, setPending] = useState(shouldRenderEmbeddedOneTap);\n const [canDisplayOneTap, setCanDisplayOneTap] = useState(true);\n const [height, setHeight] = useState(OAUTH_BUTTON_HEIGHT);\n const [oneTapError, setOneTapError] = useState<OneTapErrors>();\n const resizeCount = useRef(0);\n const timeout = useRef<number>();\n const isUnmounted = useIsUnmounted();\n const [lastUsedMethod, setLastUsedOAuth] = useLastUsedOAuth();\n\n /*\n * Begin One Tap Render Smoothing Logic\n */\n // Gets height of rendered one-tap UI, and sets the container height to that.\n // Animation is added for a smoother transition,\n const onResize = useCallback<ResizeObserverCallback>(([el]) => {\n if (timeout.current != null) {\n clearTimeout(timeout.current);\n }\n // On initial load, the one-tap ui rapidly changes heights 3 times. Checking\n // the resizeCount lets us debounce the first 2 resizes, so they will get\n // cancelled, but if they don't, it will resize after the short delay.\n if (resizeCount.current > 1) {\n // While setting the height, if the contentRect height is 0, it could also mean that the\n // oauthOptions props are being changed, and in that scenario if we can continue to display\n // one tap, we are setting the container height to the current height. If one tap cannot display\n // one tap, we will set the container height to the height of the button component.\n // Else we will set the height to the contentRect height.\n setHeight((currentHeight) =>\n el.contentRect.height === 0 ? (canDisplayOneTap ? currentHeight : OAUTH_BUTTON_HEIGHT) : el.contentRect.height,\n );\n } else {\n timeout.current = window.setTimeout(\n () =>\n setHeight((currentHeight) =>\n el.contentRect.height === 0\n ? canDisplayOneTap\n ? currentHeight\n : OAUTH_BUTTON_HEIGHT\n : el.contentRect.height,\n ),\n 100,\n );\n }\n resizeCount.current++;\n // eslint-disable-next-line react-hooks/exhaustive-deps -- SDK-1354\n }, []);\n\n // If we are in embedded mode, initialize the resize observer and bind it to the React callback\n useEffect(() => {\n if (shouldRenderEmbeddedOneTap) {\n const el = document.getElementById('google-parent-prompt');\n if (el) {\n const resizeObserver = new ResizeObserver(onResize);\n resizeObserver.observe(el);\n return () => resizeObserver.disconnect();\n }\n }\n }, [onResize, shouldRenderEmbeddedOneTap]);\n /*\n * End One Tap Render Smoothing Logic\n */\n\n /*\n * Begin One Tap Loading / Initialization Logic\n */\n //\n const attemptToLoadOneTap = useCallback(async () => {\n if (!shouldRenderOneTap) {\n return;\n }\n\n const { oneTap } = readB2CInternals(stytch);\n const clientResult = await oneTap.createOneTapClient();\n if (!clientResult.success) {\n if (clientResult.reason === 'oauth_config_not_found') {\n setOneTapError(OneTapErrors.NoConfiguredOAuthClient);\n } else if (clientResult.reason === 'no_signup_redirect_urls_set') {\n setOneTapError(OneTapErrors.NoConfiguredSignupRedirectUrls);\n } else if (clientResult.reason === 'no_login_redirect_urls_set') {\n setOneTapError(OneTapErrors.NoConfiguredLoginRedirectUrls);\n } else {\n logger.error('Unable to load One Tap settings for project', clientResult);\n }\n return;\n }\n const { client } = clientResult;\n\n const onOneTapCancelled = (showError?: boolean) => {\n setCanDisplayOneTap(false);\n setHeight(OAUTH_BUTTON_HEIGHT);\n if (showError) {\n setOneTapError(OneTapErrors.OriginNotAllowedForClient);\n }\n };\n\n /**\n * One Tap is composed of two calls, an init() call and a prompt() call.\n * The init() call takes in a parent_id where One Tap should be shown\n * prompt() does the actual showing.\n * If the element does not exist, we show One Tap in the upper right corner.\n * If the element does exist, One Tap's lifecycle is tied to the lifecycle of said element.\n * Here, we call init() then prompt() in the useEffect. If the component unmounts before\n * prompt() is called, One Tap falls back to the element-does-not-exist behavior.\n * Fix: add a check for whether the component is still rendered immediately before we\n * call prompt, preventing this race condition\n */\n if (isUnmounted.current) {\n return;\n }\n\n const renderResult = await client.render({\n callback: oneTap.createOnSuccessHandler({\n loginRedirectUrl: config.oauthOptions?.loginRedirectURL,\n signupRedirectUrl: config.oauthOptions?.signupRedirectURL,\n onSuccess: oneTap.redirectOnSuccess,\n }),\n onOneTapCancelled,\n style: { position },\n cancelOnTapOutside,\n });\n\n // Check if the component has become unmounted during the async OT render process\n // Kill the rest of the logic if so\n if (isUnmounted.current) {\n client.cancel();\n return;\n }\n\n setCanDisplayOneTap(renderResult.success);\n setPending(false);\n\n if (!renderResult.success) {\n if (renderResult.reason === 'unregistered_origin') {\n setOneTapError(OneTapErrors.OriginNotAllowedForClient);\n }\n if (renderResult.reason === 'invalid_client') {\n setOneTapError(OneTapErrors.InvalidOAuthClient);\n }\n logger.error('Unable to render One Tap prompt', renderResult);\n }\n return client;\n }, [\n shouldRenderOneTap,\n stytch,\n isUnmounted,\n config.oauthOptions?.loginRedirectURL,\n config.oauthOptions?.signupRedirectURL,\n position,\n cancelOnTapOutside,\n ]);\n\n useEffect(() => {\n let client: GoogleOneTapClient | undefined;\n attemptToLoadOneTap()\n .then(($client) => (client = $client))\n .catch((err) => {\n logger.error('Unable to render One Tap prompt', err);\n setCanDisplayOneTap(false);\n setPending(false);\n });\n return () => client?.cancel();\n }, [attemptToLoadOneTap]);\n /*\n * End One Tap Loading / Initialization Logic\n */\n\n // Fallback Google auth button in case One Tap cannot be displayed\n const fallbackButton = (\n <OAuthButton\n providerType={OAuthProviders.Google}\n loginRedirectUrl={config.oauthOptions?.loginRedirectURL}\n signupRedirectUrl={config.oauthOptions?.signupRedirectURL}\n customScopes={customScopes}\n providerParams={providerParams}\n onSuccess={() => setLastUsedOAuth(OAuthProviders.Google)}\n />\n );\n\n const fallbackWithLastUsed =\n lastUsedMethod === OAuthProviders.Google ? <LastUsed>{fallbackButton}</LastUsed> : fallbackButton;\n\n if (isOnlyFloatingOneTap) {\n return <OneTapMountNode enableShadowDOM={Boolean(config.enableShadowDOM)} />;\n }\n\n if (oneTapError) {\n return (\n <>\n {DEV(<ErrorMessages error={oneTapError} />)}\n {fallbackWithLastUsed}\n </>\n );\n }\n\n if (shouldRenderEmbeddedOneTap && OneTapProvider.willGoogleOneTapShowEmbedded()) {\n return (\n <div className={classNames(styles.container, { [styles.pending]: pending })} style={{ height: height + 'px' }}>\n {pending && <CircularProgress size={25} />}\n {canDisplayOneTap ? <OneTapMountNode enableShadowDOM={Boolean(config.enableShadowDOM)} /> : fallbackButton}\n </div>\n );\n }\n\n return fallbackWithLastUsed;\n};\n","import React from 'react';\nimport { arrayUtils } from '@stytch/core';\nimport { OAuthButton } from '../../components/OAuthButton';\nimport { GoogleOneTap } from '../../components/GoogleOneTap';\nimport { useConfig } from '../../GlobalContextProvider';\nimport ButtonColumn from '../../../components/molecules/ButtonColumn';\nimport LastUsed from '../../../components/molecules/LastUsed';\nimport { useLastUsedOAuth } from './useLastUsedOAuth';\n\nexport const OAuthButtons = () => {\n const config = useConfig();\n const [lastUsedOAuth, setLastUsedOAuth] = useLastUsedOAuth();\n\n if (!config.oauthOptions) return <></>;\n const { providers, loginRedirectURL, signupRedirectURL } = config.oauthOptions;\n\n const [reorderedProviders, foundLastUsed] = arrayUtils.moveToFront(\n providers,\n (provider) => provider.type === lastUsedOAuth,\n );\n\n return (\n <ButtonColumn>\n {reorderedProviders.map((provider, index) => {\n const providerProps = {\n customScopes: provider.custom_scopes,\n providerParams: provider.provider_params,\n };\n\n if (provider.one_tap) {\n return (\n <GoogleOneTap\n position={provider.position}\n key={`oauth-${provider.type}`}\n {...providerProps}\n cancelOnTapOutside={provider.cancel_on_tap_outside}\n />\n );\n }\n\n const button = (\n <OAuthButton\n key={`oauth-${provider.type}`}\n providerType={provider.type}\n loginRedirectUrl={loginRedirectURL}\n signupRedirectUrl={signupRedirectURL}\n onSuccess={() => setLastUsedOAuth(provider.type)}\n {...providerProps}\n />\n );\n\n return foundLastUsed && index === 0 ? <LastUsed>{button}</LastUsed> : button;\n })}\n </ButtonColumn>\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport {\n AppScreens,\n useConfig,\n useErrorCallback,\n useEventCallback,\n useGlobalReducer,\n useStytch,\n} from '../../GlobalContextProvider';\nimport { DEFAULT_OTP_EXPIRATION_MINUTES, DEFAULT_SESSION_DURATION_MINUTES, EmailSentType } from '@stytch/core';\nimport { OTPMethods, StytchAPIError, StytchEventType } from '@stytch/core/public';\nimport Button from '../../../components/atoms/Button';\nimport { readB2CInternals } from '../../../../utils/internal';\nimport Column from '../../../components/atoms/Column';\nimport { SentOTPEntry } from '../../../components/organisms/SentOTPEntry';\nimport { formatNumber } from '../../../../utils/handleParsePhoneNumber';\nimport { getTranslatedError } from '../../../../utils/getTranslatedError';\nimport ButtonColumn from '../../../components/molecules/ButtonColumn';\nimport { useCountdown } from '../../../components/atoms/Countdown';\nimport { ResendOTPButton } from '../../../components/organisms/ResendOTPButton';\n\nexport const OTPAuthenticate = ({ hideBackButton = false }: { hideBackButton?: boolean }) => {\n const { t } = useLingui();\n const onEvent = useEventCallback();\n const onError = useErrorCallback();\n const stytchClient = useStytch();\n const config = useConfig();\n const [state, dispatch] = useGlobalReducer();\n const [isSubmitting, setIsSubmitting] = useState<boolean>(false);\n\n const destination = state.formState.otpState.otpDestination;\n const selectionMethod = state.formState.otpState.type;\n const [errorMessage, setErrorMessage] = useState('');\n const [formattedDestination, setFormattedDestination] = useState(destination);\n\n const calculateExpiration = () =>\n Date.now() + 1000 * 60 * (config.otpOptions?.expirationMinutes ?? DEFAULT_OTP_EXPIRATION_MINUTES);\n\n useEffect(() => {\n const parseDestination = async () => {\n const parsePhoneNumber = (phoneNumber: string) =>\n readB2CInternals(stytchClient).clientsideServices.parsedPhoneNumber({ phoneNumber });\n\n const national = await formatNumber({\n parsePhoneNumber,\n phoneNumber: destination,\n });\n\n setFormattedDestination(selectionMethod === OTPMethods.Email ? destination : national);\n };\n\n parseDestination();\n }, [selectionMethod, destination, stytchClient]);\n\n const [expiration, setExpiration] = useState(calculateExpiration);\n const resendCountdown = useCountdown();\n\n const resendOTP = async () => {\n if (selectionMethod === OTPMethods.Email) {\n readB2CInternals(stytchClient).networkClient.logEvent({\n name: 'email_try_again_clicked',\n details: { email: destination, type: EmailSentType.LoginOrCreateOTP },\n });\n }\n\n try {\n const data = await stytchClient.otps[selectionMethod].loginOrCreate(destination, {\n expiration_minutes: config.otpOptions?.expirationMinutes ?? DEFAULT_OTP_EXPIRATION_MINUTES,\n });\n\n onEvent({ type: StytchEventType.OTPsLoginOrCreateEvent, data });\n setExpiration(calculateExpiration());\n dispatch({\n type: 'update_otp_state',\n otpState: {\n type: selectionMethod,\n methodId: data.method_id,\n otpDestination: destination,\n },\n });\n } catch (e: unknown) {\n onError(e as StytchAPIError);\n setErrorMessage(getTranslatedError(e as StytchAPIError, t));\n throw e;\n }\n };\n\n const handleSubmit = async (otp: string) => {\n setIsSubmitting(true);\n stytchClient.otps\n .authenticate(otp, state.formState.otpState.methodId, {\n session_duration_minutes: config.sessionOptions?.sessionDurationMinutes ?? DEFAULT_SESSION_DURATION_MINUTES,\n })\n .then((data) => {\n onEvent({ type: StytchEventType.OTPsAuthenticate, data });\n setIsSubmitting(false);\n dispatch({\n type: 'transition',\n screen: AppScreens.OTPConfirmation,\n });\n })\n .catch((e: StytchAPIError) => {\n onError(e);\n resendCountdown.clear();\n setIsSubmitting(false);\n setErrorMessage(getTranslatedError(e, t));\n });\n };\n\n return (\n <Column gap={6}>\n <SentOTPEntry\n expiration={expiration}\n formattedDestination={formattedDestination}\n isSubmitting={isSubmitting}\n onSubmit={handleSubmit}\n errorMessage={errorMessage}\n />\n\n <ButtonColumn>\n <ResendOTPButton countdown={resendCountdown} resendOTP={resendOTP} isSubmitting={isSubmitting} />\n\n {!hideBackButton && (\n <Button variant=\"ghost\" onClick={() => dispatch({ type: 'transition', screen: AppScreens.Main })}>\n {t({ id: 'button.goBack', message: 'Go back' })}\n </Button>\n )}\n </ButtonColumn>\n </Column>\n );\n};\n","import * as React from 'react';\nimport { StytchEventType } from '@stytch/core/public';\nimport { useLingui } from '@lingui/react/macro';\nimport { useMountEffect } from '../../../hooks/useMountEffect';\nimport { useEventCallback } from '../../GlobalContextProvider';\nimport { Confirmation } from '../../../components/molecules/Confirmation';\n\nexport const OTPConfirmation = () => {\n const { t } = useLingui();\n const onEvent = useEventCallback();\n useMountEffect(() => {\n onEvent({ type: StytchEventType.AuthenticateFlowComplete, data: {} });\n });\n\n return (\n <Confirmation text={t({ id: 'otp.success.content', message: 'Your passcode has been successfully verified.' })} />\n );\n};\n","import React, { useMemo, useState } from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { StytchAPIError, StytchEventType } from '@stytch/core/public';\nimport { DEFAULT_SESSION_DURATION_MINUTES } from '@stytch/core';\n\nimport Column from '../../../components/atoms/Column';\nimport Button from '../../../components/atoms/Button';\nimport EmailInput from '../../../components/molecules/EmailInput';\nimport { PasswordInput } from '../../../components/molecules/PasswordInput';\n\nimport {\n AppScreens,\n useConfig,\n useErrorCallback,\n useEventCallback,\n useGlobalReducer,\n useStytch,\n} from '../../GlobalContextProvider';\nimport { useBootstrap } from '../../utils';\n\nimport { convertPasswordResetOptions, debounce, noop } from '../../../../utils';\nimport { getNewPasswordProps, PasswordError, PasswordErrorProps } from '../../../components/molecules/PasswordError';\nimport { getTranslatedError } from '../../../../utils/getTranslatedError';\n\nexport const PasswordNewUser = () => {\n const { t } = useLingui();\n const stytchClient = useStytch();\n const { bootstrap } = useBootstrap();\n const config = useConfig();\n const passwordOptions = config.passwordOptions;\n\n const [state, dispatch] = useGlobalReducer();\n\n const onEvent = useEventCallback();\n const onError = useErrorCallback();\n\n const email = state.formState.passwordState.email;\n const [password, setPassword] = useState('');\n const [errorMessage, setErrorMessage] = useState('');\n const [passwordError, setPasswordError] = useState<PasswordErrorProps>({ policy: 'notLoaded' });\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const updateStrengthCheck = useMemo(\n () =>\n debounce((email: string, password: string) => {\n setErrorMessage('');\n stytchClient.passwords\n .strengthCheck({ email, password })\n .then(({ score, feedback, valid_password, strength_policy, breached_password }) => {\n const common = {\n passwordInvalid: !valid_password,\n isPasswordBreached: breached_password,\n };\n\n if (strength_policy === 'zxcvbn') {\n setPasswordError({\n policy: strength_policy,\n ...common,\n passwordScore: score,\n passwordWarning: feedback.warning,\n passwordSuggestions: feedback.suggestions,\n });\n } else if (strength_policy === 'luds') {\n setPasswordError({\n policy: strength_policy,\n ...common,\n missingCharacters: feedback.luds_requirements.missing_characters,\n missingComplexity: feedback.luds_requirements.missing_complexity,\n });\n }\n })\n .catch((e: StytchAPIError) => {\n setErrorMessage(getTranslatedError(e, t));\n });\n }),\n [stytchClient.passwords, t],\n );\n\n const onPasswordChange = (password: string) => {\n setPassword(password);\n updateStrengthCheck(email, password);\n };\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n setErrorMessage('');\n setIsSubmitting(true);\n stytchClient.passwords\n .create({\n email,\n password,\n session_duration_minutes: config.sessionOptions?.sessionDurationMinutes ?? DEFAULT_SESSION_DURATION_MINUTES,\n })\n .then((data) => {\n setIsSubmitting(false);\n onEvent({ type: StytchEventType.PasswordCreate, data });\n dispatch({ type: 'transition', screen: AppScreens.PasswordConfirmation });\n })\n .catch((e: StytchAPIError) => {\n onError(e);\n if (e.error_type === 'reset_password') {\n stytchClient.passwords.resetByEmailStart(convertPasswordResetOptions(email, passwordOptions)).then(() => {\n dispatch({ type: 'transition', screen: AppScreens.PasswordDedupe });\n });\n } else {\n setErrorMessage(getTranslatedError(e, t));\n }\n setIsSubmitting(false);\n });\n };\n\n const passwordInputProps = getNewPasswordProps(bootstrap, passwordError.policy);\n\n return (\n <Column as=\"form\" onSubmit={handleSubmit} gap={4}>\n <EmailInput email={email} setEmail={noop} disabled />\n\n <PasswordInput password={password} setPassword={onPasswordChange} error={errorMessage} {...passwordInputProps} />\n\n <PasswordError bootstrap={bootstrap} {...passwordError} />\n\n <Button\n variant=\"primary\"\n loading={isSubmitting}\n type=\"submit\"\n disabled={passwordError.policy === 'notLoaded' || passwordError.passwordInvalid}\n >\n {t({\n id: 'button.continue',\n message: 'Continue',\n })}\n </Button>\n </Column>\n );\n};\n","import React, { useState } from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { DEFAULT_SESSION_DURATION_MINUTES } from '@stytch/core';\nimport { StytchEventType, StytchAPIError } from '@stytch/core/public';\n\nimport Column from '../../../components/atoms/Column';\nimport Button from '../../../components/atoms/Button';\nimport ButtonColumn from '../../../components/molecules/ButtonColumn';\nimport EmailInput from '../../../components/molecules/EmailInput';\nimport { PasswordInput } from '../../../components/molecules/PasswordInput';\n\nimport {\n useGlobalReducer,\n useStytch,\n AppScreens,\n useConfig,\n useEventCallback,\n useErrorCallback,\n} from '../../GlobalContextProvider';\nimport { convertPasswordResetOptions } from '../../../../utils';\nimport { getTranslatedError } from '../../../../utils/getTranslatedError';\n\nexport const PasswordAuthenticate = () => {\n const { t } = useLingui();\n const stytchClient = useStytch();\n const config = useConfig();\n const passwordOptions = config.passwordOptions;\n const [state, dispatch] = useGlobalReducer();\n\n const onEvent = useEventCallback();\n const onError = useErrorCallback();\n\n const [email, setEmail] = useState(state.formState.passwordState.email);\n const [password, setPassword] = useState('');\n const [errorMessage, setErrorMessage] = useState('');\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n setErrorMessage('');\n setIsSubmitting(true);\n stytchClient.passwords\n .authenticate({\n email,\n password,\n session_duration_minutes: config.sessionOptions?.sessionDurationMinutes ?? DEFAULT_SESSION_DURATION_MINUTES,\n })\n .then((data) => {\n setIsSubmitting(false);\n onEvent({ type: StytchEventType.PasswordAuthenticate, data });\n dispatch({ type: 'transition', screen: AppScreens.PasswordConfirmation });\n })\n .catch((e: StytchAPIError) => {\n onError(e);\n if (e.error_type === 'reset_password') {\n stytchClient.passwords.resetByEmailStart(convertPasswordResetOptions(email, passwordOptions)).then(() => {\n dispatch({ type: 'transition', screen: AppScreens.PasswordDedupe });\n });\n } else {\n setErrorMessage(getTranslatedError(e, t));\n }\n setIsSubmitting(false);\n });\n };\n\n const onForgot = () => {\n stytchClient.passwords.resetByEmailStart(convertPasswordResetOptions(email, passwordOptions)).then(() => {\n dispatch({ type: 'transition', screen: AppScreens.PasswordForgot });\n });\n };\n\n return (\n <Column as=\"form\" onSubmit={handleSubmit} gap={4}>\n <EmailInput email={email} setEmail={setEmail} disabled />\n\n <PasswordInput password={password} setPassword={setPassword} type=\"current\" error={errorMessage} />\n\n <ButtonColumn>\n <Button variant=\"primary\" loading={isSubmitting} type=\"submit\">\n {t({ id: 'button.continue', message: 'Continue' })}\n </Button>\n\n <Button variant=\"outline\" onClick={onForgot}>\n {t({ id: 'button.forgotPassword', message: 'Forgot your password?' })}\n </Button>\n </ButtonColumn>\n </Column>\n );\n};\n","import React, { useState } from 'react';\nimport { StytchAPIError, StytchEventType } from '@stytch/core/public';\nimport { EmailConfirmation } from './EmailConfirmation';\nimport { OTPAuthenticate } from './OTPAuthenticate';\nimport Divider from '../../../components/molecules/Divider';\nimport { convertPasswordResetOptions } from '../../../../utils';\nimport {\n AppScreens,\n useConfig,\n useErrorCallback,\n useEventCallback,\n useGlobalReducer,\n useStytch,\n} from '../../GlobalContextProvider';\nimport { useMountEffect } from '../../../hooks/useMountEffect';\nimport Button from '../../../components/atoms/Button';\nimport ErrorText from '../../../components/molecules/ErrorText';\nimport { getTranslatedError } from '../../../../utils/getTranslatedError';\nimport { useLingui } from '@lingui/react/macro';\nimport Column from '../../../components/atoms/Column';\nimport { usePasswordlessAuthenticate } from './usePasswordlessAuthenticate';\n\ntype PasswordlessAuthenticateProps = {\n secondaryType: 'eml' | 'otp' | undefined;\n};\n\nexport const PasswordlessAuthenticate = ({ secondaryType }: PasswordlessAuthenticateProps) => {\n const { t } = useLingui();\n const stytchClient = useStytch();\n const config = useConfig();\n const [state, dispatch] = useGlobalReducer();\n const onEvent = useEventCallback();\n const onError = useErrorCallback();\n\n const [errorMessage, setErrorMessage] = useState('');\n\n const { sendLink, sendCode } = usePasswordlessAuthenticate();\n const passwordOptions = config.passwordOptions;\n\n const email = state.formState.passwordState.email;\n\n const resetPassword = () => {\n stytchClient.passwords\n .resetByEmailStart(convertPasswordResetOptions(email, passwordOptions))\n .then((data) => {\n onEvent({ type: StytchEventType.PasswordResetByEmailStart, data });\n dispatch({ type: 'transition', screen: AppScreens.PasswordSetNew });\n })\n .catch((e: StytchAPIError) => {\n onError(e);\n setErrorMessage(getTranslatedError(e, t));\n });\n };\n\n useMountEffect(() => {\n switch (secondaryType) {\n case 'eml':\n sendLink();\n return;\n\n case 'otp':\n sendCode();\n return;\n\n default:\n stytchClient.passwords\n .resetByEmailStart(convertPasswordResetOptions(email, passwordOptions))\n .then((data) => {\n onEvent({ type: StytchEventType.PasswordResetByEmailStart, data });\n dispatch({ type: 'transition', screen: AppScreens.PasswordSetNew });\n })\n .catch((e: StytchAPIError) => {\n onError(e);\n });\n return;\n }\n });\n\n if (!secondaryType) {\n return null;\n }\n\n return (\n <>\n {secondaryType === 'eml' ? <EmailConfirmation showGoBack={false} /> : <OTPAuthenticate hideBackButton />}\n\n <Divider />\n\n <Column gap={2}>\n <Button onClick={resetPassword} variant=\"outline\">\n {t({ id: 'button.createPasswordInstead', message: 'Create a password instead' })}\n </Button>\n {errorMessage && <ErrorText>{errorMessage}</ErrorText>}\n </Column>\n </>\n );\n};\n","import React, { Dispatch } from 'react';\nimport { OTPMethods } from '@stytch/core/public';\nimport { useLingui } from '@lingui/react/macro';\n\nimport Column from '../../../components/atoms/Column';\nimport Button from '../../../components/atoms/Button';\nimport { useGlobalReducer, AppScreens, useConfig } from '../../GlobalContextProvider';\nimport Divider from '../../../components/molecules/Divider';\nimport { PasswordNewUser } from '../Password/PasswordNewUser';\nimport { PasswordAuthenticate } from '../Password/PasswordAuthenticate';\nimport Typography from '../../../components/atoms/Typography';\nimport TextColumn from '../../../components/molecules/TextColumn';\nimport { PasswordlessAuthenticate } from './PasswordlessAuthenticate';\nimport { Action } from '../../reducer';\nimport { hasProduct } from '../../utils';\nimport { usePasswordlessAuthenticate } from './usePasswordlessAuthenticate';\n\nexport const PasswordCreateAuthenticate = () => {\n const { t } = useLingui();\n const { emailMagicLinksOptions, otpOptions, products } = useConfig();\n const [state, dispatch] = useGlobalReducer();\n\n const otpMethods = otpOptions?.methods ?? [];\n const hasEmailMagicLink = hasProduct(products, 'emailMagicLinks') && !!emailMagicLinksOptions;\n const hasOTPEmail = otpMethods.includes(OTPMethods.Email);\n const secondaryType = hasOTPEmail ? 'otp' : hasEmailMagicLink ? 'eml' : undefined;\n const userType = state.formState.passwordState.type;\n\n const secondaryAuth = useSecondaryAuthenticate(secondaryType, { dispatch });\n\n return (\n <Column gap={2}>\n {(() => {\n switch (userType) {\n case 'new':\n return (\n <Column gap={6}>\n {secondaryAuth ? (\n <TextColumn\n header={t({ id: 'password.createAccount.title', message: 'Create an account' })}\n body={t({\n id: 'createAccount.title',\n message: 'Choose how you would like to create your account.',\n })}\n />\n ) : (\n <TextColumn\n header={t({ id: 'password.setPassword.title', message: 'Set a password' })}\n body={t({\n id: 'password.createAccount.content',\n message: 'Finish creating your account by setting a password.',\n })}\n />\n )}\n\n {secondaryAuth && (\n <Button variant=\"primary\" onClick={secondaryAuth.handle} loading={secondaryAuth.isSubmitting}>\n {secondaryAuth.buttonText}\n </Button>\n )}\n\n {secondaryAuth && <Divider />}\n\n <PasswordNewUser />\n </Column>\n );\n\n case 'password':\n return (\n <Column gap={6}>\n <Typography variant=\"header\">{t({ id: 'password.login.title', message: 'Log in' })}</Typography>\n\n <PasswordAuthenticate />\n\n {secondaryAuth && <Divider />}\n\n {secondaryAuth && (\n <Button variant=\"outline\" onClick={secondaryAuth.handle} loading={secondaryAuth.isSubmitting}>\n {secondaryAuth.buttonText}\n </Button>\n )}\n </Column>\n );\n\n case 'passwordless':\n return <PasswordlessAuthenticate secondaryType={secondaryType} />;\n }\n })()}\n\n <Button variant=\"ghost\" onClick={() => dispatch({ type: 'transition', screen: AppScreens.Main })}>\n {t({ id: 'button.goBack', message: 'Go back' })}\n </Button>\n </Column>\n );\n};\n\nfunction useSecondaryAuthenticate(\n secondaryType: 'eml' | 'otp' | undefined,\n {\n dispatch,\n }: {\n dispatch: Dispatch<Action>;\n },\n) {\n const { t } = useLingui();\n const { sendLink, sendCode, isSubmitting } = usePasswordlessAuthenticate();\n\n if (secondaryType == null) {\n return undefined;\n }\n\n const buttonText =\n secondaryType === 'eml'\n ? t({\n id: 'button.emailMagicLink',\n message: 'Email me a login link',\n })\n : t({\n id: 'button.emailOTP',\n message: 'Email me a login code',\n });\n\n const handle =\n secondaryType === 'eml'\n ? async () => {\n await sendLink();\n dispatch({ type: 'transition', screen: AppScreens.EmailConfirmation });\n }\n : async () => {\n await sendCode();\n dispatch({ type: 'transition', screen: AppScreens.OTPAuthenticate });\n };\n\n return {\n buttonText,\n handle,\n isSubmitting,\n };\n}\n","import React, { useState, useMemo, useEffect } from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { DEFAULT_SESSION_DURATION_MINUTES } from '@stytch/core';\nimport { StytchAPIError, StytchEventType } from '@stytch/core/public';\n\nimport Column from '../../../components/atoms/Column';\nimport Typography from '../../../components/atoms/Typography';\nimport { PasswordInput } from '../../../components/molecules/PasswordInput';\n\nimport {\n useGlobalReducer,\n useStytch,\n AppScreens,\n useConfig,\n useErrorCallback,\n useEventCallback,\n} from '../../GlobalContextProvider';\nimport { useBootstrap } from '../../utils';\n\nimport { debounce } from '../../../../utils';\nimport Button from '../../../components/atoms/Button';\n\nimport { getNewPasswordProps, PasswordError, PasswordErrorProps } from '../../../components/molecules/PasswordError';\nimport ErrorText from '../../../components/molecules/ErrorText';\nimport { getTranslatedError } from '../../../../utils/getTranslatedError';\nimport ButtonColumn from '../../../components/molecules/ButtonColumn';\nimport VerticalTransition from '../../../components/atoms/VerticalTransition';\n\nexport const ResetPasswordScreen = () => {\n const { t } = useLingui();\n const stytchClient = useStytch();\n const config = useConfig();\n const { bootstrap } = useBootstrap();\n const [state, dispatch] = useGlobalReducer();\n const passwordToken = state.formState.resetPasswordState.token;\n\n const onEvent = useEventCallback();\n const onError = useErrorCallback();\n\n const resetTokenType = useMemo(() => {\n const parsed = stytchClient.parseAuthenticateUrl();\n return parsed?.tokenType ?? '';\n }, [stytchClient]);\n\n const [password, setPassword] = useState('');\n const [passwordError, setPasswordError] = useState<PasswordErrorProps>({ policy: 'notLoaded' });\n const [errorMessage, setErrorMessage] = useState('');\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n // Passwordless login states\n const [loginErrorMessage, setLoginErrorMessage] = useState('');\n const [isLoggingIn, setIsLoggingIn] = useState(false);\n\n const updateStrengthCheck = useMemo(\n () =>\n debounce((password: string) => {\n setErrorMessage('');\n return stytchClient.passwords\n .strengthCheck({ password })\n .then(({ score, feedback, valid_password, strength_policy, breached_password }) => {\n const common = {\n passwordInvalid: !valid_password,\n isPasswordBreached: breached_password,\n };\n\n if (strength_policy === 'zxcvbn') {\n setPasswordError({\n policy: strength_policy,\n ...common,\n passwordScore: score,\n passwordWarning: feedback.warning,\n passwordSuggestions: feedback.suggestions,\n });\n } else if (strength_policy === 'luds') {\n setPasswordError({\n policy: strength_policy,\n ...common,\n missingCharacters: feedback.luds_requirements.missing_characters,\n missingComplexity: feedback.luds_requirements.missing_complexity,\n });\n }\n });\n }),\n [stytchClient.passwords],\n );\n\n useEffect(() => {\n if (resetTokenType === 'login') {\n stytchClient.magicLinks\n .authenticate(passwordToken, {\n session_duration_minutes: config.sessionOptions?.sessionDurationMinutes ?? DEFAULT_SESSION_DURATION_MINUTES,\n })\n .then(() => {\n dispatch({ type: 'transition', screen: AppScreens.PasswordConfirmation });\n })\n .catch((e: Error) => {\n onError(e);\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- SDK-1354\n }, [resetTokenType]);\n\n const onPasswordChange = (password: string) => {\n setPassword(password);\n updateStrengthCheck(password);\n };\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n setErrorMessage('');\n setIsSubmitting(true);\n stytchClient.passwords\n .resetByEmail({\n token: passwordToken,\n password,\n session_duration_minutes: config.sessionOptions?.sessionDurationMinutes ?? DEFAULT_SESSION_DURATION_MINUTES,\n })\n .then((data) => {\n setIsSubmitting(false);\n onEvent({ type: StytchEventType.PasswordResetByEmail, data });\n dispatch({ type: 'transition', screen: AppScreens.PasswordConfirmation });\n })\n .catch((e: StytchAPIError) => {\n onError(e);\n setErrorMessage(getTranslatedError(e, t));\n setIsSubmitting(false);\n });\n };\n\n const handlePasswordlessLogin = () => {\n setLoginErrorMessage('');\n setIsLoggingIn(true);\n stytchClient.magicLinks\n .authenticate(passwordToken, {\n session_duration_minutes: config.sessionOptions?.sessionDurationMinutes ?? DEFAULT_SESSION_DURATION_MINUTES,\n })\n .then(() => {\n dispatch({ type: 'transition', screen: AppScreens.PasswordConfirmation });\n })\n .catch((e: StytchAPIError) => {\n onError(e);\n setLoginErrorMessage(getTranslatedError(e, t));\n })\n .finally(() => {\n setIsLoggingIn(false);\n });\n };\n\n if (resetTokenType === 'login') {\n return (\n // Same as <LoggingInScreen>, but use its own string ID\n <Typography variant=\"header\" align=\"center\">\n {t({\n id: 'password.reset.loggingInProgress',\n message: 'Logging in...',\n })}\n </Typography>\n );\n }\n\n const passwordInputProps = getNewPasswordProps(bootstrap, passwordError.policy);\n\n return (\n <form onSubmit={handleSubmit}>\n <Column gap={6}>\n <Typography variant=\"header\">\n {t({\n id: 'password.reset.title',\n message: 'Reset your password',\n })}\n </Typography>\n\n <Column gap={2}>\n <PasswordInput\n password={password}\n setPassword={onPasswordChange}\n error={errorMessage}\n {...passwordInputProps}\n />\n\n <div>\n {errorMessage && <ErrorText>{errorMessage}</ErrorText>}\n <PasswordError bootstrap={bootstrap} {...passwordError} />\n </div>\n </Column>\n\n <ButtonColumn\n top={\n <Button\n variant=\"primary\"\n loading={isSubmitting}\n type=\"submit\"\n disabled={passwordError.policy === 'notLoaded' || passwordError.passwordInvalid}\n >\n {t({\n id: 'button.continue',\n message: 'Continue',\n })}\n </Button>\n }\n bottom={\n <Column gap={2}>\n <Button variant=\"outline\" disabled={isLoggingIn} onClick={handlePasswordlessLogin} loading={isLoggingIn}>\n <VerticalTransition\n primary={t({\n id: 'password.reset.loginWithoutPassword',\n message: 'Login without a password',\n })}\n secondary={t({\n id: 'login.loading',\n message: 'Logging in...',\n })}\n triggered={isLoggingIn}\n />\n </Button>\n\n {loginErrorMessage && <ErrorText>{loginErrorMessage}</ErrorText>}\n </Column>\n }\n />\n </Column>\n </form>\n );\n};\n","import { AppScreens, useConfig, useGlobalReducer, useStytch } from '../../GlobalContextProvider';\nimport { convertMagicLinkOptions, convertPasswordResetOptions } from '../../../../utils';\n\n/**\n * Handle the common behavior part of email actions, used in conjunction with <EmailActionLayout>\n */\nexport function useResetResendPasswordActions() {\n const [state, dispatch] = useGlobalReducer();\n const stytchClient = useStytch();\n const email = state.formState.passwordState.email;\n const { emailMagicLinksOptions, passwordOptions } = useConfig();\n\n return {\n email,\n\n resendResetPassword: () =>\n stytchClient.passwords.resetByEmailStart(convertPasswordResetOptions(email, passwordOptions)),\n\n sendMagicLink: async () => {\n const result = await stytchClient.magicLinks.email.loginOrCreate(\n email,\n convertMagicLinkOptions(emailMagicLinksOptions),\n );\n dispatch({ type: 'transition', screen: AppScreens.EmailConfirmation });\n return result;\n },\n\n goBack: () => dispatch({ type: 'transition', screen: AppScreens.Main }),\n };\n}\n","import React from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { Trans } from '@lingui/react';\nimport { EmailSentType } from '@stytch/core';\nimport EmailActionLayout from '../../../components/molecules/EmailActionLayout';\nimport { useStytch } from '../../GlobalContextProvider';\nimport { useResetResendPasswordActions } from './useResetResendPasswordActions';\nimport { readB2CInternals } from '../../../../utils/internal';\n\nexport const PasswordForgot = () => {\n const { t } = useLingui();\n const stytchClient = useStytch();\n\n const { email, resendResetPassword, sendMagicLink, goBack } = useResetResendPasswordActions();\n\n return (\n <EmailActionLayout\n header={t({ id: 'password.forgot.title', message: 'Forgot your password?' })}\n description={\n <Trans\n id=\"password.forgot.content\"\n message=\"A link to reset your password was sent to you at <bold>{email}</bold>.\"\n components={{ bold: <b /> }}\n values={{ email }}\n />\n }\n resend={() => {\n readB2CInternals(stytchClient).networkClient.logEvent({\n name: 'email_try_again_clicked',\n details: { email: email, type: EmailSentType.ResetPassword },\n });\n\n return resendResetPassword();\n }}\n sendMagicLink={sendMagicLink}\n goBack={goBack}\n />\n );\n};\n","import React from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { Trans } from '@lingui/react';\nimport EmailActionLayout from '../../../components/molecules/EmailActionLayout';\nimport { useResetResendPasswordActions } from './useResetResendPasswordActions';\n\nexport const PasswordBreached = () => {\n const { t } = useLingui();\n\n const { email, resendResetPassword, sendMagicLink, goBack } = useResetResendPasswordActions();\n\n return (\n <EmailActionLayout\n header={t({\n id: 'password.breached.title',\n message: 'Check your email to set a new password',\n })}\n description={\n <Trans\n id=\"password.breached.content\"\n message=\"A different site where you use the same password had a security issue recently. For your safety, an email was sent to you at <bold>{email}</bold> to reset your password.\"\n components={{ bold: <b /> }}\n values={{ email }}\n />\n }\n resend={resendResetPassword}\n sendMagicLink={sendMagicLink}\n goBack={goBack}\n />\n );\n};\n","import React from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { Trans } from '@lingui/react';\nimport { StytchEventType } from '@stytch/core/public';\nimport EmailActionLayout from '../../../components/molecules/EmailActionLayout';\nimport { useErrorCallback, useEventCallback } from '../../GlobalContextProvider';\nimport { useResetResendPasswordActions } from './useResetResendPasswordActions';\n\nexport const PasswordSetNew = () => {\n const { t } = useLingui();\n const onError = useErrorCallback();\n const onEvent = useEventCallback();\n\n const { email, resendResetPassword, goBack } = useResetResendPasswordActions();\n\n return (\n <EmailActionLayout\n header={t({\n id: 'password.setNew.title',\n message: 'Check your email',\n })}\n description={\n <Trans\n id=\"password.setNew.content\"\n message=\"A login link was sent to you at <bold>{email}</bold>.\"\n components={{ bold: <b /> }}\n values={{ email }}\n />\n }\n resend={async () => {\n try {\n const data = await resendResetPassword();\n onEvent({ type: StytchEventType.PasswordResetByEmailStart, data });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (e: any) {\n onError(e);\n throw e;\n }\n }}\n goBack={goBack}\n />\n );\n};\n","import React from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { Trans } from '@lingui/react';\nimport EmailActionLayout from '../../../components/molecules/EmailActionLayout';\nimport { useResetResendPasswordActions } from './useResetResendPasswordActions';\n\nexport const PasswordDedupe = () => {\n const { t } = useLingui();\n\n const { email, resendResetPassword, sendMagicLink, goBack } = useResetResendPasswordActions();\n\n return (\n <EmailActionLayout\n header={t({\n id: 'password.resetRequired.title',\n message: 'Check your email to set a new password',\n })}\n description={\n <Trans\n id=\"password.resetRequired.content\"\n message=\"We want to make sure your account is secure and that it's really you logging in! A login link was sent to you at <bold>{email}</bold>.\"\n components={{ bold: <b /> }}\n values={{ email }}\n />\n }\n resend={resendResetPassword}\n sendMagicLink={sendMagicLink}\n goBack={goBack}\n />\n );\n};\n","import { StytchEventType } from '@stytch/core/public';\nimport * as React from 'react';\nimport { Confirmation } from '../../../components/molecules/Confirmation';\nimport { useMountEffect } from '../../../hooks/useMountEffect';\nimport { useEventCallback } from '../../GlobalContextProvider';\n\nexport const PasswordConfirmation = () => {\n const onEvent = useEventCallback();\n useMountEffect(() => {\n onEvent({ type: StytchEventType.AuthenticateFlowComplete, data: {} });\n });\n\n return <Confirmation />;\n};\n","import React, { useState } from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { EmailSentType } from '@stytch/core';\nimport { StytchAPIError } from '@stytch/core/public';\n\nimport { useConfig, useGlobalReducer, AppScreens, useStytch, useErrorCallback } from '../../../GlobalContextProvider';\nimport { EMAIL_REGEX } from '../../../../../utils';\nimport Button from '../../../../components/atoms/Button';\nimport EmailInput from '../../../../components/molecules/EmailInput';\nimport Column from '../../../../components/atoms/Column';\nimport { readB2CInternals } from '../../../../../utils/internal';\nimport { getTranslatedError } from '../../../../../utils/getTranslatedError';\nimport { hasProduct } from '../../../utils';\n\nexport const PasswordsEmailForm = () => {\n const { t } = useLingui();\n const [, dispatch] = useGlobalReducer();\n const config = useConfig();\n const stytch = useStytch();\n const onError = useErrorCallback();\n const hasPasskeys = hasProduct(config.products, 'passkeys');\n\n const [email, setEmail] = useState('');\n const [errorMessage, setErrorMessage] = useState<string>('');\n const [isSubmitting, setIsSubmitting] = useState<boolean>(false);\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n if (!email.match(EMAIL_REGEX)) {\n setErrorMessage(t({ id: 'error.invalidEmail', message: 'Email format is invalid.' }));\n } else {\n setErrorMessage('');\n setIsSubmitting(true);\n\n readB2CInternals(stytch)\n .searchManager.searchUser(email)\n .then(({ userType }) => {\n dispatch({ type: 'update_password_state', passwordState: { email, type: userType } });\n dispatch({ type: 'transition', screen: AppScreens.PasswordCreateOrLogin });\n readB2CInternals(stytch).networkClient.logEvent({\n name: 'email_sent',\n details: { email: email, type: EmailSentType.ResetPassword },\n });\n })\n .catch((e: StytchAPIError) => {\n onError(e);\n setIsSubmitting(false);\n setErrorMessage(getTranslatedError(e, t));\n });\n }\n };\n\n return (\n <Column as=\"form\" onSubmit={handleSubmit} gap={4}>\n <EmailInput email={email} setEmail={setEmail} hasPasskeys={hasPasskeys} hideLabel error={errorMessage} />\n <Button variant=\"primary\" loading={isSubmitting} type=\"submit\">\n {t({ id: 'button.emailLogin', message: 'Continue with email' })}\n </Button>\n </Column>\n );\n};\n","export enum Device {\n DESKTOP = 'Desktop device',\n MOBILE = 'Mobile device',\n UNKNOWN = 'Unknown device',\n}\n\nexport const determineDeviceType = (userAgent: string): Device => {\n // TODO: Add more device types/ make more fine grained\n if (userAgent === '') {\n return Device.UNKNOWN;\n }\n\n // eslint-disable-next-line lingui/no-unlocalized-strings\n const mobileKeywords = ['mobile', 'android', 'iphone', 'ipad', 'windows phone'];\n userAgent = userAgent.toLowerCase();\n for (const keyword of mobileKeywords) {\n if (userAgent.includes(keyword)) {\n return Device.MOBILE;\n }\n }\n\n return Device.DESKTOP;\n};\n\n// This commonly occurs when a user tries to register a Passkey using a QR code on a separate device\n// but the Passkey has already been sync'd to that device (e.g. the user registers an Apple passkey on their Macbook,\n// it then syncs to their iPhone, and then they try to register the same Passkey on their iPhone). At some point we\n// may be able to remove this logic when this is handled within the browser Passkeys UI.\nexport const SAFARI_CROSS_DEVICE_DUPLICATE_REG_ERROR_MESSAGE =\n 'At least one credential matches an entry of the excludeCredentials list in the platform attached authenticator.';\nexport const CHROME_CROSS_DEVICE_DUPLICATE_REG_ERROR_MESSAGE =\n 'The user attempted to register an authenticator that contains one of the credentials already registered with the relying party.';\n","import React, { useEffect, useState } from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { StytchAPIError, StytchEventType } from '@stytch/core/public';\nimport Column from '../../../components/atoms/Column';\nimport TextColumn from '../../../components/molecules/TextColumn';\n\nimport {\n AppScreens,\n useConfig,\n useErrorCallback,\n useEventCallback,\n useGlobalReducer,\n useStytch,\n} from '../../GlobalContextProvider';\n\nimport Button from '../../../components/atoms/Button';\nimport { DEFAULT_SESSION_DURATION_MINUTES } from '@stytch/core';\nimport {\n CHROME_CROSS_DEVICE_DUPLICATE_REG_ERROR_MESSAGE,\n SAFARI_CROSS_DEVICE_DUPLICATE_REG_ERROR_MESSAGE,\n} from '../../../../utils/passkeys';\nimport { LoadingScreen } from '../../../components/molecules/Loading';\nimport ButtonColumn from '../../../components/molecules/ButtonColumn';\nimport ErrorText from '../../../components/molecules/ErrorText';\n\nexport const PasskeyRegistrationStart = () => {\n const { t } = useLingui();\n const stytchClient = useStytch();\n const [userState, setUserState] = useState<'noUser' | 'hasUser' | 'loading'>(() =>\n // We'll optimistically say if the user has a cached session then they are logged in, otherwise we try loading first\n stytchClient.user.getSync() != null ? 'hasUser' : 'loading',\n );\n const [error, setError] = useState<string>();\n const config = useConfig();\n\n const onEvent = useEventCallback();\n const onError = useErrorCallback();\n\n useEffect(() => {\n stytchClient.user\n .get()\n .then(() => {\n setUserState('hasUser');\n })\n .catch((e: StytchAPIError) => {\n setUserState('noUser');\n onError(e);\n });\n }, [onError, stytchClient]);\n\n const [, dispatch] = useGlobalReducer();\n\n const onCreatePasskey = () => {\n setError(undefined);\n\n stytchClient.webauthn\n .register({\n domain: config.passkeyOptions?.domain,\n is_passkey: true,\n session_duration_minutes: config.sessionOptions?.sessionDurationMinutes ?? DEFAULT_SESSION_DURATION_MINUTES,\n })\n .then((data) => {\n onEvent({ type: StytchEventType.PasskeyRegister, data });\n dispatch({ type: 'transition', screen: AppScreens.PasskeyRegistrationSuccess });\n })\n .catch((e: StytchAPIError) => {\n onError(e);\n\n if (\n e.message.includes(SAFARI_CROSS_DEVICE_DUPLICATE_REG_ERROR_MESSAGE) ||\n e.message.includes(CHROME_CROSS_DEVICE_DUPLICATE_REG_ERROR_MESSAGE)\n ) {\n setError(\n t({\n id: 'error.duplicatePasskey',\n message:\n 'The Passkey cannot be created as it seems to be already registered. It is possible this Passkey was registered on another device but has synced cross-device.',\n }),\n );\n return;\n } else {\n setError(\n t({\n id: 'error.passkeyNotCreated',\n message:\n 'Your Passkey was not created. Click “Create a Passkey” to try again or skip without adding a Passkey.',\n }),\n );\n }\n });\n };\n\n const onSkip = () => {\n onEvent({ type: StytchEventType.PasskeySkip, data: {} });\n dispatch({ type: 'transition', screen: AppScreens.PasskeyRegistrationSuccess });\n };\n\n if (userState === 'loading') {\n return <LoadingScreen />;\n }\n\n if (userState === 'noUser') {\n return (\n <ErrorText>\n {t({\n id: 'passkey.registrationStart.error.noUser',\n message: 'Error: Cannot use PasskeyRegistration component without active user authenticated.',\n })}\n </ErrorText>\n );\n }\n\n return (\n <Column gap={6}>\n <TextColumn\n header={t({\n id: 'passkey.registrationStart.title',\n message: 'Set up a new Passkey',\n })}\n body={t({\n id: 'passkey.registrationStart.subtitle',\n message: \"With Passkeys you don't need to remember complex passwords.\",\n })}\n helper={t({\n id: 'passkey.registrationStart.description',\n message:\n 'Passkeys are encrypted digital keys you create using your fingerprint, face, or screen lock. Creating a Passkey will allow you to easily and securely log in to your account.',\n })}\n />\n\n <ButtonColumn>\n <Button variant=\"primary\" onClick={() => onCreatePasskey()}>\n {t({\n id: 'button.createPasskey',\n message: 'Create a Passkey',\n })}\n </Button>\n\n {error && <ErrorText>{error}</ErrorText>}\n\n <Button variant=\"ghost\" onClick={() => onSkip()}>\n {t({\n id: 'button.skip',\n message: 'Skip',\n })}\n </Button>\n </ButtonColumn>\n </Column>\n );\n};\n","import { useSyncExternalStore } from 'react';\nimport { useStytch } from '../b2c/GlobalContextProvider';\nimport { User } from '@stytch/core/public';\n\n// useStytchUser is a very lightweight copy-pasta of the hook from stytch-react\n// If we end up calling this in several places, consider hoisting to global context\nexport const useStytchUser = (): User | null => {\n const stytch = useStytch();\n return useSyncExternalStore(stytch.onStateChange, () => stytch.user.getSync());\n};\n","import React, { useEffect, useRef } from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport Button from '../../../components/atoms/Button';\nimport Typography from '../../../components/atoms/Typography';\nimport Input from '../../../components/molecules/Input';\nimport styles from './EditableRow.module.css';\nimport classNames from 'classnames';\n\nexport type EditableRowState =\n | { type: 'viewing' } //\n | { type: 'editing'; id: string; newName: string }\n | { type: 'deleting'; id: string };\n\nconst commonButtonProps = {\n block: false,\n variant: 'ghost',\n} as const;\n\ntype Props = {\n id: string;\n name: string;\n className?: string;\n state: EditableRowState;\n updateState: (newState: EditableRowState) => void;\n handleEdit: (id: string, newName: string) => void;\n};\n\nexport const EditableRow = ({ id, name, className, state, updateState, handleEdit }: Props) => {\n const { t } = useLingui();\n\n const isEditing = isEditingRow(id, state);\n const othersEditing = state.type !== 'viewing' && state.id !== id;\n\n const inputRef = useRef<HTMLInputElement>(null);\n useEffect(() => {\n if (isEditing) {\n inputRef.current?.focus();\n }\n }, [isEditing]);\n\n return (\n <form\n className={classNames(styles.row, className)}\n onSubmit={(evt) => {\n evt.preventDefault();\n if (isEditing) {\n handleEdit(id, state.newName);\n }\n }}\n data-testid={testId(id)}\n >\n <div className={styles.input}>\n {isEditing ? (\n <Input\n id={`passkey-name-${id}`}\n ref={inputRef}\n label={t({ id: 'passkey.editing.label', message: 'Passkey name' })}\n hideLabel\n value={isEditing ? state.newName : name}\n onChange={(e) => {\n if (isEditing) {\n updateState({ ...state, newName: e.target.value });\n }\n }}\n />\n ) : (\n <Typography color=\"muted\">{name}</Typography>\n )}\n </div>\n\n {(() => {\n if (state.type === 'deleting') return null;\n\n if (isEditing) {\n return (\n <div className={styles.actions}>\n <Button key=\"submit\" type=\"submit\" {...commonButtonProps}>\n {t({ id: 'button.save', message: 'Save' })}\n </Button>\n <Button onClick={() => updateState({ type: 'viewing' })} {...commonButtonProps}>\n {t({ id: 'button.cancel', message: 'Cancel' })}\n </Button>\n </div>\n );\n }\n\n if (state.type === 'viewing' || othersEditing) {\n return (\n <div className={styles.actions}>\n <Button\n // key required to workaround a React/Preact issue when button type is updated on re-render\n key=\"edit\"\n onClick={() => updateState({ type: 'editing', id, newName: name })}\n disabled={othersEditing}\n {...commonButtonProps}\n >\n {t({ id: 'button.edit', message: 'Edit' })}\n </Button>\n <Button\n onClick={() => updateState({ type: 'deleting', id })}\n disabled={othersEditing}\n {...commonButtonProps}\n >\n {t({ id: 'button.delete', message: 'Delete' })}\n </Button>\n </div>\n );\n }\n })()}\n </form>\n );\n};\n\nexport function isEditingRow(\n id: string,\n state: EditableRowState,\n): state is Extract<EditableRowState, { type: 'editing' }> {\n return state.type === 'editing' && state.id === id;\n}\n\nexport function testId(id: string) {\n return `editable-row-${id}`;\n}\n","import React, { useState } from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { logger } from '@stytch/core';\nimport { errorToStytchError, StytchEventType, WebAuthnRegistration } from '@stytch/core/public';\nimport { errorToast } from '../../../components/atoms/Toast';\nimport { AppScreens, useEventCallback, useGlobalReducer, useStytch } from '../../GlobalContextProvider';\nimport { useStytchUser } from '../../../hooks/useStytchUser';\nimport Column from '../../../components/atoms/Column';\nimport Typography from '../../../components/atoms/Typography';\nimport Button from '../../../components/atoms/Button';\nimport { EditableRow, EditableRowState } from './EditableRow';\nimport ButtonColumn from '../../../components/molecules/ButtonColumn';\nimport ErrorText from '../../../components/molecules/ErrorText';\nimport styles from './PasskeyRegistrationSuccess.module.css';\n\n// TODO: Add some type of device icon once we have better insight into that.\n// const deviceTypeToIcon: Partial<Record<Device, React.JSX.Element>> = {\n// [Device.DESKTOP]: <Computer />,\n// [Device.MOBILE]: <Mobile />,\n// };\n\ntype OptimisticUpdate = {\n registrations: WebAuthnRegistration[];\n update: Promise<unknown>;\n};\n\nexport const PasskeyRegistrationSuccess = () => {\n const { t } = useLingui();\n const stytchClient = useStytch();\n const user = useStytchUser();\n\n const [optimisticRegistrations, setOptimisticRegistrations] = useState<OptimisticUpdate>();\n const webAuthnRegistrations = optimisticRegistrations?.registrations ?? user?.webauthn_registrations;\n\n const [editableRowState, setEditableRowState] = useState<EditableRowState>({ type: 'viewing' });\n\n const onEvent = useEventCallback();\n const [, dispatch] = useGlobalReducer();\n\n const onSetUpANewPasskey = async () => {\n await optimisticRegistrations?.update;\n dispatch({ type: 'transition', screen: AppScreens.PasskeyRegistrationStart });\n };\n\n const onDone = async () => {\n await optimisticRegistrations?.update;\n onEvent({ type: StytchEventType.PasskeyDone, data: {} });\n };\n\n const startOptimisticUpdate = (registrations: WebAuthnRegistration[], update: Promise<unknown>) => {\n const prevEditableRowState = { ...editableRowState };\n\n setOptimisticRegistrations({ registrations, update });\n setEditableRowState({ type: 'viewing' });\n\n update\n .catch((error) => {\n logger.error(error);\n errorToast({ message: errorToStytchError(error).message });\n setEditableRowState(prevEditableRowState);\n })\n .then(() => {\n setOptimisticRegistrations(undefined);\n });\n };\n\n const deleteReg = (id: string) => {\n if (!user) return;\n\n startOptimisticUpdate(\n user.webauthn_registrations.filter((r) => r.webauthn_registration_id !== id),\n stytchClient.user.deleteWebauthnRegistration(id),\n );\n };\n\n const updateReg = (id: string, name: string) => {\n if (!user) return;\n\n startOptimisticUpdate(\n user.webauthn_registrations.map((r) => (r.webauthn_registration_id === id ? { ...r, name } : r)),\n stytchClient.webauthn.update({ webauthn_registration_id: id, name }).then(() => stytchClient.user.get()),\n );\n };\n\n return (\n <Column gap={6}>\n <Typography variant=\"header\">\n {t({\n id: 'passkey.registrationSuccess.title',\n message: 'Passkey successfully created!',\n })}\n </Typography>\n\n {webAuthnRegistrations && webAuthnRegistrations.length > 0 && (\n <Column gap={4}>\n <Typography weight=\"medium\">\n {t({\n id: 'passkey.registrationSuccess.existingPasskeys',\n message: 'Existing Passkeys',\n })}\n </Typography>\n\n <Column className={styles.existing}>\n {webAuthnRegistrations.map((registration: WebAuthnRegistration) => (\n // TODO: Add some type of device icon once we have better insight into that.\n // deviceTypeToIcon[determineDeviceType(registration.user_agent)]\n <EditableRow\n className={styles.passkeyRow}\n key={registration.webauthn_registration_id}\n id={registration.webauthn_registration_id}\n name={registration.name}\n state={editableRowState}\n updateState={setEditableRowState}\n handleEdit={updateReg}\n />\n ))}\n </Column>\n </Column>\n )}\n\n <ButtonColumn>\n {editableRowState.type === 'deleting' ? (\n <>\n <Button\n variant=\"destructive\"\n onClick={() => {\n deleteReg(editableRowState.id);\n }}\n >\n {t({\n id: 'button.delete',\n message: 'Delete',\n })}\n </Button>\n\n <ErrorText\n // alert role to ensure this gets read out when the row delete button is clicked\n role=\"alert\"\n >\n {t({\n id: 'passkey.registrationSuccess.deleteWarning',\n message: 'Once deleted, the passkey cannot be restored.',\n })}\n </ErrorText>\n\n <Button\n variant=\"ghost\"\n onClick={() => {\n setEditableRowState({ type: 'viewing' });\n }}\n >\n {t({\n id: 'button.cancel',\n message: 'Cancel',\n })}\n </Button>\n </>\n ) : (\n <>\n <Button variant=\"primary\" disabled={editableRowState.type === 'editing'} onClick={onSetUpANewPasskey}>\n {t({\n id: 'passkey.registrationSuccess.setupAnother',\n message: 'Set up another Passkey',\n })}\n </Button>\n\n <Button variant=\"ghost\" disabled={editableRowState.type === 'editing'} onClick={onDone}>\n {t({\n id: 'button.done',\n message: 'Done',\n })}\n </Button>\n </>\n )}\n </ButtonColumn>\n </Column>\n );\n};\n","import * as React from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { StytchEventType } from '@stytch/core/public';\nimport { useMountEffect } from '../../../hooks/useMountEffect';\nimport { useEventCallback } from '../../GlobalContextProvider';\nimport { Confirmation } from '../../../components/molecules/Confirmation';\n\nexport const PasskeyConfirmation = () => {\n const { t } = useLingui();\n const onEvent = useEventCallback();\n useMountEffect(() => {\n onEvent({ type: StytchEventType.AuthenticateFlowComplete, data: {} });\n });\n\n return (\n <Confirmation\n text={t({ id: 'passkey.success.content', message: 'Your Passkey has been successfully authenticated.' })}\n />\n );\n};\n","import React from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport Button from '../../../../components/atoms/Button';\nimport { StartPasskeyAuth } from '../../../../hooks/usePromptPasskey';\nimport { PasskeyIcon } from '../../../../../assets';\n\nexport const PasskeyButton = ({ startPasskeyAuth }: { startPasskeyAuth: StartPasskeyAuth }) => {\n const { t } = useLingui();\n\n return (\n <Button icon={<PasskeyIcon />} variant=\"outline\" onClick={startPasskeyAuth}>\n {t({ id: 'button.loginWithPasskey', message: 'Login with a Passkey' })}\n </Button>\n );\n};\n","import React from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { StytchEventType } from '@stytch/core/public';\nimport {\n AppScreens,\n useErrorCallback,\n useGlobalReducer,\n useStytch,\n useEventCallback,\n} from '../../GlobalContextProvider';\nimport { connectWithWallet, isSolanaWallet } from '../../../../utils/crypto';\nimport Column from '../../../components/atoms/Column';\nimport TextColumn from '../../../components/molecules/TextColumn';\nimport Button from '../../../components/atoms/Button';\nimport { useMountEffect } from '../../../hooks/useMountEffect';\n\nexport const ConnectWallet = () => {\n const { t } = useLingui();\n const onEvent = useEventCallback();\n const onError = useErrorCallback();\n const handleError = () => {\n // eslint-disable-next-line lingui/no-unlocalized-strings -- This is not shown in the UI, just sent to the error callback\n onError({ message: '[Error] Could not connect to wallet' });\n dispatch({ type: 'transition', screen: AppScreens.CryptoError });\n };\n const stytchClient = useStytch();\n const [state, dispatch] = useGlobalReducer();\n const walletOption = state.formState.cryptoState.walletOption;\n const walletType = isSolanaWallet(walletOption) ? 'solana' : 'ethereum';\n\n const onConnectWallet = async () => {\n const address = await connectWithWallet({ wallet: walletOption });\n stytchClient.cryptoWallets\n .authenticateStart({\n crypto_wallet_address: address,\n crypto_wallet_type: walletType,\n })\n .then((data) => {\n onEvent({ type: StytchEventType.CryptoWalletAuthenticateStart, data });\n dispatch({\n type: 'update_crypto_state',\n cryptoState: {\n walletAddress: address,\n walletChallenge: data.challenge,\n walletOption: walletOption,\n },\n });\n\n dispatch({ type: 'transition', screen: AppScreens.CryptoSignMessage });\n })\n .catch(handleError);\n };\n\n useMountEffect(() => {\n onConnectWallet();\n });\n\n return (\n <Column gap={6}>\n <TextColumn\n header={t({ id: 'crypto.connectWallet.title', message: 'Connecting to your wallet...' })}\n body={t({\n id: 'crypto.connectWallet.instructionPopup',\n message: 'Complete sign in by connecting through the wallet pop up in the right corner of your screen.',\n })}\n helper={t({\n id: 'crypto.troubleHelp',\n message: 'If you are having trouble, go back to the main screen and try logging in again.',\n })}\n />\n <Button variant=\"outline\" onClick={() => dispatch({ type: 'transition', screen: AppScreens.Main })}>\n {t({ id: 'button.goBack', message: 'Go back' })}\n </Button>\n </Column>\n );\n};\n","import React from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { DEFAULT_SESSION_DURATION_MINUTES } from '@stytch/core';\nimport { StytchEventType } from '@stytch/core/public';\nimport {\n AppScreens,\n useGlobalReducer,\n useStytch,\n useConfig,\n useErrorCallback,\n useEventCallback,\n} from '../../GlobalContextProvider';\nimport { signMessageWithWallet, isSolanaWallet } from '../../../../utils/crypto';\nimport Column from '../../../components/atoms/Column';\nimport TextColumn from '../../../components/molecules/TextColumn';\nimport Button from '../../../components/atoms/Button';\nimport { useMountEffect } from '../../../hooks/useMountEffect';\n\nexport const SignMessage = () => {\n const { t } = useLingui();\n const onEvent = useEventCallback();\n const onError = useErrorCallback();\n const handleError = () => {\n // eslint-disable-next-line lingui/no-unlocalized-strings -- This is not shown in the UI, just sent to the error callback\n onError({ message: '[Error] Could not sign message' });\n dispatch({ type: 'transition', screen: AppScreens.CryptoError });\n };\n const stytchClient = useStytch();\n const config = useConfig();\n const [state, dispatch] = useGlobalReducer();\n const { walletChallenge, walletAddress, walletOption } = state.formState.cryptoState;\n const walletType = isSolanaWallet(walletOption) ? 'solana' : 'ethereum';\n\n const onSignWallet = async () => {\n const signature = await signMessageWithWallet({\n wallet: walletOption,\n message: walletChallenge,\n address: walletAddress,\n });\n\n stytchClient.cryptoWallets\n .authenticate({\n crypto_wallet_address: walletAddress,\n crypto_wallet_type: walletType,\n signature,\n session_duration_minutes: config.sessionOptions?.sessionDurationMinutes ?? DEFAULT_SESSION_DURATION_MINUTES,\n })\n .then((data) => {\n onEvent({ type: StytchEventType.CryptoWalletAuthenticate, data });\n dispatch({ type: 'transition', screen: AppScreens.CryptoConfirmation });\n })\n .catch(handleError);\n };\n\n useMountEffect(() => {\n onSignWallet();\n });\n\n return (\n <Column gap={6}>\n <TextColumn\n header={t({ id: 'crypto.signMessage.title', message: 'Completing signature request...' })}\n body={t({\n id: 'crypto.signMessage.instruction',\n message: 'Complete the signature request through the wallet pop up in the right corner of your screen.',\n })}\n helper={t({\n id: 'crypto.troubleHelp',\n message: 'If you are having trouble, go back to the main screen and try logging in again.',\n })}\n />\n\n <Button variant=\"outline\" onClick={() => dispatch({ type: 'transition', screen: AppScreens.Main })}>\n {t({ id: 'button.goBack', message: 'Go back' })}\n </Button>\n </Column>\n );\n};\n","import React from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport Column from '../../../components/atoms/Column';\nimport Typography from '../../../components/atoms/Typography';\nimport { AppScreens, useGlobalReducer } from '../../GlobalContextProvider';\nimport { CryptoWalletButtons } from './WalletButtons';\nimport Button from '../../../components/atoms/Button';\nimport ButtonColumn from '../../../components/molecules/ButtonColumn';\n\nexport const OtherCryptoWallets = () => {\n const { t } = useLingui();\n const [, dispatch] = useGlobalReducer();\n\n return (\n <Column gap={6}>\n <Typography variant=\"header\">\n {t({ id: 'crypto.continueWithOtherWallet.title', message: 'Continue with other wallet' })}\n </Typography>\n\n <ButtonColumn>\n <CryptoWalletButtons type=\"other\" />\n <Button variant=\"ghost\" onClick={() => dispatch({ type: 'transition', screen: AppScreens.Main })}>\n {t({ id: 'button.goBack', message: 'Go back' })}\n </Button>\n </ButtonColumn>\n </Column>\n );\n};\n","import React from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { Wallets } from '@stytch/core/public';\nimport { AppScreens, useGlobalReducer } from '../../GlobalContextProvider';\nimport { WalletToIcon } from '../../../../utils/crypto';\nimport Column from '../../../components/atoms/Column';\nimport TextColumn from '../../../components/molecules/TextColumn';\nimport Button, { ButtonAnchor } from '../../../components/atoms/Button';\nimport ButtonColumn from '../../../components/molecules/ButtonColumn';\n\nconst commonButtonProps = {\n variant: 'outline',\n target: '_blank',\n rel: 'noreferrer',\n} as const;\n\nconst walletIcon = (wallet: Wallets) => {\n const Icon = WalletToIcon[wallet];\n return <Icon />;\n};\n\nexport const SetupNewWallet = () => {\n const { t } = useLingui();\n const [, dispatch] = useGlobalReducer();\n\n return (\n <Column gap={6}>\n <TextColumn\n header={t({ id: 'crypto.setupNewWallet.title', message: 'Set up a new crypto wallet' })}\n body={t({\n id: 'crypto.setupNewWallet.content',\n message: 'Get started by downloading any Ethereum or Solana wallet.',\n })}\n helper={t({\n id: 'crypto.setupNewWallet.instruction',\n message:\n 'We’ve included a few examples of wallet extensions you can find below. Once you’ve set up your wallet, click “Go back” to use it and sign in.',\n })}\n />\n\n <ButtonColumn>\n <ButtonAnchor {...commonButtonProps} icon={walletIcon(Wallets.Metamask)} href=\"https://metamask.io/\">\n {t({ id: 'crypto.wallet.metamask', message: 'Metamask' })}\n </ButtonAnchor>\n <ButtonAnchor {...commonButtonProps} icon={walletIcon(Wallets.Phantom)} href=\"https://phantom.app/\">\n {t({ id: 'crypto.wallet.phantom', message: 'Phantom' })}\n </ButtonAnchor>\n\n <ButtonAnchor {...commonButtonProps} icon={walletIcon(Wallets.Coinbase)} href=\"https://www.coinbase.com/wallet\">\n {t({ id: 'crypto.wallet.coinbase', message: 'Coinbase' })}\n </ButtonAnchor>\n\n <ButtonAnchor\n {...commonButtonProps}\n icon={walletIcon(Wallets.Binance)}\n href=\"https://www.bnbchain.world/en/binance-wallet\"\n >\n {t({ id: 'crypto.wallet.binance', message: 'Binance' })}\n </ButtonAnchor>\n\n <Button variant=\"primary\" onClick={() => dispatch({ type: 'transition', screen: AppScreens.Main })}>\n {t({ id: 'button.goBack', message: 'Go back' })}\n </Button>\n </ButtonColumn>\n </Column>\n );\n};\n","import React from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport Column from '../../../components/atoms/Column';\nimport TextColumn from '../../../components/molecules/TextColumn';\nimport { useGlobalReducer, AppScreens } from '../../GlobalContextProvider';\nimport Button from '../../../components/atoms/Button';\n\nexport const Error = () => {\n const { t } = useLingui();\n const [, dispatch] = useGlobalReducer();\n\n return (\n <Column gap={6}>\n <TextColumn\n header={t({ id: 'crypto.error.title', message: 'Looks like there was an error' })}\n body={t({\n id: 'crypto.error.content',\n message: 'Your sign in request could not be completed. Go back to the main screen and try logging in again.',\n })}\n />\n <Button variant=\"outline\" onClick={() => dispatch({ type: 'transition', screen: AppScreens.Main })}>\n {t({ id: 'button.goBack', message: 'Go back' })}\n </Button>\n </Column>\n );\n};\n","import React from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport Column from '../../../components/atoms/Column';\nimport { AppScreens, useGlobalReducer } from '../../GlobalContextProvider';\nimport Button from '../../../components/atoms/Button';\nimport { Confirmation } from '../../../components/molecules/Confirmation';\n\nexport const Success = () => {\n const { t } = useLingui();\n const [, dispatch] = useGlobalReducer();\n\n return (\n <Column gap={6}>\n <Confirmation\n header={t({ id: 'crypto.success.title', message: 'Success!' })}\n text={t({ id: 'crypto.success.content', message: 'You have successfully connected your wallet.' })}\n />\n <Button variant=\"outline\" onClick={() => dispatch({ type: 'transition', screen: AppScreens.Main })}>\n {t({ id: 'button.goBack', message: 'Go back' })}\n </Button>\n </Column>\n );\n};\n","import type { IconRegistry } from '../../components/IconRegistry';\nimport {\n AmazonIcon,\n AppleIcon,\n BitbucketIcon,\n CoinbaseIcon,\n DiscordIcon,\n FacebookIcon,\n FigmaIcon,\n GithubIcon,\n GmailIcon,\n GitlabIcon,\n GoogleIcon,\n LinkedinIcon,\n MicrosoftIcon,\n OutlookIcon,\n SalesforceIcon,\n SlackIcon,\n SnapchatIcon,\n TiktokIcon,\n TwitchIcon,\n XTwitterIcon,\n YahooIcon,\n PhantomIcon,\n MetamaskIcon,\n BinanceIcon,\n} from '../../../assets/logo-color';\n\nexport const oauthIcons = {\n amazon: AmazonIcon,\n apple: AppleIcon,\n bitbucket: BitbucketIcon,\n coinbase: CoinbaseIcon,\n discord: DiscordIcon,\n facebook: FacebookIcon,\n figma: FigmaIcon,\n github: GithubIcon,\n gitlab: GitlabIcon,\n google: GoogleIcon,\n linkedin: LinkedinIcon,\n microsoft: MicrosoftIcon,\n salesforce: SalesforceIcon,\n slack: SlackIcon,\n snapchat: SnapchatIcon,\n tiktok: TiktokIcon,\n twitch: TwitchIcon,\n xTwitter: XTwitterIcon,\n yahoo: YahooIcon,\n} satisfies IconRegistry<string>;\n\nexport const cryptoIcons = {\n phantom: PhantomIcon,\n metamask: MetamaskIcon,\n binance: BinanceIcon,\n coinbase: CoinbaseIcon,\n} satisfies IconRegistry<string>;\n\nexport const emailIcons = {\n gmail: GmailIcon,\n outlook: OutlookIcon,\n yahoo: YahooIcon,\n} satisfies IconRegistry<string>;\n\nexport type IconNames =\n | keyof typeof oauthIcons //\n | keyof typeof cryptoIcons\n | keyof typeof emailIcons;\n","'use client';\n\nimport React from 'react';\nimport { OneTapPositions, OTPMethods } from '@stytch/core/public';\nimport { OTPEmailForm, PhoneForm } from './screens/Main/LoginForm/OTPForm';\nimport { CryptoWalletButtons } from './screens/Crypto/WalletButtons';\nimport { AppScreens } from './GlobalContextProvider';\nimport { EmailConfirmation } from './screens/Secondary/EmailConfirmation';\nimport { LoginForm } from './screens/Main/LoginForm';\nimport { MagicLinkEmailForm } from './screens/Main/LoginForm/MagicLinkForm';\nimport { OAuthButtons } from './screens/Main/OAuthButtons';\nimport { OTPAuthenticate } from './screens/Secondary/OTPAuthenticate';\nimport { OTPConfirmation } from './screens/Secondary/OTPConfirmation';\nimport { PasswordCreateAuthenticate } from './screens/Secondary/PasswordCreateAuthenticate';\nimport { ResetPasswordScreen } from './screens/Password/ResetPasswordScreen';\nimport { PasswordForgot } from './screens/Password/PasswordForgot';\nimport { PasswordBreached } from './screens/Password/PasswordBreached';\nimport { PasswordSetNew } from './screens/Password/PasswordSetNew';\nimport { PasswordDedupe } from './screens/Password/PasswordDedupe';\nimport { PasswordConfirmation } from './screens/Password/PasswordConfirmation';\nimport { PasswordsEmailForm } from './screens/Main/LoginForm/PasswordForm';\nimport { PasskeyRegistrationStart } from './screens/Passkey/PasskeyRegistrationStart';\nimport { PasskeyRegistrationSuccess } from './screens/Passkey/PasskeyRegistrationSuccess';\nimport { PasskeyConfirmation } from './screens/Passkey/PasskeyConfirmation';\nimport { PasskeyButton } from './screens/Main/LoginForm/PasskeyButton';\nimport { ConnectWallet } from './screens/Crypto/ConnectWallet';\nimport { SignMessage } from './screens/Crypto/SignMessage';\nimport { OtherCryptoWallets } from './screens/Crypto/OtherWallets';\nimport { SetupNewWallet } from './screens/Crypto/SetupNewWallet';\nimport { Error } from './screens/Crypto/Error';\nimport { Success } from './screens/Crypto/Success';\nimport { MagicLinkMethods, PasswordMethods, StytchProduct } from './StytchProduct';\nimport { GoogleOneTap } from './components/GoogleOneTap';\nimport { cryptoIcons, emailIcons, oauthIcons } from './components/Icons';\n\nconst PhoneFormSMS = () => <PhoneForm method={OTPMethods.SMS} />;\nconst PhoneFormWhatsApp = () => <PhoneForm method={OTPMethods.WhatsApp} />;\nconst MainWalletButtons = () => <CryptoWalletButtons type=\"main\" />;\nconst FloatingOneTap = () => <GoogleOneTap position={OneTapPositions.floating} />;\n\nexport const emailMagicLinks: StytchProduct = {\n id: 'emailMagicLinks',\n screens: {\n [AppScreens.EmailConfirmation]: EmailConfirmation,\n },\n tabs: {\n [MagicLinkMethods.Email]: MagicLinkEmailForm,\n },\n mainScreen: {\n 'login-form': LoginForm,\n },\n icons: emailIcons,\n};\n\nexport const oauth: StytchProduct = {\n id: 'oauth',\n screens: {\n [AppScreens.FloatingOneTap]: FloatingOneTap,\n },\n mainScreen: {\n oauth: OAuthButtons,\n },\n icons: oauthIcons,\n};\n\nexport const otp: StytchProduct = {\n id: 'otp',\n screens: {\n [AppScreens.OTPAuthenticate]: OTPAuthenticate,\n [AppScreens.OTPConfirmation]: OTPConfirmation,\n },\n tabs: {\n [OTPMethods.Email]: OTPEmailForm,\n [OTPMethods.SMS]: PhoneFormSMS,\n [OTPMethods.WhatsApp]: PhoneFormWhatsApp,\n },\n mainScreen: {\n 'login-form': LoginForm,\n },\n icons: emailIcons,\n};\n\nexport const passwords: StytchProduct = {\n id: 'passwords',\n screens: {\n [AppScreens.PasswordCreateOrLogin]: PasswordCreateAuthenticate,\n [AppScreens.PasswordResetForm]: ResetPasswordScreen,\n [AppScreens.PasswordForgot]: PasswordForgot,\n [AppScreens.PasswordBreached]: PasswordBreached,\n [AppScreens.PasswordSetNew]: PasswordSetNew,\n [AppScreens.PasswordDedupe]: PasswordDedupe,\n [AppScreens.PasswordConfirmation]: PasswordConfirmation,\n },\n tabs: {\n [PasswordMethods.Email]: PasswordsEmailForm,\n },\n mainScreen: {\n 'login-form': LoginForm,\n },\n icons: emailIcons,\n};\n\nexport const passkeys: StytchProduct = {\n id: 'passkeys',\n screens: {\n [AppScreens.PasskeyConfirmation]: PasskeyConfirmation,\n },\n mainScreen: {\n 'passkey-button': PasskeyButton,\n },\n};\n\nexport const passkeyRegistration: StytchProduct = {\n id: 'passkeyRegistration',\n screens: {\n [AppScreens.PasskeyRegistrationStart]: PasskeyRegistrationStart,\n [AppScreens.PasskeyRegistrationSuccess]: PasskeyRegistrationSuccess,\n },\n};\n\nexport const crypto: StytchProduct = {\n id: 'crypto',\n screens: {\n [AppScreens.CryptoConnect]: ConnectWallet,\n [AppScreens.CryptoSignMessage]: SignMessage,\n [AppScreens.CryptoOtherScreen]: OtherCryptoWallets,\n [AppScreens.CryptoSetupWallet]: SetupNewWallet,\n [AppScreens.CryptoError]: Error,\n [AppScreens.CryptoConfirmation]: Success,\n },\n mainScreen: {\n crypto: MainWalletButtons,\n },\n icons: cryptoIcons,\n};\n","import React, { useState, useEffect } from 'react';\nimport { StytchProjectConfigurationInput } from '@stytch/core/public';\nimport { messages } from '../../messages/en';\nimport { I18nProviderWrapper } from '../components/atoms/I18nProviderWrapper';\nimport { GlobalContextProvider, DEFAULT_STATE, AppState, AppScreens } from './GlobalContextProvider';\nimport Container from './Container';\nimport { ResetPasswordSDKConfig } from '../../types';\nimport { readB2CInternals } from '../../utils/internal';\nimport { usePresentationWithDefault, PresentationContext } from '../components/PresentationConfig';\nimport { passwords } from './Products';\nimport { addProduct } from './utils';\n\nexport const ResetPasswordContainer = <TProjectConfiguration extends StytchProjectConfigurationInput>({\n client,\n config: rawConfig,\n presentation,\n callbacks,\n strings,\n passwordResetToken: rawToken,\n}: ResetPasswordSDKConfig<TProjectConfiguration>) => {\n const config = addProduct(rawConfig, passwords);\n\n // Default to reading token from URL if not provided\n let token = rawToken;\n if (!token) {\n const result = client.parseAuthenticateUrl();\n if (result?.tokenType === 'reset_password' || result?.tokenType === 'login') {\n token = result.token;\n }\n }\n\n // Read the watermark out of sync storage, then read it out of async storage\n const [displayWatermark, setDisplayWatermark] = useState(() => {\n const { displayWatermark } = readB2CInternals(client).bootstrap.getSync();\n return displayWatermark;\n });\n useEffect(() => {\n readB2CInternals(client)\n .bootstrap.getAsync()\n .then(({ displayWatermark }) => {\n setDisplayWatermark(displayWatermark);\n });\n }, [client]);\n\n const initialState: AppState = {\n ...DEFAULT_STATE,\n screen: AppScreens.PasswordResetForm,\n formState: {\n ...DEFAULT_STATE.formState,\n resetPasswordState: {\n token: token!,\n },\n },\n };\n\n const presentationValue = usePresentationWithDefault(presentation, displayWatermark, config.products, 'Products');\n\n return (\n <GlobalContextProvider client={client} config={config} callbacks={callbacks} initialState={initialState}>\n <PresentationContext.Provider value={presentationValue}>\n <I18nProviderWrapper messages={messages} overrides={strings}>\n <Container />\n </I18nProviderWrapper>\n </PresentationContext.Provider>\n </GlobalContextProvider>\n );\n};\n","import { StytchProjectConfigurationInput } from '@stytch/core/public';\nimport { ResetPasswordContainer } from '../../b2c/ResetPasswordContainer';\nimport { createB2CComponent } from '../bindings/createB2CComponent';\nimport { StytchProps } from './StytchLogin';\n\nexport interface StytchResetPasswordProps<\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n> extends StytchProps<TProjectConfiguration> {\n /**\n * A Stytch password reset token.\n */\n passwordResetToken: string;\n}\n\n/**\n * The Stytch Reset Password component.\n * This component can only be used with a Stytch UI Client\n * passed into the StytchProvider.\n *\n * See the {@link https://stytch.com/docs/sdks online reference}\n *\n * @example\n * <StytchPasswordReset\n * config={{\n * products: [Products.passwords],\n * passwordOptions: {\n * loginRedirectURL: '${exampleURL}/authenticate',\n * resetPasswordRedirectURL: '${exampleURL}/authenticate',\n * },\n * }}\n * passwordResetToken=\"PvC5UudZ7TPZbELt95yXAQ-8MeEUCRob8bUQ-g52fIJs\"\n * presentation={{\n * theme: { primary: '#0577CA' },\n * options: {},\n * }}\n * callbacks={{\n * onEvent: (event) => console.log(event)\n * }}\n * />\n */\nexport const StytchPasswordReset = createB2CComponent('StytchPasswordReset', ResetPasswordContainer);\n","import React, { useState, useEffect } from 'react';\nimport { StytchProjectConfigurationInput } from '@stytch/core/public';\nimport { messages } from '../../messages/en';\nimport { I18nProviderWrapper } from '../components/atoms/I18nProviderWrapper';\nimport { GlobalContextProvider, DEFAULT_STATE, AppState, AppScreens } from './GlobalContextProvider';\nimport Container from './Container';\nimport { SDKConfig } from '../../types';\nimport { readB2CInternals } from '../../utils/internal';\nimport { usePresentationWithDefault, PresentationContext } from '../components/PresentationConfig';\nimport { passkeyRegistration } from './Products';\nimport { addProduct } from './utils';\n\nexport const PasskeyRegistrationContainer = <TProjectConfiguration extends StytchProjectConfigurationInput>({\n client,\n config: rawConfig,\n presentation,\n callbacks,\n strings,\n}: SDKConfig<TProjectConfiguration>) => {\n const config = addProduct(rawConfig, passkeyRegistration);\n\n /**\n * Read the watermark out of sync storage, then read it out of async storage\n */\n const [displayWatermark, setDisplayWatermark] = useState(() => {\n const { displayWatermark } = readB2CInternals(client).bootstrap.getSync();\n return displayWatermark;\n });\n\n useEffect(() => {\n readB2CInternals(client)\n .bootstrap.getAsync()\n .then(({ displayWatermark }) => {\n setDisplayWatermark(displayWatermark);\n });\n }, [client]);\n\n const initialState: AppState = {\n ...DEFAULT_STATE,\n screen: AppScreens.PasskeyRegistrationStart,\n formState: {\n ...DEFAULT_STATE.formState,\n },\n };\n\n const presentationValue = usePresentationWithDefault(presentation, displayWatermark, config.products, 'Products');\n\n return (\n <GlobalContextProvider client={client} config={config} callbacks={callbacks} initialState={initialState}>\n <PresentationContext.Provider value={presentationValue}>\n <I18nProviderWrapper messages={messages} overrides={strings}>\n <Container />\n </I18nProviderWrapper>\n </PresentationContext.Provider>\n </GlobalContextProvider>\n );\n};\n","import { PasskeyRegistrationContainer } from '../../b2c/PasskeyRegistrationContainer';\nimport { createB2CComponent } from '../bindings/createB2CComponent';\n\n/**\n * The Stytch Passkey Registration component.\n * This component can only be used with a Stytch UI Client\n * passed into the StytchProvider.\n *\n * See the {@link https://stytch.com/docs/sdks online reference}\n *\n * @example\n * <StytchPasskeyRegistration\n * presentation={{\n * theme: { primary: '#ff00f7' },\n * options: {},\n * }}\n * callbacks={{\n * onEvent: (event) => console.log(event)\n * }}\n * />\n */\nexport const StytchPasskeyRegistration = createB2CComponent('StytchPasskeyRegistration', PasskeyRegistrationContainer);\n","import React, { ReactNode, useEffect, useRef, useState } from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { useErrorCallback, useEventCallback, useStytch } from '../../GlobalContextProvider';\nimport { useStytchUser } from '../../../hooks/useStytchUser';\nimport { ErrorDisplay } from '../../../components/molecules/ErrorScreen';\nimport { useBootstrap } from '../../utils';\nimport { IDPConsent, useIDPState } from '../../../components/organisms/IDPConsent';\nimport { OAuthAuthorizeParams, OAuthLogoutParams, parseIDPParams } from '../../../../utils/idpHelpers';\nimport { IDPLogout, useLogoutState } from '../../../components/organisms/IDPLogout';\nimport { useTrustedAuthTokenParams } from '../../../components/organisms/IDPContextProvider';\nimport { AuthTokenParams } from '../../../../types';\nimport { NoCurrentSessionError } from '@stytch/core/public';\nimport { LoadingScreen } from '../../../components/molecules/Loading';\nimport MainContainer from '../../../components/molecules/MainContainer';\nimport { usePresentation } from '../../../components/PresentationConfig';\n\nconst IDPConsentScreenImpl = ({\n initialError,\n initialParams,\n}: {\n initialError: string | null;\n initialParams: OAuthAuthorizeParams;\n}) => {\n const stytchClient = useStytch();\n const onError = useErrorCallback();\n const onEvent = useEventCallback();\n const { oauthAuthorizeStart, oauthAuthorizeSubmit } = stytchClient.idp;\n\n const { bootstrap, fromCache: bootstrapNotLoaded } = useBootstrap();\n\n const idpConsentInfo = useIDPState({\n initialError,\n initialParams,\n oauthAuthorizeStart,\n oauthAuthorizeSubmit,\n onError,\n onEvent,\n });\n\n return <IDPConsent bootstrap={bootstrap} bootstrapNotLoaded={bootstrapNotLoaded} {...idpConsentInfo}></IDPConsent>;\n};\n\nconst IDPLogoutScreenImpl = ({\n initialError,\n initialParams,\n navigate,\n}: {\n initialError: string | null;\n initialParams: OAuthLogoutParams;\n navigate?: (href: string) => void;\n}) => {\n const stytchClient = useStytch();\n const onError = useErrorCallback();\n const { oauthLogoutStart } = stytchClient.idp;\n const revokeSession = () => stytchClient.session.revoke({ forceClear: true });\n\n const { bootstrap, fromCache: bootstrapNotLoaded } = useBootstrap();\n const idpLogoutState = useLogoutState({\n initialError,\n initialParams,\n oauthLogoutStart,\n revokeSession,\n onError,\n navigate,\n });\n\n return <IDPLogout {...idpLogoutState} bootstrap={bootstrap} bootstrapNotLoaded={bootstrapNotLoaded} />;\n};\n\nexport const IDPConsentScreen = ({\n searchParams = window.location.search,\n navigate,\n}: {\n searchParams?: string;\n navigate?: (href: string) => void;\n} = {}) => {\n // Preserve the URL Params seen on first render - even if they change later\n const [{ flow, error }] = useState(parseIDPParams(searchParams));\n const { theme, displayWatermark } = usePresentation();\n\n let content;\n if (flow.type === 'Authorize') {\n content = (\n <EnsureUserIsLoggedIn>\n <IDPConsentScreenImpl initialError={error} initialParams={flow.params} />\n </EnsureUserIsLoggedIn>\n );\n } else if (flow.type === 'Logout') {\n content = <IDPLogoutScreenImpl initialError={error} initialParams={flow.params} navigate={navigate} />;\n }\n\n return (\n <MainContainer theme={theme} displayWatermark={displayWatermark}>\n {content}\n </MainContainer>\n );\n};\n\nconst EnsureUserIsLoggedIn = ({ children }: { children: ReactNode }) => {\n const { t } = useLingui();\n const user = useStytchUser();\n const onError = useErrorCallback();\n const onErrorRef = useRef(onError);\n useEffect(() => {\n onErrorRef.current = onError;\n }, [onError]);\n\n // if a trusted auth token is provided, attest it before rendering the consent screen\n const stytchClient = useStytch();\n const authParams = useTrustedAuthTokenParams();\n const [attesting, setAttesting] = useState(false);\n const [attested, setAttested] = useState(false);\n\n useEffect(() => {\n if (attesting || attested) return;\n\n const attestTrustedToken = async (authParams: AuthTokenParams | undefined): Promise<void> => {\n if (authParams?.trustedAuthToken && authParams?.tokenProfileID) {\n setAttesting(true);\n const token = authParams.trustedAuthToken;\n const profile_id = authParams.tokenProfileID;\n\n // revoke the current session before calling attest\n if (stytchClient.user.getSync()) {\n await stytchClient.session.revoke({ forceClear: true });\n }\n\n try {\n await stytchClient.session.attest({\n token,\n profile_id,\n session_duration_minutes: 60,\n });\n } catch (error) {\n onErrorRef.current(error as Error);\n } finally {\n setAttesting(false);\n setAttested(true);\n }\n }\n // set this either way to short-circuit the useEffect below\n setAttested(true);\n };\n attestTrustedToken(authParams);\n }, [authParams, attesting, attested, stytchClient]);\n\n useEffect(() => {\n if (user) return;\n onErrorRef.current(new NoCurrentSessionError());\n }, [user]);\n\n if (attesting) {\n return <LoadingScreen />;\n } else if (user) {\n return children;\n } else {\n return (\n <ErrorDisplay\n text={t({\n id: 'idpConsent.noActiveSession',\n message: 'No active session detected. Please log in to continue.',\n })}\n />\n );\n }\n};\n","import React, { useEffect } from 'react';\nimport { StytchProjectConfigurationInput } from '@stytch/core/public';\nimport { messages } from '../../messages/en';\nimport { I18nProviderWrapper } from '../components/atoms/I18nProviderWrapper';\nimport { GlobalContextProvider, DEFAULT_STATE } from './GlobalContextProvider';\nimport { IDPSDKConfig, StytchLoginConfig } from '../../types';\nimport { readB2CInternals } from '../../utils/internal';\nimport { IDPContextProvider } from '../components/organisms/IDPContextProvider';\nimport { usePresentationWithDefault, PresentationContext } from '../components/PresentationConfig';\nimport { IDPConsentScreen } from './screens/IdentityProvider/IDPConsent';\n\nexport const IDPContainer = <TProjectConfiguration extends StytchProjectConfigurationInput>({\n client,\n presentation,\n callbacks,\n strings,\n getIDPConsentManifest,\n authTokenParams,\n}: IDPSDKConfig<TProjectConfiguration>) => {\n const presentationValue = usePresentationWithDefault(presentation, false, []);\n\n useEffect(() => {\n readB2CInternals(client)\n .bootstrap.getAsync()\n .then((data) => {\n readB2CInternals(client).networkClient.logEvent({\n name: 'render_idp_screen',\n details: { bootstrap: data },\n });\n });\n }, [client]);\n\n return (\n <GlobalContextProvider\n client={client}\n config={{} as StytchLoginConfig}\n callbacks={callbacks}\n initialState={DEFAULT_STATE}\n >\n <IDPContextProvider consentManifestGenerator={getIDPConsentManifest} authTokenParams={authTokenParams}>\n <PresentationContext.Provider value={presentationValue}>\n <I18nProviderWrapper messages={messages} overrides={strings}>\n <IDPConsentScreen />\n </I18nProviderWrapper>\n </PresentationContext.Provider>\n </IDPContextProvider>\n </GlobalContextProvider>\n );\n};\n","import { IDPContainer } from '../../b2c/IDPContainer';\nimport { createB2CComponent } from '../bindings/createB2CComponent';\nimport { StytchProps } from './StytchLogin';\nimport { AuthTokenParams, IDPConsentManifestGenerator } from '../../../types';\n\nexport type IdentityProviderProps = Omit<StytchProps, 'config'> & {\n /**\n * Optional {@link IDPConsentManifestGenerator} to customize the consent screen.\n */\n getIDPConsentManifest?: IDPConsentManifestGenerator;\n /**\n * Optional {@link AuthTokenParams} to provide a trusted auth token to provide for attestation prior to running OAuth flow.\n */\n authTokenParams?: AuthTokenParams;\n};\n\n/**\n * The Stytch IDP component.\n * Parses OAuth Authorization params (client_id, scope, nonce, etc.) out of the page URL.\n * Requires the user to be logged in.\n * This component can only be used with a Stytch UI Client\n * passed into the StytchProvider.\n *\n * See the {@link https://stytch.com/docs/sdks online reference}\n *\n * @example\n * <IdentityProvider\n * presentation={{\n * theme: { primary: '#ff00f7' },\n * options: {},\n * }}\n * callbacks={{\n * onEvent: (event) => console.log(event)\n * }}\n * />\n */\nexport const IdentityProvider = createB2CComponent('IdentityProvider', IDPContainer);\n","'use client';\n\nimport React, { ComponentType, ReactNode } from 'react';\n\nimport { Session, StytchProjectConfigurationInput, User } from '@stytch/core/public';\nimport {\n StytchProvider as StytchProviderShared,\n useStytchIsAuthorized as useStytchIsAuthorizedShared,\n useStytchSession as useStytchSessionShared,\n useStytchUser as useStytchUserShared,\n withStytchPermissions as withStytchPermissionsShared,\n withStytchSession as withStytchSessionShared,\n withStytchUser as withStytchUserShared,\n} from '@stytch/web/react/b2c';\nimport { StytchClient } from '@stytch/web/headless';\n\nexport { useStytch, withStytch } from '@stytch/web/react/b2c';\n\n/**\n * Returns the active User.\n * The Stytch SDKs are used for client-side authentication and session management.\n * Check the isInitialized property to determine if the SDK has completed initialization.\n * Check the fromCache property to determine if the user data is from persistent storage.\n * @example\n * const {user, isInitialized, fromCache} = useStytchUser();\n * if (!isInitialized) {\n * return <p>Loading...</p>;\n * }\n * return (<h1>Welcome, {user.name.first_name}</h1>);\n */\nexport const useStytchUser = useStytchUserShared as <TAssumeHydrated extends boolean = true>() => ReturnType<\n typeof useStytchUserShared<TAssumeHydrated>\n>;\n\n/**\n * Returns the active user's Stytch session.\n * The Stytch SDKs are used for client-side authentication and session management.\n * Check the isInitialized property to determine if the SDK has completed initialization.\n * Check the fromCache property to determine if the session data is from persistent storage.\n * @example\n * const {session, isInitialized, fromCache} = useStytchSession();\n * useEffect(() => {\n * if (!isInitialized) {\n * return;\n * }\n * if (!session) {\n * router.replace('/login')\n * }\n * }, [session, isInitialized]);\n */\nexport const useStytchSession = useStytchSessionShared as <TAssumeHydrated extends boolean = true>() => ReturnType<\n typeof useStytchSessionShared<TAssumeHydrated>\n>;\n\nexport const withStytchUser = withStytchUserShared as <T extends object, TAssumeHydrated extends boolean = true>(\n Component: ComponentType<\n T & { stytchUser: User | null; stytchUserIsInitialized: boolean; stytchUserIsFromCache: boolean }\n >,\n) => ReturnType<typeof withStytchUserShared<T, TAssumeHydrated>>;\n\nexport const withStytchSession = withStytchSessionShared as <T extends object, TAssumeHydrated extends boolean = true>(\n Component: ComponentType<\n T & { stytchSession: Session | null; stytchSessionIsInitialized: boolean; stytchSessionIsFromCache: boolean }\n >,\n) => ReturnType<typeof withStytchSessionShared<T, TAssumeHydrated>>;\n\nexport const useStytchIsAuthorized = useStytchIsAuthorizedShared as <TAssumeHydrated extends boolean = true>(\n resourceId: string,\n action: string,\n) => ReturnType<typeof useStytchIsAuthorizedShared<TAssumeHydrated>>;\n\nexport const withStytchPermissions = withStytchPermissionsShared as <\n Permissions extends Record<string, string>,\n T extends object,\n>(\n Component: ComponentType<T & { stytchPermissions: Record<string, Record<string, boolean>> }>,\n) => ReturnType<typeof withStytchPermissionsShared<Permissions, T>>;\n\nexport interface StytchProviderProps<\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n> {\n /**\n * A Stytch client instance, a {@link StytchClient}\n */\n stytch: StytchClient<TProjectConfiguration>;\n /**\n * When true, the provider will assume that the component will only be\n * rendered in a browser environment, either in a single-page application or\n * after completing hydration of a server-rendered application. This allows\n * cached values to be retrieved from the browser on the first render, meaning\n * that the `isInitialized` value returned from Stytch hooks will be `true`\n * starting from the first render.\n *\n * When `false`, the provider will defer initialization until after the first\n * render, and `isInitialized` will initially be `false`.\n *\n * If you encounter hydration errors relating to the use of this component,\n * set this to `false`.\n *\n * This value defaults to `true` in `@stytch/react`.\n */\n assumeHydrated?: boolean;\n children?: ReactNode;\n}\n\n/**\n * The Stytch Context Provider.\n * Wrap your application with this component in order to use Stytch everywhere in your app.\n * @example\n * const stytch = createStytchClient('public-token-<find yours in the stytch dashboard>')\n *\n * ReactDOM.render(\n * <StytchProvider stytch={stytch}>\n * <App />\n * </StytchProvider>,\n * document.getElementById('root'),\n * )\n */\nexport const StytchProvider = <\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n>({\n stytch,\n children,\n assumeHydrated = true,\n}: StytchProviderProps<TProjectConfiguration>): JSX.Element => (\n <StytchProviderShared stytch={stytch} assumeHydrated={assumeHydrated}>\n {children}\n </StytchProviderShared>\n);\n","import { createStytchClient } from '@stytch/web/headless';\n\n/**\n * @deprecated - use {@link createStytchClient} instead\n */\nexport const createStytchUIClient = createStytchClient;\n\nexport {\n StytchProvider,\n useStytch,\n useStytchSession,\n useStytchUser,\n withStytch,\n withStytchSession,\n withStytchUser,\n useStytchIsAuthorized,\n withStytchPermissions,\n} from './StytchContext';\n\nexport * from '@stytch/core/public';\nexport * from '@stytch/web/headless';\nexport * from '@stytch/web/common';\n\nexport { StytchLogin, StytchPasswordReset, StytchPasskeyRegistration, IdentityProvider } from '@stytch/web/react/b2c';\nexport { Products } from '@stytch/web';\n\nexport type { StytchProps, StytchResetPasswordProps, IdentityProviderProps } from '@stytch/web/react/b2c';\nexport type { StytchProviderProps } from './StytchContext';\nexport type {\n StytchLoginConfig,\n SDKConfig,\n ResetPasswordSDKConfig,\n IDPSDKConfig,\n AuthTokenParams,\n IDPConsentManifestGenerator,\n Strings,\n} from '@stytch/web';\n"],"names":["EmailSentType","initialUser","user","fromCache","isInitialized","initialSession","session","StytchContext","createContext","isMounted","StytchUserContext","StytchSessionContext","useIsMounted__INTERNAL","useContext","useStytchUser","invariant","noProviderError","useStytchSession","useStytch","ctx","client","withStytch","Component","WithStytch","props","React","stytch","displayName","name","withStytchUser","WithStytchUser","stytchUser","stytchUserIsInitialized","stytchUserIsFromCache","withStytchSession","WithStytchSession","stytchSession","stytchSessionIsInitialized","stytchSessionIsFromCache","useStytchIsAuthorized","resourceId","action","isAuthorized","setIsAuthorized","useAsyncState","useEffect","isStytchSSRProxy","rbac","isAuthorizedSync","then","roles","withStytchPermissions","WithStytchPermissions","permissions","setPermissions","loaded","value","allPermissions","stytchPermissions","StytchProvider","children","assumeHydrated","providerMustBeUniqueError","window","useMemo","getHydratedState","useCallback","getInfo","getInitialState","setClientState","assumeHydratedRef","useRef","updateState","oldState","mergeWithStableProps","current","onStateChange","Provider","messages","_messages","reducer","state","type","screen","formState","magicLinkState","email","otpState","cryptoState","passwordState","Error","AppScreens","Main","FloatingOneTap","PasskeyRegistrationStart","PasskeyRegistrationSuccess","PasskeyConfirmation","PasswordCreateOrLogin","PasswordResetForm","PasswordForgot","PasswordBreached","PasswordSetNew","PasswordDedupe","PasswordConfirmation","EmailConfirmation","OTPAuthenticate","OTPConfirmation","CryptoConnect","CryptoSignMessage","CryptoOtherScreen","CryptoSetupWallet","CryptoError","CryptoConfirmation","DEFAULT_STATE","OTPMethods","Email","methodId","otpDestination","walletAddress","walletOption","Wallets","Metamask","walletChallenge","resetPasswordState","token","GlobalContext","config","GlobalContextProvider","callbacks","initialState","useReducer","useGlobalContext","useGlobalReducer","useConfig","useErrorCallback","useEvent","onError","noop","useEventCallback","onEvent","useBootstrap","stytchClient","bootstrap","setBootstrap","useState","readB2CInternals","getSync","getAsync","data","hasProduct","products","product","some","p","id","useProductComponents","screenType","map","Object","assign","addProduct","includes","useIsOnlyFloatingOneTap","position","oauthOptions","providers","length","OAuthProviders","Google","one_tap","getShouldRenderFloatingOneTap","MAX_ATTEMPTS","usePromptPasskey","canAutofill","useLingui","hasPasskeys","dispatch","error","setError","startPasskeyAuth","conditionalMediation","abortController","resp","webauthn","authenticate","domain","passkeyOptions","session_duration_minutes","sessionOptions","sessionDurationMinutes","DEFAULT_SESSION_DURATION_MINUTES","conditional_mediation","is_passkey","signal","disable_input_check","enableShadowDOM","StytchEventType","PasskeyAuthenticate","e","extractErrorType","message","extractErrorMessage","AbortController","browserSupportsAutofill","i","aborted","DOMException","abort","MainScreen","options","usePresentation","mainScreenGroups","setMainScreenGroups","hasButtons","hasInput","passkeyError","productComponents","loadProductComponents","keys","Array","from","Set","filter","isTruthy","showDivider","splice","unshift","groups","walletIndex","indexOf","oauthIndex","Math","abs","index","min","Typography","variant","color","DEV","renderComponent","key","isArray","Column","gap","Divider","hideHeaderText","align","ErrorText","AppContainer","displayWatermark","theme","isOnlyFloatingOneTap","currentScreen","screenComponentMap","ScreenComponent","MainContainer","logo","Logo","appLogo","presentation","strings","setDisplayWatermark","networkClient","logEvent","details","presentationValue","usePresentationWithDefault","PresentationContext","I18nProviderWrapper","overrides","Container","createB2CComponent","Wrapped","serverRenderError","shadow","root","mountPoint","setMountPoint","useLayoutEffect","shadowRoot","attachShadow","mode","document","createElement","appendChild","injectCssIntoNode","injectGlobalStyle","element","div","ref","createPortal","StytchLogin","GenericWalletIcon","size","DEFAULT_ICON_SIZE","svg","width","height","viewBox","xmlns","path","d","fill","PasskeyIcon","OTPButtonText","SMS","WhatsApp","OTPEmailForm","setEmail","errorMessage","setErrorMessage","isSubmitting","setIsSubmitting","stopSubmit","errorText","handleEmailSubmit","preventDefault","match","EMAIL_REGEX","otps","loginOrCreate","expiration_minutes","otpOptions","expirationMinutes","DEFAULT_OTP_EXPIRATION_MINUTES","login_template_id","loginTemplateId","signup_template_id","signupTemplateId","locale","OTPsLoginOrCreateEvent","method_id","LoginOrCreateOTP","catch","getTranslatedError","as","onSubmit","EmailInput","hideLabel","Button","loading","PhoneForm","method","phoneNumber","setPhoneNumber","country","setCountry","parsePhoneNumber","getExampleNumber","getPhoneNumberProps","clientsideServices","handlePhoneSubmit","parsedNumber","formatNumberToIncludeCountryCode","isValid","number","PhoneInput","phone","setPhone","require$$0","AmazonIcon","fillRule","clipRule","className","_styles","darkInvert","AppleIcon","BinanceIcon","BitbucketIcon","CoinbaseIcon","DiscordIcon","FacebookIcon","FigmaIcon","GitlabIcon","LinkedinIcon","MetamaskIcon","PhantomIcon","SalesforceIcon","SnapchatIcon","TiktokIcon","TwitchIcon","XTwitterIcon","YahooIcon","hasMultipleEthereumWallets","ethereum","hasMetaMask","find","wallet","isMetaMask","hasCoinbaseWallet","isCoinbaseWallet","hasOtherEthereumWallet","getMetaMaskProvider","getCoinbaseProvider","getOtherInjectedProvider","WalletToIcon","Phantom","Binance","Coinbase","GenericEthereumWallet","GenericSolanaWallet","WalletToText","isWalletVisible","solana","isPhantom","BinanceChain","connectWithEthereumProvider","request","address","connectWithWallet","provider","connectResp","connect","publicKey","toString","signMessageWithSolanaProvider","encodedMessage","TextEncoder","encode","signResp","params","display","signature","signMessageWithEthereumProvider","signMessageWithWallet","isSolanaWallet","solanaWallets","MAX_BUTTONS","WalletIconComponent","Icon","walletMessages","CryptoWalletButtons","oAuthOptions","cryptoButtonsOnMainScreen","onWalletStart","allDetectedWallets","renderOtherScreenButton","mainWallets","slice","otherWallet","walletsToRender","ButtonColumn","icon","onClick","usePasswordlessAuthenticate","emailMagicLinksOptions","sendLink","magicLinks","convertMagicLinkOptions","MagicLinkLoginOrCreateEvent","sendCode","useEmailDomain","emailDomains","setEmailDomains","domainHint","showGoBack","emailDomain","countdown","useCountdown","goBack","LoginOrCreateEML","EmailConfirmationView","undefined","resend","jsx","getElementRef","React2","RovingFocusGroup.Root","RovingFocusGroup.Item","MagicLinkMethods","PasswordMethods","OTPTabHeaders","getTabMethods","otpMethods","hasPassword","tabMethods","add","LoginForm","productsIncludesOtp","methods","hasEmailMagicLink","hasOTPEmail","tabMethodComponents","Tabs","defaultValue","styles","tabRow","aria-label","classNames","buttonClassNames","block","tab","tabIndex","MagicLinkEmailForm","handleSubmit","submittingEmail","providerInfo","messageDescriptor","Microsoft","Apple","Github","GitLab","Facebook","Discord","Salesforce","Slack","Amazon","Bitbucket","LinkedIn","Twitch","Twitter","TikTok","Snapchat","Figma","Yahoo","OAuthButton","providerType","loginRedirectUrl","signupRedirectUrl","customScopes","providerParams","onSuccess","iconRegistry","label","iconName","onButtonClick","oauth","start","login_redirect_url","signup_redirect_url","custom_scopes","provider_params","useLastUsedOAuth","publicToken","lastUsedOAuth","safeLocalStorage","getItem","setLastUsedOAuth","setItem","OAUTH_BUTTON_HEIGHT","OneTapMountNode","slot","data-prompt_parent_id","GoogleOneTap","cancelOnTapOutside","oneTapRenderMode","getRenderedOneTapMode","shouldRenderEmbeddedOneTap","shouldRenderOneTap","pending","setPending","canDisplayOneTap","setCanDisplayOneTap","setHeight","oneTapError","setOneTapError","resizeCount","timeout","isUnmounted","useIsUnmounted","lastUsedMethod","onResize","el","clearTimeout","currentHeight","contentRect","setTimeout","getElementById","resizeObserver","ResizeObserver","observe","disconnect","attemptToLoadOneTap","oneTap","clientResult","createOneTapClient","success","reason","OneTapErrors","NoConfiguredOAuthClient","NoConfiguredSignupRedirectUrls","NoConfiguredLoginRedirectUrls","logger","onOneTapCancelled","showError","OriginNotAllowedForClient","renderResult","render","callback","createOnSuccessHandler","loginRedirectURL","signupRedirectURL","redirectOnSuccess","style","cancel","InvalidOAuthClient","$client","err","fallbackButton","fallbackWithLastUsed","LastUsed","Boolean","ErrorMessages","OneTapProvider","willGoogleOneTapShowEmbedded","container","CircularProgress","OAuthButtons","reorderedProviders","foundLastUsed","arrayUtils","moveToFront","providerProps","cancel_on_tap_outside","button","hideBackButton","destination","selectionMethod","formattedDestination","setFormattedDestination","calculateExpiration","Date","now","parseDestination","parsedPhoneNumber","national","formatNumber","expiration","setExpiration","resendCountdown","resendOTP","otp","OTPsAuthenticate","clear","SentOTPEntry","ResendOTPButton","useMountEffect","AuthenticateFlowComplete","Confirmation","text","PasswordNewUser","passwordOptions","password","setPassword","passwordError","setPasswordError","policy","updateStrengthCheck","debounce","passwords","strengthCheck","score","feedback","valid_password","strength_policy","breached_password","common","passwordInvalid","isPasswordBreached","passwordScore","passwordWarning","warning","passwordSuggestions","suggestions","missingCharacters","luds_requirements","missing_characters","missingComplexity","missing_complexity","onPasswordChange","create","PasswordCreate","error_type","resetByEmailStart","convertPasswordResetOptions","passwordInputProps","getNewPasswordProps","disabled","PasswordInput","PasswordError","PasswordAuthenticate","onForgot","PasswordlessAuthenticate","secondaryType","resetPassword","PasswordResetByEmailStart","PasswordCreateAuthenticate","userType","secondaryAuth","useSecondaryAuthenticate","TextColumn","header","body","handle","buttonText","ResetPasswordScreen","passwordToken","resetTokenType","parsed","parseAuthenticateUrl","tokenType","loginErrorMessage","setLoginErrorMessage","isLoggingIn","setIsLoggingIn","resetByEmail","PasswordResetByEmail","handlePasswordlessLogin","finally","form","top","bottom","VerticalTransition","primary","secondary","triggered","useResetResendPasswordActions","resendResetPassword","sendMagicLink","result","EmailActionLayout","description","Trans","components","bold","b","values","ResetPassword","PasswordsEmailForm","searchManager","searchUser","SAFARI_CROSS_DEVICE_DUPLICATE_REG_ERROR_MESSAGE","CHROME_CROSS_DEVICE_DUPLICATE_REG_ERROR_MESSAGE","userState","setUserState","get","onCreatePasskey","register","PasskeyRegister","onSkip","PasskeySkip","LoadingScreen","helper","useSyncExternalStore","commonButtonProps","EditableRow","handleEdit","isEditing","isEditingRow","othersEditing","inputRef","focus","row","evt","newName","data-testid","testId","input","Input","onChange","target","actions","optimisticRegistrations","setOptimisticRegistrations","webAuthnRegistrations","registrations","webauthn_registrations","editableRowState","setEditableRowState","onSetUpANewPasskey","update","onDone","PasskeyDone","startOptimisticUpdate","prevEditableRowState","errorToast","errorToStytchError","deleteReg","r","webauthn_registration_id","deleteWebauthnRegistration","updateReg","weight","existing","registration","passkeyRow","role","PasskeyButton","ConnectWallet","handleError","walletType","onConnectWallet","cryptoWallets","authenticateStart","crypto_wallet_address","crypto_wallet_type","CryptoWalletAuthenticateStart","challenge","SignMessage","onSignWallet","CryptoWalletAuthenticate","OtherCryptoWallets","rel","walletIcon","SetupNewWallet","ButtonAnchor","href","Success","oauthIcons","amazon","apple","bitbucket","coinbase","discord","facebook","figma","github","GithubIcon","gitlab","google","GoogleIcon","linkedin","microsoft","MicrosoftIcon","salesforce","slack","SlackIcon","snapchat","tiktok","twitch","xTwitter","yahoo","cryptoIcons","phantom","metamask","binance","emailIcons","gmail","GmailIcon","outlook","OutlookIcon","PhoneFormSMS","PhoneFormWhatsApp","MainWalletButtons","OneTapPositions","floating","emailMagicLinks","screens","tabs","mainScreen","icons","passkeys","passkeyRegistration","crypto","ResetPasswordContainer","rawConfig","passwordResetToken","rawToken","StytchPasswordReset","PasskeyRegistrationContainer","StytchPasskeyRegistration","IDPConsentScreenImpl","initialError","initialParams","oauthAuthorizeStart","oauthAuthorizeSubmit","idp","bootstrapNotLoaded","idpConsentInfo","useIDPState","IDPConsent","IDPLogoutScreenImpl","navigate","oauthLogoutStart","revokeSession","revoke","forceClear","idpLogoutState","useLogoutState","IDPLogout","IDPConsentScreen","searchParams","location","search","flow","parseIDPParams","content","EnsureUserIsLoggedIn","onErrorRef","authParams","useTrustedAuthTokenParams","attesting","setAttesting","attested","setAttested","attestTrustedToken","trustedAuthToken","tokenProfileID","profile_id","attest","NoCurrentSessionError","ErrorDisplay","IDPContainer","getIDPConsentManifest","authTokenParams","IDPContextProvider","consentManifestGenerator","IdentityProvider","useStytchUserShared","useStytchSessionShared","withStytchUserShared","withStytchSessionShared","useStytchIsAuthorizedShared","withStytchPermissionsShared","StytchProviderShared","createStytchUIClient","createStytchClient"],"mappings":"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","x_google_ignoreList":[16,17,40,41,42,43,44,45,46,47,48,49,50,51,52,53]}
1
+ {"version":3,"file":"index.cjs","sources":["../../../core/src/Events.ts","../../../web/src/ui/react/b2c/StytchContext.tsx","../../../web/src/messages/en.ts","../../../web/src/ui/b2c/reducer.ts","../../../web/src/ui/b2c/GlobalContextProvider.tsx","../../../web/src/ui/b2c/utils.ts","../../../web/src/ui/hooks/useIsOnlyFloatingOneTap.ts","../../../web/src/ui/hooks/usePromptPasskey.ts","../../../web/src/ui/b2c/screens/Main/index.tsx","../../../web/src/ui/b2c/Container.tsx","../../../web/src/ui/b2c/AppContainer.tsx","../../../web/src/ui/react/bindings/createB2CComponent.tsx","../../../web/src/ui/react/b2c/StytchLogin.tsx","../../../web/src/assets/genericWallet.tsx","../../../web/src/assets/passkeys.tsx","../../../web/src/ui/b2c/screens/Main/LoginForm/OTPForm.tsx","../../../../node_modules/base-x/src/index.js","../../../../node_modules/bs58/index.js","../../../web/src/utils/crypto.tsx","../../../web/src/ui/b2c/screens/Crypto/WalletButtons.tsx","../../../web/src/ui/b2c/screens/Secondary/usePasswordlessAuthenticate.ts","../../../web/src/ui/b2c/screens/Secondary/EmailConfirmation.tsx","../../../../node_modules/@radix-ui/react-compose-refs/dist/index.mjs","../../../../node_modules/@radix-ui/react-slot/dist/index.mjs","../../../../node_modules/@radix-ui/react-primitive/dist/index.mjs","../../../../node_modules/@radix-ui/react-context/dist/index.mjs","../../../../node_modules/@radix-ui/react-collection/dist/index.mjs","../../../../node_modules/@radix-ui/primitive/dist/index.mjs","../../../../node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs","../../../../node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs","../../../../node_modules/@radix-ui/react-presence/dist/index.mjs","../../../../node_modules/@radix-ui/react-id/dist/index.mjs","../../../../node_modules/@radix-ui/react-direction/dist/index.mjs","../../../../node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs","../../../../node_modules/@radix-ui/react-roving-focus/dist/index.mjs","../../../../node_modules/@radix-ui/react-tabs/dist/index.mjs","../../../web/src/ui/b2c/StytchProduct.ts","../../../web/src/ui/b2c/screens/Main/LoginForm/index.tsx","../../../web/src/ui/b2c/screens/Main/LoginForm/MagicLinkForm.tsx","../../../web/src/ui/b2c/components/OAuthButton.tsx","../../../web/src/ui/b2c/screens/Main/useLastUsedOAuth.tsx","../../../web/src/ui/b2c/components/GoogleOneTap.tsx","../../../web/src/ui/b2c/screens/Main/OAuthButtons.tsx","../../../web/src/ui/b2c/screens/Secondary/OTPAuthenticate.tsx","../../../web/src/ui/b2c/screens/Secondary/OTPConfirmation.tsx","../../../web/src/ui/b2c/screens/Password/PasswordNewUser.tsx","../../../web/src/ui/b2c/screens/Password/PasswordAuthenticate.tsx","../../../web/src/ui/b2c/screens/Secondary/PasswordlessAuthenticate.tsx","../../../web/src/ui/b2c/screens/Secondary/PasswordCreateAuthenticate.tsx","../../../web/src/ui/b2c/screens/Password/ResetPasswordScreen.tsx","../../../web/src/ui/b2c/screens/Password/useResetResendPasswordActions.tsx","../../../web/src/ui/b2c/screens/Password/PasswordForgot.tsx","../../../web/src/ui/b2c/screens/Password/PasswordBreached.tsx","../../../web/src/ui/b2c/screens/Password/PasswordSetNew.tsx","../../../web/src/ui/b2c/screens/Password/PasswordDedupe.tsx","../../../web/src/ui/b2c/screens/Password/PasswordConfirmation.tsx","../../../web/src/ui/b2c/screens/Main/LoginForm/PasswordForm.tsx","../../../web/src/utils/passkeys.ts","../../../web/src/ui/b2c/screens/Passkey/PasskeyRegistrationStart.tsx","../../../web/src/ui/hooks/useStytchUser.ts","../../../web/src/ui/b2c/screens/Passkey/EditableRow.tsx","../../../web/src/ui/b2c/screens/Passkey/PasskeyRegistrationSuccess.tsx","../../../web/src/ui/b2c/screens/Passkey/PasskeyConfirmation.tsx","../../../web/src/ui/b2c/screens/Main/LoginForm/PasskeyButton.tsx","../../../web/src/ui/b2c/screens/Crypto/ConnectWallet.tsx","../../../web/src/ui/b2c/screens/Crypto/SignMessage.tsx","../../../web/src/ui/b2c/screens/Crypto/OtherWallets.tsx","../../../web/src/ui/b2c/screens/Crypto/SetupNewWallet.tsx","../../../web/src/ui/b2c/screens/Crypto/Error.tsx","../../../web/src/ui/b2c/screens/Crypto/Success.tsx","../../../web/src/assets/logo-color/Amazon.tsx","../../../web/src/assets/logo-color/Apple.tsx","../../../web/src/assets/logo-color/Binance.tsx","../../../web/src/assets/logo-color/Bitbucket.tsx","../../../web/src/assets/logo-color/Coinbase.tsx","../../../web/src/assets/logo-color/Discord.tsx","../../../web/src/assets/logo-color/Facebook.tsx","../../../web/src/assets/logo-color/Figma.tsx","../../../web/src/assets/logo-color/Gitlab.tsx","../../../web/src/assets/logo-color/Linkedin.tsx","../../../web/src/assets/logo-color/Metamask.tsx","../../../web/src/assets/logo-color/Phantom.tsx","../../../web/src/assets/logo-color/Salesforce.tsx","../../../web/src/assets/logo-color/Snapchat.tsx","../../../web/src/assets/logo-color/Tiktok.tsx","../../../web/src/assets/logo-color/Twitch.tsx","../../../web/src/assets/logo-color/XTwitter.tsx","../../../web/src/ui/b2c/components/Icons.ts","../../../web/src/ui/b2c/Products.tsx","../../../web/src/ui/b2c/ResetPasswordContainer.tsx","../../../web/src/ui/react/b2c/StytchPasswordReset.tsx","../../../web/src/ui/b2c/PasskeyRegistrationContainer.tsx","../../../web/src/ui/react/b2c/StytchPasskeyRegistration.tsx","../../../web/src/ui/b2c/screens/IdentityProvider/IDPConsent.tsx","../../../web/src/ui/b2c/IDPContainer.tsx","../../../web/src/ui/react/b2c/IdentityProvider.tsx","../../src/StytchContext.tsx","../../src/index.ts"],"sourcesContent":["import { RNUIProductConfig, TokenType, StytchSDKError } from './public';\nimport { BootstrapData, CommonLoginConfig, CommonB2BLoginConfig } from './types';\n\nexport enum EmailSentType {\n LoginOrCreateEML = 'login_or_create_eml',\n LoginOrCreateOTP = 'login_or_create_otp',\n ResetPassword = 'reset_password',\n}\n\nexport type AnalyticsEvent =\n | {\n name: 'sdk_instance_instantiated';\n details: {\n event_callback_registered: boolean;\n error_callback_registered: boolean;\n success_callback_registered: boolean;\n };\n }\n | {\n name: 'b2b_sdk_instance_instantiated';\n details: {\n event_callback_registered: boolean;\n error_callback_registered: boolean;\n success_callback_registered: boolean;\n };\n }\n | {\n name: 'render_login_screen';\n details: {\n options: CommonLoginConfig | RNUIProductConfig;\n bootstrap: BootstrapData;\n };\n }\n | {\n name: 'render_b2b_login_screen';\n details: {\n options: CommonB2BLoginConfig;\n bootstrap: BootstrapData;\n };\n }\n | {\n name: 'render_idp_screen';\n details: {\n bootstrap: BootstrapData;\n };\n }\n | {\n name: 'render_b2b_idp_screen';\n details: {\n bootstrap: BootstrapData;\n };\n }\n | {\n name: 'email_sent';\n details: {\n email: string;\n type: EmailSentType;\n };\n }\n | {\n name: 'email_try_again_clicked';\n details: {\n email: string;\n type: EmailSentType;\n };\n }\n | {\n name: 'start_oauth_flow';\n details: {\n provider_type: string;\n custom_scopes?: string[];\n cname_domain: string | null;\n pkce: boolean;\n provider_params?: Record<string, string>;\n };\n }\n | {\n name: 'deeplink_handled_success';\n details: {\n token_type: TokenType;\n };\n }\n | {\n name: 'deeplink_handled_failure';\n details: {\n error: StytchSDKError | undefined;\n };\n }\n | {\n name: 'oauth_success';\n details: {\n provider_type: string;\n };\n }\n | {\n name: 'oauth_failure';\n details: {\n error: StytchSDKError | string | undefined;\n };\n }\n | {\n name: 'ui_authentication_success';\n details: {\n method: 'oauth' | 'otp' | 'magicLinks' | 'passwords';\n };\n }\n | {\n name: 'render_b2b_admin_portal_sso';\n details: Record<string, never>;\n }\n | {\n name: 'render_b2b_admin_portal_org_settings';\n details: Record<string, never>;\n }\n | {\n name: 'render_b2b_admin_portal_member_management';\n details: Record<string, never>;\n }\n | {\n name: 'render_b2b_admin_portal_scim';\n details: Record<string, never>;\n };\n","'use client';\n\nimport React, {\n ComponentType,\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n} from 'react';\nimport { mergeWithStableProps } from '@stytch/js-utils';\nimport { PermissionsMap, Session, StytchProjectConfigurationInput, User } from '@stytch/core/public';\nimport { useAsyncState } from '../utils/async';\nimport { noProviderError, providerMustBeUniqueError } from '../utils/errors';\nimport { invariant } from '../utils/invariant';\nimport { isStytchSSRProxy } from '../bindings/StytchSSRProxy';\nimport { StytchClient } from '../../../StytchClient';\n\n// There's no user facing strings in this file\n/* eslint-disable lingui/no-unlocalized-strings */\n\ntype StytchContext<TProjectConfiguration extends StytchProjectConfigurationInput> =\n | {\n isMounted: false;\n }\n | {\n isMounted: true;\n client: StytchClient<TProjectConfiguration>;\n };\n\ntype SWRUserUninitialized = {\n /**\n * Either the active {@link User} object, or null if the user is not logged in.\n */\n user: null;\n /**\n * If true, indicates that the value returned is from the application cache and a state refresh is in progress.\n */\n fromCache: false;\n /**\n * If true, indicates that the SDK has completed initialization.\n */\n isInitialized: false;\n};\n\ntype SWRUserInitialized = {\n /**\n * Either the active {@link User} object, or null if the user is not logged in.\n */\n user: User | null;\n /**\n * If true, indicates that the value returned is from the application cache and a state refresh is in progress.\n */\n fromCache: boolean;\n /**\n * If true, indicates that the SDK has completed initialization.\n */\n isInitialized: true;\n};\n\ntype SWRUser<TAlwaysInitialized extends boolean = boolean> = TAlwaysInitialized extends true\n ? SWRUserInitialized\n : SWRUserInitialized | SWRUserUninitialized;\n\nconst initialUser: SWRUserUninitialized = {\n user: null,\n fromCache: false,\n isInitialized: false,\n};\n\ntype SWRSessionUninitialized = {\n /**\n * Either the active {@link Session} object, or null if the user is not logged in.\n */\n session: null;\n /**\n * If true, indicates that the value returned is from the application cache and a state refresh is in progress.\n */\n fromCache: false;\n /**\n * If true, indicates that the SDK has completed initialization.\n */\n isInitialized: false;\n};\n\ntype SWRSessionInitialized = {\n /**\n * Either the active {@link Session} object, or null if the user is not logged in.\n */\n session: Session | null;\n /**\n * If true, indicates that the value returned is from the application cache and a state refresh is in progress.\n */\n fromCache: boolean;\n /**\n * If true, indicates that the SDK has completed initialization.\n */\n isInitialized: true;\n};\n\ntype SWRSession<TAlwaysInitialized extends boolean = boolean> = TAlwaysInitialized extends true\n ? SWRSessionInitialized\n : SWRSessionInitialized | SWRSessionUninitialized;\n\nconst initialSession: SWRSessionUninitialized = {\n session: null,\n fromCache: false,\n isInitialized: false,\n};\n\nconst StytchContext = createContext<StytchContext<StytchProjectConfigurationInput>>({ isMounted: false });\nconst StytchUserContext = createContext<SWRUser>(initialUser);\nconst StytchSessionContext = createContext<SWRSession>(initialSession);\n\nexport const useIsMounted__INTERNAL = (): boolean => useContext(StytchContext).isMounted;\n\n/**\n * Returns the active User.\n * The Stytch SDKs are used for client-side authentication and session management.\n * Check the isInitialized property to determine if the SDK has completed initialization.\n * Check the fromCache property to determine if the user data is from persistent storage.\n * @example\n * const {user, isInitialized, fromCache} = useStytchUser();\n * if (!isInitialized) {\n * return <p>Loading...</p>;\n * }\n * return (<h1>Welcome, {user.name.first_name}</h1>);\n */\nexport const useStytchUser = <TAssumeHydrated extends boolean = false>(): SWRUser<TAssumeHydrated> => {\n invariant(useIsMounted__INTERNAL(), noProviderError('useStytchUser'));\n return useContext(StytchUserContext) as SWRUser<TAssumeHydrated>;\n};\n\n/**\n * Returns the active user's Stytch session.\n * The Stytch SDKs are used for client-side authentication and session management.\n * Check the isInitialized property to determine if the SDK has completed initialization.\n * Check the fromCache property to determine if the session data is from persistent storage.\n * @example\n * const {session, isInitialized, fromCache} = useStytchSession();\n * useEffect(() => {\n * if (!isInitialized) {\n * return;\n * }\n * if (!session) {\n * router.replace('/login')\n * }\n * }, [session, isInitialized]);\n */\nexport const useStytchSession = <TAssumeHydrated extends boolean = false>(): SWRSession<TAssumeHydrated> => {\n invariant(useIsMounted__INTERNAL(), noProviderError('useStytchSession'));\n return useContext(StytchSessionContext) as SWRSession<TAssumeHydrated>;\n};\n\n/**\n * Returns the Stytch client stored in the Stytch context.\n *\n * @example\n * const stytch = useStytch();\n * useEffect(() => {\n * stytch.magicLinks.authenticate('...')\n * }, [stytch]);\n */\nexport const useStytch = <\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n>(): StytchClient<TProjectConfiguration> => {\n const ctx = useContext(StytchContext);\n invariant(ctx.isMounted, noProviderError('useStytch'));\n return ctx.client as StytchClient<TProjectConfiguration>;\n};\n\nexport const withStytch = <\n T extends object,\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n>(\n Component: ComponentType<T & { stytch: StytchClient<TProjectConfiguration> }>,\n): ComponentType<T> => {\n const WithStytch: ComponentType<T> = (props) => {\n invariant(useIsMounted__INTERNAL(), noProviderError('withStytch'));\n return <Component {...props} stytch={useStytch()} />;\n };\n WithStytch.displayName = `withStytch(${Component.displayName || Component.name || 'Component'})`;\n return WithStytch;\n};\n\nexport const withStytchUser = <T extends object, TAssumeHydrated extends boolean = false>(\n Component: ComponentType<\n T & { stytchUser: User | null; stytchUserIsInitialized: boolean; stytchUserIsFromCache: boolean }\n >,\n): ComponentType<T> => {\n const WithStytchUser: ComponentType<T> = (props) => {\n invariant(useIsMounted__INTERNAL(), noProviderError('withStytchUser'));\n const { user, isInitialized, fromCache } = useStytchUser<TAssumeHydrated>();\n return (\n <Component\n {...props}\n stytchUser={user}\n stytchUserIsInitialized={isInitialized}\n stytchUserIsFromCache={fromCache}\n />\n );\n };\n WithStytchUser.displayName = `withStytchUser(${Component.displayName || Component.name || 'Component'})`;\n return WithStytchUser;\n};\n\nexport const withStytchSession = <T extends object, TAssumeHydrated extends boolean = false>(\n Component: ComponentType<\n T & { stytchSession: Session | null; stytchSessionIsInitialized: boolean; stytchSessionIsFromCache: boolean }\n >,\n): ComponentType<T> => {\n const WithStytchSession: ComponentType<T> = (props) => {\n invariant(useIsMounted__INTERNAL(), noProviderError('withStytchSession'));\n const { session, isInitialized, fromCache } = useStytchSession<TAssumeHydrated>();\n return (\n <Component\n {...props}\n stytchSession={session}\n stytchSessionIsInitialized={isInitialized}\n stytchSessionIsFromCache={fromCache}\n />\n );\n };\n WithStytchSession.displayName = `withStytchSession(${Component.displayName || Component.name || 'Component'})`;\n return WithStytchSession;\n};\n\ntype SWRIsAuthorizedUninitialized = {\n /**\n * Whether the logged-in user is allowed to perform the specified action on the specified resource.\n */\n isAuthorized: false;\n /**\n * If true, indicates that the value returned is from the application cache and a state refresh is in progress.\n */\n fromCache: false;\n /**\n * If true, indicates that the SDK has completed initialization.\n */\n isInitialized: false;\n};\n\ntype SWRIsAuthorizedInitialized = {\n /**\n * Whether the logged-in user is allowed to perform the specified action on the specified resource.\n */\n isAuthorized: boolean;\n /**\n * If true, indicates that the value returned is from the application cache and a state refresh is in progress.\n */\n fromCache: boolean;\n /**\n * If true, indicates that the SDK has completed initialization.\n */\n isInitialized: boolean;\n};\n\ntype SWRIsAuthorized<TAlwaysInitialized extends boolean> = TAlwaysInitialized extends true\n ? SWRIsAuthorizedInitialized\n : SWRIsAuthorizedInitialized | SWRIsAuthorizedUninitialized;\n\n/**\n * Determines whether the logged-in user is allowed to perform the specified action on the specified resource.\n * Returns `true` if the user can perform the action, `false` otherwise.\n *\n * If the user is not logged in, this method will always return false.\n * If the resource or action provided are not valid for the configured RBAC policy, this method will return false.\n *\n * Remember - authorization checks for sensitive actions should always occur on the backend as well.\n * @example\n * const { isAuthorized } = useStytchIsAuthorized('documents', 'edit');\n * return <button disabled={!isAuthorized}>Edit</button>\n */\nexport const useStytchIsAuthorized = <TAssumeHydrated extends boolean = false>(\n resourceId: string,\n action: string,\n): SWRIsAuthorized<TAssumeHydrated> => {\n invariant(useIsMounted__INTERNAL(), noProviderError('useStytchIsAuthorized', 'StytchProvider'));\n const client = useStytch();\n const { user } = useStytchUser();\n const [isAuthorized, setIsAuthorized] = useAsyncState<SWRIsAuthorized<boolean>>({\n isInitialized: false,\n fromCache: false,\n isAuthorized: false,\n });\n\n useEffect(() => {\n if (isStytchSSRProxy(client)) {\n return;\n }\n\n setIsAuthorized({\n isInitialized: true,\n fromCache: true,\n isAuthorized: client.rbac.isAuthorizedSync(resourceId, action),\n });\n }, [action, client, resourceId, setIsAuthorized]);\n\n useEffect(() => {\n if (isStytchSSRProxy(client)) {\n return;\n }\n client.rbac.isAuthorized(resourceId, action).then((isAuthorized) => {\n setIsAuthorized({ isAuthorized, fromCache: false, isInitialized: true });\n });\n }, [client, user?.roles, resourceId, action, setIsAuthorized]);\n\n return isAuthorized;\n};\n\ntype permissionsLoaded<Permissions extends Record<string, string>> =\n | {\n loaded: false;\n value: null;\n }\n | {\n loaded: true;\n value: PermissionsMap<Permissions>;\n };\n\n/**\n * Wrap your component with this HOC in order to receive the permissions for the logged-in user.\n * Evaluates all permissions granted to the logged-in user.\n * Returns a Record<RoleId, Record<Action, boolean>> response indicating the user's permissions.\n * Each boolean will be `true` if the user can perform the action, `false` otherwise.\n *\n * If the user is not logged in, all values will be false.\n *\n * Remember - authorization checks for sensitive actions should always occur on the backend as well.\n * @example\n * type Permissions = {\n * document: 'create' | 'read' | 'write\n * image: 'create' | 'read'\n * }\n *\n * const MyComponent = (props) => {\n * const canEditDocuments = props.stytchPermissions.document.edit;\n * const canReadImages = props.stytchPermissions.image.read;\n * }\n * return withStytchPermissions<Permissions>(MyComponent)\n */\nexport const withStytchPermissions = <Permissions extends Record<string, string>, T extends object>(\n Component: ComponentType<T & { stytchPermissions: PermissionsMap<Permissions> }>,\n): ComponentType<T> => {\n const WithStytchPermissions: ComponentType<T> = (props) => {\n invariant(useIsMounted__INTERNAL(), noProviderError('useRBACPermissions', 'StytchProvider'));\n const client = useStytch();\n const { user } = useStytchUser();\n const [permissions, setPermissions] = useAsyncState<permissionsLoaded<Permissions>>({ loaded: false, value: null });\n\n useEffect(() => {\n client.rbac.allPermissions<Permissions>().then((permissions) => {\n setPermissions({ loaded: true, value: permissions });\n });\n }, [client, user?.roles, setPermissions]);\n\n if (!permissions.loaded) {\n return null;\n }\n return <Component {...props} stytchPermissions={permissions.value} />;\n };\n WithStytchPermissions.displayName = `withStytchPermissions(${\n Component.displayName || Component.name || 'Component'\n })`;\n return WithStytchPermissions;\n};\n\nexport interface StytchProviderProps<\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n> {\n /**\n * A Stytch client instance, created using either {@link createStytchHeadlessClient} or {@link createStytchClient}\n */\n stytch: StytchClient<TProjectConfiguration>;\n /**\n * When true, the provider will assume that the component will only be\n * rendered in a browser environment, either in a single-page application or\n * after completing hydration of a server-rendered application. This allows\n * cached values to be retrieved from the browser on the first render, meaning\n * that the `isInitialized` value returned from Stytch hooks will be `true`\n * starting from the first render.\n *\n * When `false`, the provider will defer initialization until after the first\n * render, and `isInitialized` will initially be `false`.\n *\n * This value defaults to `false` in `@stytch/nextjs`.\n */\n assumeHydrated?: boolean;\n children?: ReactNode;\n}\n\n/**\n * The Stytch Context Provider.\n * Wrap your application with this component in order to use Stytch everywhere in your app.\n * @example\n * const stytch = createStytchClient('public-token-<find yours in the stytch dashboard>')\n *\n * return (\n * <StytchProvider stytch={stytch}>\n * <App />\n * </StytchProvider>\n * )\n */\nexport const StytchProvider = <\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n>({\n stytch,\n children,\n assumeHydrated = false,\n}: StytchProviderProps<TProjectConfiguration>) => {\n invariant(!useIsMounted__INTERNAL(), providerMustBeUniqueError);\n invariant(\n !assumeHydrated || typeof window !== 'undefined',\n 'The `assumeHydrated` prop must be set to `false` when using StytchProvider in a server environment.',\n );\n\n const ctx = useMemo(() => ({ client: stytch, isMounted: true }), [stytch]);\n\n type ClientState<TAlwaysInitialized extends boolean> = {\n session: SWRSession<TAlwaysInitialized>;\n user: SWRUser<TAlwaysInitialized>;\n };\n\n const getHydratedState = useCallback(() => {\n return {\n session: { ...stytch.session.getInfo(), isInitialized: true },\n user: { ...stytch.user.getInfo(), isInitialized: true },\n } satisfies ClientState<true>;\n }, [stytch]);\n\n const getInitialState = () => {\n return {\n session: initialSession,\n user: initialUser,\n } satisfies ClientState<false>;\n };\n\n const [{ user, session }, setClientState] = useAsyncState<ClientState<boolean>>(() =>\n assumeHydrated ? getHydratedState() : (getInitialState() as ClientState<boolean>),\n );\n\n // Store the initial value of `assumeHydrated` in a ref, because it is\n // logically only relevant for the first render\n const assumeHydratedRef = useRef(assumeHydrated);\n useEffect(() => {\n if (isStytchSSRProxy(stytch)) {\n return;\n }\n\n const updateState = () => {\n setClientState((oldState) => mergeWithStableProps(oldState, getHydratedState()));\n };\n\n if (!assumeHydratedRef.current) {\n updateState();\n }\n\n return stytch.onStateChange(updateState);\n }, [getHydratedState, setClientState, stytch]);\n\n return (\n <StytchContext.Provider value={ctx}>\n <StytchUserContext.Provider value={user}>\n <StytchSessionContext.Provider value={session}>{children}</StytchSessionContext.Provider>\n </StytchUserContext.Provider>\n </StytchContext.Provider>\n );\n};\n","import { Messages } from '@lingui/core';\nimport { messages as _messages } from '../../messages/en.json';\n\nexport const messages = _messages as unknown as Messages;\n","import { AppScreens, AppState, OTPState, CryptoState, PasswordState } from './GlobalContextProvider';\n\nexport type Action =\n | { type: 'transition'; screen: AppScreens }\n | { type: 'set_magic_link_email'; email: string }\n | { type: 'update_otp_state'; otpState: OTPState }\n | { type: 'update_crypto_state'; cryptoState: CryptoState }\n | { type: 'update_password_state'; passwordState: PasswordState };\n\nexport const reducer = (state: AppState, action: Action): AppState => {\n switch (action.type) {\n case 'transition':\n return {\n ...state,\n screen: action.screen,\n };\n case 'set_magic_link_email': {\n return {\n ...state,\n formState: {\n ...state.formState,\n magicLinkState: { email: action.email },\n },\n };\n }\n case 'update_otp_state': {\n return {\n ...state,\n formState: {\n ...state.formState,\n otpState: action.otpState,\n },\n };\n }\n case 'update_crypto_state': {\n return {\n ...state,\n formState: {\n ...state.formState,\n cryptoState: action.cryptoState,\n },\n };\n }\n case 'update_password_state': {\n return {\n ...state,\n formState: {\n ...state.formState,\n passwordState: action.passwordState,\n },\n };\n }\n\n default:\n throw new Error();\n }\n};\n","import React, { useContext } from 'react';\nimport { useEvent } from '../hooks/useEvent';\nimport { noop } from '../../utils';\n\nimport { Callbacks, OTPMethods, StytchProjectConfigurationInput, Wallets } from '@stytch/core/public';\nimport { Action, reducer } from './reducer';\nimport type { StytchClient } from '../../StytchClient';\n\nimport { StytchLoginConfig } from '../../types';\n\n/* eslint-disable lingui/no-unlocalized-strings -- internal constants, not user-facing strings */\nexport const AppScreens = {\n Main: 'Main',\n FloatingOneTap: 'FloatingOneTap',\n PasskeyRegistrationStart: 'PasskeyRegistrationStart',\n PasskeyRegistrationSuccess: 'PasskeyRegistrationSuccess',\n PasskeyConfirmation: 'PasskeyConfirmation',\n PasswordCreateOrLogin: 'PasswordCreateOrLogin',\n PasswordResetForm: 'PasswordResetForm',\n PasswordForgot: 'PasswordForgot',\n PasswordBreached: 'PasswordBreached',\n PasswordSetNew: 'PasswordSetNew',\n PasswordDedupe: 'PasswordDedupe',\n PasswordConfirmation: 'PasswordConfirmation',\n EmailConfirmation: 'EmailConfirmation',\n OTPAuthenticate: 'OTPAuthenticate',\n OTPConfirmation: 'OTPConfirmation',\n CryptoConnect: 'CryptoConnect',\n CryptoSignMessage: 'CryptoSignMessage',\n CryptoOtherScreen: 'CryptoOtherScreen',\n CryptoSetupWallet: 'CryptoSetupWallet',\n CryptoError: 'CryptoError',\n CryptoConfirmation: 'CryptoConfirmation',\n} as const;\n/* eslint-enable lingui/no-unlocalized-strings */\n\nexport type AppScreens = keyof typeof AppScreens;\n\nexport type MagicLinkState = {\n email: string;\n};\n\nexport type OTPState = {\n type: OTPMethods;\n methodId: string;\n otpDestination: string;\n};\n\nexport type PasswordState = {\n email: string;\n type: 'new' | 'passwordless' | 'password';\n};\n\nexport type CryptoState = {\n walletAddress: string;\n walletOption: Wallets;\n walletChallenge: string;\n};\n\nexport type ResetPasswordState = {\n token: string;\n};\n\nexport type FormState = {\n magicLinkState: MagicLinkState;\n otpState: OTPState;\n cryptoState: CryptoState;\n passwordState: PasswordState;\n resetPasswordState: ResetPasswordState;\n};\n\nexport type AppState = {\n screen: AppScreens;\n formState: FormState;\n};\n\nexport type AppContext<TProjectConfiguration extends StytchProjectConfigurationInput> = {\n client: StytchClient<TProjectConfiguration>;\n config: StytchLoginConfig;\n callbacks?: Callbacks<TProjectConfiguration>;\n state: [AppState, React.Dispatch<Action>];\n};\n\nexport const DEFAULT_STATE: AppState = {\n screen: AppScreens.Main,\n formState: {\n magicLinkState: {\n email: '',\n },\n otpState: {\n type: OTPMethods.Email,\n methodId: '',\n otpDestination: '',\n },\n cryptoState: {\n walletAddress: '',\n walletOption: Wallets.Metamask,\n walletChallenge: '',\n },\n passwordState: {\n email: '',\n type: 'new',\n },\n resetPasswordState: {\n token: '',\n },\n },\n};\n\nexport const GlobalContext = React.createContext<AppContext<StytchProjectConfigurationInput>>({\n client: {} as StytchClient<StytchProjectConfigurationInput>,\n config: {} as StytchLoginConfig,\n state: [DEFAULT_STATE, () => null],\n});\n\nexport type GlobalContextProviderProps<TProjectConfiguration extends StytchProjectConfigurationInput> = {\n children: React.ReactNode;\n client: StytchClient<TProjectConfiguration>;\n config: StytchLoginConfig;\n callbacks?: Callbacks<TProjectConfiguration>;\n initialState?: AppState;\n};\n\nexport const GlobalContextProvider = <TProjectConfiguration extends StytchProjectConfigurationInput>({\n children,\n client,\n config,\n callbacks,\n initialState,\n}: GlobalContextProviderProps<TProjectConfiguration>) => {\n const state = React.useReducer(reducer, initialState ?? DEFAULT_STATE);\n\n return <GlobalContext.Provider value={{ client, state, config, callbacks }}>{children}</GlobalContext.Provider>;\n};\n\nexport const useGlobalContext = () => useContext(GlobalContext);\nexport const useStytch = () => useGlobalContext().client;\nexport const useGlobalReducer = () => useGlobalContext().state;\nexport const useConfig = () => useGlobalContext().config;\nexport const useErrorCallback = () => useEvent(useGlobalContext().callbacks?.onError ?? noop);\nexport const useEventCallback = () => useEvent(useGlobalContext().callbacks?.onEvent ?? noop);\n","import { useEffect, useMemo, useState } from 'react';\nimport { BootstrapData } from '@stytch/core';\nimport { useStytch } from './GlobalContextProvider';\nimport { readB2CInternals } from '../../utils/internal';\nimport { ProductId, StytchProduct } from './StytchProduct';\n\nexport const useBootstrap = (): { bootstrap: BootstrapData; fromCache: boolean } => {\n const stytchClient = useStytch();\n const [bootstrap, setBootstrap] = useState({\n bootstrap: readB2CInternals(stytchClient).bootstrap.getSync(),\n fromCache: true,\n });\n\n useEffect(() => {\n readB2CInternals(stytchClient)\n .bootstrap.getAsync()\n .then((data) =>\n setBootstrap({\n bootstrap: data,\n fromCache: false,\n }),\n );\n }, [stytchClient]);\n\n return bootstrap;\n};\n\nexport function hasProduct(products: StytchProduct[], product: ProductId) {\n return products.some((p) => p.id === product);\n}\n\nexport function useProductComponents<Type extends 'screens' | 'tabs' | 'mainScreen'>(\n products: StytchProduct[],\n screenType: Type,\n) {\n return useMemo(() => {\n const map = {} as Required<StytchProduct[Type]>;\n for (const product of products) {\n if (product[screenType]) Object.assign(map, product[screenType]);\n }\n return map;\n }, [products, screenType]);\n}\n\n/**\n * In B2C, ResetPassword and PasskeyRegistration always need passwords and passkey products respectively,\n * so we inject these into config just in case the customer don't have it. If they are missing the components\n * just crash immediately.\n */\nexport function addProduct<Config extends { products?: StytchProduct[] }>(\n config: Config | undefined,\n product: StytchProduct,\n): Config {\n if (config?.products?.includes(product)) return config;\n\n const products = config?.products ?? [];\n return {\n ...(config ?? {}),\n products: [...products, product],\n } as Config;\n}\n","import { useMemo } from 'react';\nimport { OAuthProviders } from '@stytch/core/public';\nimport { getShouldRenderFloatingOneTap } from '../../oneTap/positionModes';\nimport { hasProduct } from '../b2c/utils';\nimport { StytchLoginConfig } from '../../types';\n\nexport const useIsOnlyFloatingOneTap = (config: StytchLoginConfig) => {\n return useMemo(() => {\n const position = config.oauthOptions?.providers[0].position;\n return (\n config.products.length === 1 &&\n hasProduct(config.products, 'oauth') &&\n config.oauthOptions?.providers.length === 1 &&\n config.oauthOptions?.providers[0].type === OAuthProviders.Google &&\n config.oauthOptions?.providers[0].one_tap === true &&\n getShouldRenderFloatingOneTap(position)\n );\n }, [config]);\n};\n","import { useCallback, useEffect, useState } from 'react';\nimport { StytchEventType, StytchProjectConfigurationInput, WebAuthnAuthenticateResponse } from '@stytch/core/public';\nimport { DEFAULT_SESSION_DURATION_MINUTES } from '@stytch/core';\nimport { useLingui } from '@lingui/react/macro';\nimport {\n AppScreens,\n useConfig,\n useErrorCallback,\n useEventCallback,\n useGlobalReducer,\n useStytch,\n} from '../b2c/GlobalContextProvider';\nimport { extractErrorType } from '../../utils/extractErrorType';\nimport { extractErrorMessage } from '../../utils/extractErrorMessage';\nimport { hasProduct } from '../b2c/utils';\n\nconst MAX_ATTEMPTS = 5;\n\nexport type StartPasskeyAuth = () => Promise<WebAuthnAuthenticateResponse<StytchProjectConfigurationInput>>;\n\nexport const usePromptPasskey = ({\n canAutofill,\n}: {\n canAutofill: boolean;\n}): [startPasskeyAuth: StartPasskeyAuth, error: string | undefined] => {\n const { t } = useLingui();\n const stytchClient = useStytch();\n const config = useConfig();\n const hasPasskeys = hasProduct(config.products, 'passkeys');\n\n const onEvent = useEventCallback();\n const onError = useErrorCallback();\n const [, dispatch] = useGlobalReducer();\n\n const [error, setError] = useState<string>();\n\n const startPasskeyAuth = useCallback(\n async ({\n conditionalMediation = false,\n abortController,\n }: {\n conditionalMediation?: boolean;\n abortController?: AbortController;\n } = {}) => {\n try {\n const resp = await stytchClient.webauthn.authenticate({\n domain: config.passkeyOptions?.domain,\n session_duration_minutes: config.sessionOptions?.sessionDurationMinutes ?? DEFAULT_SESSION_DURATION_MINUTES,\n conditional_mediation: conditionalMediation,\n is_passkey: true,\n signal: abortController?.signal,\n disable_input_check: config.enableShadowDOM,\n });\n\n if (!resp) {\n throw new Error('Empty response');\n }\n\n onEvent({ type: StytchEventType.PasskeyAuthenticate, data: resp });\n dispatch({ type: 'transition', screen: AppScreens.PasskeyConfirmation });\n return resp;\n } catch (e) {\n if (extractErrorType(e) === 'webauthn_registration_not_found') {\n setError(\n t({\n id: 'error.passkeyRegistrationNotFound',\n message:\n 'Passkey registration not found. You may have deleted the passkey from your account but not password manager. Please try again.',\n }),\n );\n } else if (e instanceof Error && e.name === 'StytchAPIError') {\n setError(\n t({\n id: 'error.passkeyUnknown',\n message: 'Unknown error occurred during passkey authentication. Please try again.',\n }),\n );\n }\n\n const message = extractErrorMessage(e);\n if (message) {\n onError({ message });\n }\n\n throw e;\n }\n },\n [\n config.enableShadowDOM,\n config.passkeyOptions?.domain,\n config.sessionOptions?.sessionDurationMinutes,\n dispatch,\n onError,\n onEvent,\n stytchClient.webauthn,\n t,\n ],\n );\n\n useEffect(() => {\n if (!hasPasskeys || !canAutofill) {\n return;\n }\n\n // Skip passkey authentication in Storybook environment\n if (process.env.STORYBOOK) {\n return;\n }\n\n const abortController = new AbortController();\n (async () => {\n if (!(await stytchClient.webauthn.browserSupportsAutofill())) {\n return;\n }\n\n for (let i = 0; i < MAX_ATTEMPTS; ++i) {\n if (abortController.signal.aborted) {\n return;\n }\n\n try {\n await startPasskeyAuth({ abortController, conditionalMediation: true });\n return;\n } catch (e) {\n // User denied permission\n if (e instanceof DOMException && e.name === 'NotAllowedError') {\n return;\n }\n\n // Otherwise swallow error\n }\n }\n })();\n\n return () => {\n abortController.abort();\n };\n }, [canAutofill, hasPasskeys, startPasskeyAuth, stytchClient.webauthn]);\n\n return [startPasskeyAuth, error];\n};\n","import React, { useEffect, useState } from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { usePresentation } from '../../../components/PresentationConfig';\nimport { useConfig, useStytch } from '../../GlobalContextProvider';\nimport Typography from '../../../components/atoms/Typography';\nimport { isTruthy } from '../../../../utils/isTruthy';\nimport { usePromptPasskey } from '../../../hooks/usePromptPasskey';\nimport Column from '../../../components/atoms/Column';\nimport ErrorText from '../../../components/molecules/ErrorText';\nimport { MainScreenGroup, MainScreenKey } from '../../StytchProduct';\nimport { hasProduct, useProductComponents } from '../../utils';\nimport Divider from '../../../components/molecules/Divider';\nimport { DEV } from '@stytch/core';\n\nexport const MainScreen = () => {\n const stytchClient = useStytch();\n const config = useConfig();\n\n const { options } = usePresentation();\n const { t } = useLingui();\n const [mainScreenGroups, setMainScreenGroups] = useState<MainScreenGroup[]>([]);\n\n const { products, oauthOptions } = config;\n const hasButtons = (hasProduct(products, 'oauth') && oauthOptions) || hasProduct(products, 'crypto');\n const hasPasskeys = hasProduct(products, 'passkeys');\n const hasInput =\n hasProduct(products, 'emailMagicLinks') || hasProduct(products, 'otp') || hasProduct(products, 'passwords');\n\n const [startPasskeyAuth, passkeyError] = usePromptPasskey({ canAutofill: hasInput });\n const productComponents = useProductComponents(products, 'mainScreen')!;\n\n useEffect(() => {\n const loadProductComponents = async () => {\n // Deduplicate components mapped from products\n const keys = Array.from(\n new Set<MainScreenKey>(\n products\n .map((product) => {\n switch (product.id) {\n case 'oauth':\n case 'crypto':\n return product.id;\n case 'emailMagicLinks':\n case 'otp':\n case 'passwords':\n return 'login-form';\n }\n })\n .filter(isTruthy),\n ),\n );\n\n const showDivider = hasButtons && hasInput;\n if (keys.length > 1 && showDivider) {\n keys.splice(-1, 0, 'divider');\n }\n\n // Add a passkey button if the user has configured passkeys, don't have a login form,\n // or the browser does not support autofill\n if (hasPasskeys && (!hasInput || !(await stytchClient.webauthn.browserSupportsAutofill()))) {\n keys.unshift('passkey-button');\n }\n\n // Group Wallet and Oauth buttons (basically going from [Password, Wallet, OAuth] to [Password, [Wallet, OAuth]])\n // This reassignment is only there to make TS happy - .splice mutates, and groups === keys\n // so it is not really needed\n const groups: MainScreenGroup[] = keys;\n const walletIndex = keys.indexOf('crypto');\n const oauthIndex = keys.indexOf('oauth');\n if (walletIndex !== -1 && oauthIndex !== -1 && Math.abs(walletIndex - oauthIndex) === 1) {\n const index = Math.min(walletIndex, oauthIndex);\n groups.splice(index, 0, keys.splice(index, 2));\n }\n\n setMainScreenGroups(groups);\n };\n\n loadProductComponents();\n // eslint-disable-next-line react-hooks/exhaustive-deps -- SDK-1354\n }, []);\n\n if (hasPasskeys && products.length === 1)\n return (\n <Typography variant=\"helper\" color=\"destructive\">\n {DEV('Error: Cannot use Passkeys by itself, please add another product to the config.')}\n </Typography>\n );\n\n const props = { startPasskeyAuth };\n const renderComponent = (key: MainScreenGroup, index: number) => {\n if (Array.isArray(key)) {\n return (\n <Column gap={2} key={index}>\n {key.map(renderComponent)}\n </Column>\n );\n }\n\n if (key === 'divider') {\n return <Divider key={index} />;\n }\n\n const Component = productComponents[key];\n return <Component key={key} {...props} />;\n };\n\n return (\n <Column gap={6}>\n {!options.hideHeaderText && (\n <Typography variant=\"header\" align=\"center\">\n {t({ id: 'login.title', message: 'Sign up or log in' })}\n </Typography>\n )}\n\n {passkeyError && <ErrorText>{passkeyError}</ErrorText>}\n\n {mainScreenGroups.map(renderComponent)}\n </Column>\n );\n};\n","import React, { ReactNode } from 'react';\nimport { AppScreens, useConfig, useGlobalReducer } from './GlobalContextProvider';\nimport { useIsOnlyFloatingOneTap } from '../hooks/useIsOnlyFloatingOneTap';\nimport { usePresentation } from '../components/PresentationConfig';\nimport MainContainer from '../components/molecules/MainContainer';\nimport Logo from '../components/atoms/Logo';\nimport { useProductComponents } from './utils';\nimport { MainScreen } from './screens/Main';\n\nconst AppContainer: () => null | ReactNode = () => {\n const [state] = useGlobalReducer();\n const config = useConfig();\n const { displayWatermark, theme, options } = usePresentation();\n const isOnlyFloatingOneTap = useIsOnlyFloatingOneTap(config);\n const currentScreen = state.screen;\n\n const screenComponentMap = useProductComponents(config.products, 'screens');\n\n if (isOnlyFloatingOneTap) {\n const { FloatingOneTap } = screenComponentMap;\n return <FloatingOneTap />;\n }\n\n // MainScreen is omitted from StytchProduct since it's used by everything\n const ScreenComponent = currentScreen === AppScreens.Main ? MainScreen : screenComponentMap[currentScreen];\n return (\n <MainContainer theme={theme} displayWatermark={displayWatermark}>\n {options.logo && <Logo appLogo={options.logo} />}\n\n <ScreenComponent />\n </MainContainer>\n );\n};\n\nexport default AppContainer;\n","import React, { useState, useEffect } from 'react';\nimport { StytchProjectConfigurationInput } from '@stytch/core/public';\nimport { messages } from '../../messages/en';\nimport { I18nProviderWrapper } from '../components/atoms/I18nProviderWrapper';\nimport { GlobalContextProvider } from './GlobalContextProvider';\nimport Container from './Container';\nimport { DeprecatedSDKConfig, SDKConfig } from '../../types';\nimport { readB2CInternals } from '../../utils/internal';\nimport { usePresentationWithDefault, PresentationContext } from '../components/PresentationConfig';\nimport { logger, RUN_IN_DEV } from '@stytch/core';\n\nexport const AppContainer = <TProjectConfiguration extends StytchProjectConfigurationInput>({\n client,\n config,\n presentation,\n callbacks,\n strings,\n styles,\n}: SDKConfig<TProjectConfiguration> & DeprecatedSDKConfig) => {\n // Read the watermark out of sync storage, then read it out of async storage\n const [displayWatermark, setDisplayWatermark] = useState(() => {\n const { displayWatermark } = readB2CInternals(client).bootstrap.getSync();\n return displayWatermark;\n });\n\n useEffect(() => {\n readB2CInternals(client)\n .bootstrap.getAsync()\n .then((data) => {\n readB2CInternals(client).networkClient.logEvent({\n name: 'render_login_screen',\n details: { options: config, bootstrap: data },\n });\n setDisplayWatermark(data.displayWatermark);\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps -- SDK-1354\n }, [client]);\n\n RUN_IN_DEV(() => {\n if (styles) {\n logger.error(\n 'styles is deprecated and has no effect. Use the presentation prop instead.\\n' +\n 'See https://stytch.com/docs/api-reference/consumer/frontend-sdks/react/upgrade-guide#step-by-step-guide',\n );\n }\n });\n\n const presentationValue = usePresentationWithDefault(presentation, displayWatermark, config.products, 'Products');\n\n return (\n <GlobalContextProvider client={client} config={config} callbacks={callbacks}>\n <PresentationContext.Provider value={presentationValue}>\n <I18nProviderWrapper messages={messages} overrides={strings}>\n <Container />\n </I18nProviderWrapper>\n </PresentationContext.Provider>\n </GlobalContextProvider>\n );\n};\n","import React, { useLayoutEffect, useRef, useState } from 'react';\nimport { StytchProjectConfigurationInput } from '@stytch/core/public';\nimport { injectCssIntoNode, injectGlobalStyle } from '@stytch/internal-style-injector';\nimport { ComponentType } from 'react';\nimport { invariant } from '../utils/invariant';\nimport { useStytch, useIsMounted__INTERNAL } from '../b2c/StytchContext';\nimport { noProviderError, serverRenderError } from '../utils/errors';\nimport { StytchClient } from '../../../StytchClient';\nimport { StytchLoginConfig } from '../../../types';\nimport { createPortal } from 'react-dom';\n\n// Mirrors createB2BComponent and createWebComponent\nexport function createB2CComponent<\n Props extends {\n client: StytchClient<TProjectConfiguration>;\n config?: StytchLoginConfig;\n },\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n>(name: string, Component: ComponentType<Props>) {\n const Wrapped: ComponentType<Omit<Props, 'client'>> = (props) => {\n serverRenderError(name);\n invariant(useIsMounted__INTERNAL(), noProviderError(`<${name} />`));\n\n const client = useStytch<TProjectConfiguration>();\n\n const shadow = props.config?.enableShadowDOM;\n const root = useRef<HTMLDivElement>(null);\n const [mountPoint, setMountPoint] = useState<HTMLDivElement>();\n\n useLayoutEffect(() => {\n if (shadow) {\n if (!root.current || root.current.shadowRoot) return;\n const shadowRoot = root.current.attachShadow({ mode: 'open' });\n const mountPoint = document.createElement('div');\n\n shadowRoot.appendChild(injectCssIntoNode());\n shadowRoot.appendChild(mountPoint);\n\n setMountPoint(mountPoint);\n } else {\n injectGlobalStyle();\n }\n }, [shadow]);\n\n const element = <Component {...(props as Props)} client={client} />;\n if (shadow) {\n return <div ref={root}>{mountPoint && createPortal(element, mountPoint)}</div>;\n } else {\n return element;\n }\n };\n\n Wrapped.displayName = name;\n return Wrapped;\n}\n","import { Callbacks, StringsOptions, StytchProjectConfigurationInput } from '@stytch/core/public';\nimport { AppContainer } from '../../b2c/AppContainer';\nimport { PresentationConfig, StytchLoginConfig } from '../../../types';\nimport { createB2CComponent } from '../bindings/createB2CComponent';\n\nexport interface StytchProps<\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n> extends StringsOptions {\n /**\n * A {@link StytchLoginConfig} object. Add products and product-specific config to this object to change the login methods shown.\n *\n * @example\n * {\n * products: [Products.crypto, Products.otp]\n * }\n *\n * @example\n * {\n * products: [Products.emailMagicLinks]\n * emailMagicLinksOptions: {\n * loginRedirectURL: 'https://example.com/authenticate',\n * signupRedirectURL: 'https://example.com/authenticate',\n * }\n * }\n *\n * @example\n * {\n * products: [Products.oauth]\n * oauthOptions: {\n * providers: [\n * { type: 'google', one_tap: true, position: 'embedded' },\n * { type: 'microsoft' },\n * { type: 'apple' },\n * { type: 'facebook' },\n * ],\n * }\n * }\n */\n config: StytchLoginConfig;\n /**\n * An optional {@link PresentationConfig} to customize the UI presentation.\n */\n presentation?: PresentationConfig;\n /**\n * An optional {@link Callbacks} object.\n *\n * @example\n * {\n * onError: ({message}) => {\n * console.error('Stytch login screen error', message)\n * }\n * }\n *\n * @example\n * {\n * onEvent: ({type, data}) => {\n * if(type === StytchEventType.CryptoWalletAuthenticate) {\n * console.log('Logged in with crypto wallet', data);\n * }\n * }\n * }\n */\n callbacks?: Callbacks<TProjectConfiguration>;\n}\n\n/**\n * The Stytch Login Screen component.\n * This component can only be used with a Stytch UI Client\n * passed into the StytchProvider.\n *\n * See the {@link https://stytch.com/docs/sdks online reference}\n *\n * @example\n * <StytchLogin\n * config={{\n * products: [Products.emailMagicLinks, Products.oauth],\n * emailMagicLinksOptions: {\n * loginRedirectURL: 'https://example.com/authenticate',\n * signupRedirectURL: 'https://example.com/authenticate',\n * },\n * oauthOptions: {\n * providers: [{ type: OAuthProviders.Google }, { type: OAuthProviders.Microsoft }],\n * },\n * }}\n * presentation={{\n * theme: { primary: '#0577CA' },\n * options: {},\n * }}\n * callbacks={{\n * onEvent: (event) => console.log(event)\n * }}\n * />\n */\nexport const StytchLogin = /* @__PURE__ */ createB2CComponent('StytchLogin', AppContainer);\n","import React from 'react';\nimport { DEFAULT_ICON_SIZE, IconProps } from './types';\n\nexport const GenericWalletIcon = ({ size = DEFAULT_ICON_SIZE, ...props }: IconProps) => (\n <svg width={size} height={size} viewBox=\"0 0 20 18\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n d=\"M18.5 4.28V2C18.5 0.9 17.6 0 16.5 0H2.5C1.39 0 0.5 0.9 0.5 2V16C0.5 17.1 1.39 18 2.5 18H16.5C17.6 18 18.5 17.1 18.5 16V13.72C19.09 13.37 19.5 12.74 19.5 12V6C19.5 5.26 19.09 4.63 18.5 4.28ZM17.5 6V12H10.5V6H17.5ZM2.5 16V2H16.5V4H10.5C9.4 4 8.5 4.9 8.5 6V12C8.5 13.1 9.4 14 10.5 14H16.5V16H2.5Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M13.5 10.5C14.3284 10.5 15 9.82843 15 9C15 8.17157 14.3284 7.5 13.5 7.5C12.6716 7.5 12 8.17157 12 9C12 9.82843 12.6716 10.5 13.5 10.5Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n","import React from 'react';\nimport { DEFAULT_ICON_SIZE, IconProps } from './types';\n\nexport const PasskeyIcon = ({ size = DEFAULT_ICON_SIZE, ...props }: IconProps) => (\n <svg width={size} height={size} viewBox=\"0 0 20 20\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n <path\n d=\"M8.75 10C10.8211 10 12.5 8.32107 12.5 6.25C12.5 4.17893 10.8211 2.5 8.75 2.5C6.67893 2.5 5 4.17893 5 6.25C5 8.32107 6.67893 10 8.75 10Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M18.7501 10.0001C18.7519 9.47774 18.6134 8.96445 18.349 8.51388C18.0847 8.06332 17.7041 7.69203 17.2472 7.43881C16.7903 7.18559 16.2738 7.05973 15.7516 7.07439C15.2294 7.08905 14.7207 7.24369 14.2787 7.52214C13.8367 7.8006 13.4776 8.19265 13.239 8.65733C13.0003 9.12202 12.8908 9.64227 12.9219 10.1637C12.9531 10.6852 13.1237 11.1887 13.416 11.6217C13.7082 12.0547 14.1114 12.4012 14.5834 12.6251V17.0835L15.8334 18.3335L17.9167 16.2501L16.6667 15.0001L17.9167 13.7501L16.8834 12.7168C17.4322 12.505 17.9042 12.1323 18.2373 11.6474C18.5704 11.1626 18.7492 10.5884 18.7501 10.0001ZM15.8334 10.0001C15.6686 10.0001 15.5075 9.95126 15.3704 9.85969C15.2334 9.76812 15.1266 9.63797 15.0635 9.4857C15.0004 9.33343 14.9839 9.16587 15.0161 9.00422C15.0482 8.84257 15.1276 8.69409 15.2441 8.57754C15.3607 8.461 15.5092 8.38163 15.6708 8.34948C15.8325 8.31732 16 8.33383 16.1523 8.3969C16.3046 8.45997 16.4347 8.56678 16.5263 8.70382C16.6179 8.84086 16.6667 9.00198 16.6667 9.1668C16.6667 9.38781 16.5789 9.59977 16.4227 9.75605C16.2664 9.91233 16.0544 10.0001 15.8334 10.0001Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M12.0333 11.6833C11.3934 11.398 10.7007 11.2504 10 11.25H7.5C6.17392 11.25 4.90215 11.7768 3.96447 12.7145C3.02678 13.6521 2.5 14.9239 2.5 16.25V17.9167H13.3333V13.325C12.7713 12.8933 12.3248 12.3293 12.0333 11.6833Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n","import { msg } from '@lingui/core/macro';\nimport { useLingui } from '@lingui/react/macro';\nimport React, { useState } from 'react';\nimport { DEFAULT_OTP_EXPIRATION_MINUTES, EmailSentType, CountryCode } from '@stytch/core';\nimport { OTPMethods, StytchEventType, StytchAPIError } from '@stytch/core/public';\nimport { EMAIL_REGEX } from '../../../../../utils';\nimport {\n useConfig,\n useGlobalReducer,\n AppScreens,\n useStytch,\n useErrorCallback,\n useEventCallback,\n} from '../../../GlobalContextProvider';\nimport PhoneInput, { getPhoneNumberProps } from '../../../../components/molecules/PhoneInput';\nimport EmailInput from '../../../../components/molecules/EmailInput';\nimport Button from '../../../../components/atoms/Button';\nimport Column from '../../../../components/atoms/Column';\nimport { readB2CInternals } from '../../../../../utils/internal';\nimport { formatNumberToIncludeCountryCode } from '../../../../../utils/handleParsePhoneNumber';\nimport { getTranslatedError } from '../../../../../utils/getTranslatedError';\nimport { hasProduct } from '../../../utils';\n\nexport const OTPButtonText = {\n [OTPMethods.SMS]: msg({ id: 'button.sms', message: 'Continue with text message' }),\n [OTPMethods.WhatsApp]: msg({ id: 'button.whatsapp', message: 'Continue with WhatsApp' }),\n [OTPMethods.Email]: msg({ id: 'button.emailLogin', message: 'Continue with email' }),\n};\n\nexport const OTPEmailForm = () => {\n const { t } = useLingui();\n const onEvent = useEventCallback();\n const onError = useErrorCallback();\n const stytchClient = useStytch();\n const config = useConfig();\n const [, dispatch] = useGlobalReducer();\n const [email, setEmail] = useState('');\n const [errorMessage, setErrorMessage] = useState('');\n const [isSubmitting, setIsSubmitting] = useState<boolean>(false);\n\n const hasPasskeys = hasProduct(config.products, 'passkeys');\n\n const stopSubmit = (errorText: string) => {\n onError({ message: errorText });\n setIsSubmitting(false);\n return setErrorMessage(errorText);\n };\n\n const handleEmailSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n setIsSubmitting(true);\n\n if (!email.match(EMAIL_REGEX))\n return stopSubmit(t({ id: 'errors.invalidEmail', message: 'Invalid email address.' }));\n\n setErrorMessage('');\n setIsSubmitting(true);\n\n stytchClient.otps.email\n .loginOrCreate(email, {\n expiration_minutes: config.otpOptions?.expirationMinutes ?? DEFAULT_OTP_EXPIRATION_MINUTES,\n login_template_id: config.otpOptions?.loginTemplateId,\n signup_template_id: config.otpOptions?.signupTemplateId,\n locale: config.otpOptions?.locale,\n })\n .then((data) => {\n setIsSubmitting(false);\n onEvent({ type: StytchEventType.OTPsLoginOrCreateEvent, data });\n dispatch({\n type: 'update_otp_state',\n otpState: {\n type: OTPMethods.Email,\n methodId: data.method_id,\n otpDestination: email,\n },\n });\n dispatch({ type: 'transition', screen: AppScreens.OTPAuthenticate });\n readB2CInternals(stytchClient).networkClient.logEvent({\n name: 'email_sent',\n details: { email: email, type: EmailSentType.LoginOrCreateOTP },\n });\n })\n .catch((e: StytchAPIError) => {\n onError(e);\n setIsSubmitting(false);\n setErrorMessage(getTranslatedError(e, t));\n });\n };\n\n return (\n <Column as=\"form\" onSubmit={handleEmailSubmit} gap={4}>\n <EmailInput email={email} setEmail={setEmail} hasPasskeys={hasPasskeys} hideLabel error={errorMessage} />\n <Button variant=\"primary\" loading={isSubmitting} type=\"submit\">\n {t(OTPButtonText[OTPMethods.Email])}\n </Button>\n </Column>\n );\n};\n\nexport const PhoneForm = ({ method }: { method: OTPMethods }) => {\n const { t } = useLingui();\n const onEvent = useEventCallback();\n const onError = useErrorCallback();\n const stytchClient = useStytch();\n const config = useConfig();\n const [, dispatch] = useGlobalReducer();\n const [phoneNumber, setPhoneNumber] = useState('');\n // eslint-disable-next-line lingui/no-unlocalized-strings\n const [country, setCountry] = useState<CountryCode>('US');\n const [errorMessage, setErrorMessage] = useState('');\n const [isSubmitting, setIsSubmitting] = useState<boolean>(false);\n const hasPasskeys = hasProduct(config.products, 'passkeys');\n\n const stopSubmit = (errorText: string) => {\n onError({ message: errorText });\n setIsSubmitting(false);\n setErrorMessage(errorText);\n };\n\n const { parsePhoneNumber, getExampleNumber } = getPhoneNumberProps(readB2CInternals(stytchClient).clientsideServices);\n\n const handlePhoneSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n\n const parsedNumber = await formatNumberToIncludeCountryCode({\n parsePhoneNumber,\n phoneNumber,\n country,\n });\n\n if (!parsedNumber.isValid) {\n return stopSubmit(\n t({\n id: 'error.invalidPhoneNumber',\n message: 'Phone number format is invalid. Ensure the phone number is in the E.164 format.',\n }),\n );\n }\n\n setIsSubmitting(true);\n setErrorMessage('');\n\n stytchClient.otps[method]\n .loginOrCreate(parsedNumber.number, {\n expiration_minutes: config.otpOptions?.expirationMinutes ?? DEFAULT_OTP_EXPIRATION_MINUTES,\n })\n .then((data) => {\n setIsSubmitting(false);\n onEvent({ type: StytchEventType.OTPsLoginOrCreateEvent, data });\n dispatch({\n type: 'update_otp_state',\n otpState: {\n type: method,\n methodId: data.method_id,\n otpDestination: parsedNumber.number,\n },\n });\n dispatch({ type: 'transition', screen: AppScreens.OTPAuthenticate });\n })\n .catch((e: StytchAPIError) => {\n onError(e);\n setIsSubmitting(false);\n setErrorMessage(getTranslatedError(e, t));\n });\n };\n return (\n <Column as=\"form\" gap={4} onSubmit={handlePhoneSubmit}>\n <PhoneInput\n phone={phoneNumber}\n setPhone={setPhoneNumber}\n country={country}\n setCountry={setCountry}\n parsePhoneNumber={parsePhoneNumber}\n getExampleNumber={getExampleNumber}\n hasPasskeys={hasPasskeys}\n error={errorMessage}\n />\n\n <Button variant=\"primary\" loading={isSubmitting} type=\"submit\">\n {t(OTPButtonText[method])}\n </Button>\n </Column>\n );\n};\n","'use strict'\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256)\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i)\n var xc = x.charCodeAt(0)\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i\n }\n var BASE = ALPHABET.length\n var LEADER = ALPHABET.charAt(0)\n var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n function encode (source) {\n if (source instanceof Uint8Array) {\n } else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength)\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source)\n }\n if (!(source instanceof Uint8Array)) { throw new TypeError('Expected Uint8Array') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0\n var length = 0\n var pbegin = 0\n var pend = source.length\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++\n zeroes++\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n var b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0\n b58[it1] = (carry % BASE) >>> 0\n carry = (carry / BASE) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return new Uint8Array() }\n var psz = 0\n // Skip and count leading '1's.\n var zeroes = 0\n var length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size)\n // Process the characters.\n while (source[psz]) {\n // Find code of next character\n var charCode = source.charCodeAt(psz)\n // Base map can not be indexed using char code\n if (charCode > 255) { return }\n // Decode character\n var carry = BASE_MAP[charCode]\n // Invalid character\n if (carry === 255) { return }\n var i = 0\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0\n b256[it3] = (carry % 256) >>> 0\n carry = (carry / 256) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip leading zeroes in b256.\n var it4 = size - length\n while (it4 !== size && b256[it4] === 0) {\n it4++\n }\n var vch = new Uint8Array(zeroes + (size - it4))\n var j = zeroes\n while (it4 !== size) {\n vch[j++] = b256[it4++]\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string)\n if (buffer) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nmodule.exports = base\n","const basex = require('base-x')\nconst ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n\nmodule.exports = basex(ALPHABET)\n","import { MessageDescriptor } from '@lingui/core';\nimport { msg } from '@lingui/core/macro';\nimport { Wallets } from '@stytch/core/public';\nimport { encode } from 'bs58';\n\nimport { GenericWalletIcon } from '../assets';\nimport { cryptoIcons } from '../ui/b2c/components/Icons';\nimport { IconRegistry } from '../ui/components/IconRegistry';\nimport { usePresentation } from '../ui/components/PresentationConfig';\n\ntype ProviderRequest = ({\n method,\n params,\n}: {\n method: 'eth_requestAccounts' | 'personal_sign';\n params?: string[];\n}) => string[] | string;\n\ntype ETHProvider = {\n isMetaMask?: boolean;\n isCoinbaseWallet?: boolean;\n request: ProviderRequest;\n};\n\ndeclare global {\n interface Window {\n solana: {\n isPhantom?: boolean;\n connect: () => { publicKey: { toString: () => string } };\n request: ({\n method,\n params,\n }: {\n method: 'signMessage';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n params: Record<string, any>;\n }) => { signature: Uint8Array };\n };\n\n ethereum: {\n isMetaMask?: boolean;\n isCoinbaseWallet?: boolean;\n request?: ({ method, params }: { method: string; params?: string[] }) => string[] | string;\n providers?: ETHProvider[];\n };\n\n BinanceChain: { request: ProviderRequest };\n }\n}\n\nconst hasMultipleEthereumWallets = () => !!window.ethereum?.providers;\n\nconst hasMetaMask = () =>\n !!(hasMultipleEthereumWallets()\n ? window.ethereum.providers?.find((wallet) => wallet.isMetaMask)\n : window.ethereum.isMetaMask);\n\nconst hasCoinbaseWallet = () =>\n !!(hasMultipleEthereumWallets()\n ? window.ethereum.providers?.find((wallet) => wallet.isCoinbaseWallet)\n : window.ethereum?.isCoinbaseWallet);\n\nconst hasOtherEthereumWallet = () => !hasMetaMask() && !hasCoinbaseWallet() && !!window.ethereum;\n\nconst getMetaMaskProvider = () =>\n hasMultipleEthereumWallets() ? window.ethereum.providers?.find((wallet) => wallet.isMetaMask) : window.ethereum;\n\nconst getCoinbaseProvider = () =>\n hasMultipleEthereumWallets() ? window.ethereum.providers?.find((wallet) => wallet.isCoinbaseWallet) : window.ethereum;\n\nconst getOtherInjectedProvider = () =>\n window.ethereum.providers?.find((wallet) => !wallet.isCoinbaseWallet && !wallet.isMetaMask);\n\ntype CryptoIcon = keyof typeof cryptoIcons;\nexport const walletIcons: Partial<Record<Wallets, CryptoIcon>> = {\n [Wallets.Phantom]: 'phantom',\n [Wallets.Binance]: 'binance',\n [Wallets.Coinbase]: 'coinbase',\n [Wallets.Metamask]: 'metamask',\n};\n\nexport const useCryptoIcon = () => {\n const iconRegistry: IconRegistry<CryptoIcon> = usePresentation().iconRegistry;\n return (wallet: Wallets) => {\n const iconName = walletIcons[wallet];\n return iconName ? iconRegistry[iconName] : GenericWalletIcon;\n };\n};\n\nexport const WalletToText: Record<Wallets, MessageDescriptor> = {\n [Wallets.Phantom]: msg({ id: 'crypto.wallet.phantom', message: 'Phantom' }),\n [Wallets.Binance]: msg({ id: 'crypto.wallet.binance', message: 'Binance' }),\n [Wallets.Coinbase]: msg({ id: 'crypto.wallet.coinbase', message: 'Coinbase' }),\n [Wallets.Metamask]: msg({ id: 'crypto.wallet.metamask', message: 'Metamask' }),\n [Wallets.GenericEthereumWallet]: msg({ id: 'crypto.wallet.otherEthereum', message: 'Other Ethereum Wallet' }),\n [Wallets.GenericSolanaWallet]: msg({ id: 'crypto.wallet.otherSolana', message: 'Other Solana Wallet' }),\n};\n\nexport const isWalletVisible = (wallet: Wallets): boolean => {\n switch (wallet) {\n case Wallets.Metamask:\n return !!window.ethereum && hasMetaMask();\n case Wallets.Phantom:\n return (!!window.solana && window.solana?.isPhantom) ?? false;\n case Wallets.Binance:\n return !!window.BinanceChain;\n case Wallets.Coinbase:\n return !!window.ethereum && hasCoinbaseWallet();\n case Wallets.GenericEthereumWallet:\n return !!window.ethereum && hasOtherEthereumWallet();\n case Wallets.GenericSolanaWallet:\n return !!window.solana && !window.solana.isPhantom;\n default:\n return false;\n }\n};\n\nconst connectWithEthereumProvider = async (request: ProviderRequest): Promise<string> => {\n const [address] = await request({\n method: 'eth_requestAccounts',\n });\n return address;\n};\n\nexport const connectWithWallet = async ({ wallet }: { wallet: Wallets }): Promise<string> => {\n switch (wallet) {\n case Wallets.Metamask: {\n const provider = getMetaMaskProvider();\n return provider?.request ? connectWithEthereumProvider(provider?.request) : '';\n }\n case Wallets.Phantom: {\n const connectResp = await window.solana.connect();\n return connectResp.publicKey.toString();\n }\n case Wallets.Binance: {\n const provider = window.BinanceChain;\n return provider?.request ? connectWithEthereumProvider(provider?.request) : '';\n }\n case Wallets.Coinbase: {\n const provider = getCoinbaseProvider();\n return provider?.request ? connectWithEthereumProvider(provider?.request) : '';\n }\n case Wallets.GenericEthereumWallet: {\n const provider = getOtherInjectedProvider();\n return provider?.request ? connectWithEthereumProvider(provider?.request) : '';\n }\n case Wallets.GenericSolanaWallet: {\n const connectResp = await window.solana.connect();\n return connectResp.publicKey.toString();\n }\n default:\n return '';\n }\n};\n\nconst signMessageWithSolanaProvider = async (message: string): Promise<string> => {\n const encodedMessage = new TextEncoder().encode(message);\n const signResp = await window.solana.request({\n method: 'signMessage',\n params: {\n message: encodedMessage,\n display: 'utf8',\n },\n });\n return encode(signResp.signature);\n};\n\nconst signMessageWithEthereumProvider = async (\n request: ProviderRequest,\n message: string,\n address: string,\n): Promise<string> => {\n const signature = await request({\n method: 'personal_sign',\n params: [message, address],\n });\n return signature as string;\n};\n\nexport const signMessageWithWallet = async ({\n wallet,\n message,\n address,\n}: {\n wallet: Wallets;\n message: string;\n address: string;\n}): Promise<string> => {\n switch (wallet) {\n case Wallets.Phantom:\n case Wallets.GenericSolanaWallet:\n return signMessageWithSolanaProvider(message);\n case Wallets.Metamask: {\n const provider = getMetaMaskProvider();\n return provider?.request ? signMessageWithEthereumProvider(provider?.request, message, address) : '';\n }\n case Wallets.Binance: {\n const provider = window.BinanceChain;\n return provider?.request ? signMessageWithEthereumProvider(provider?.request, message, address) : '';\n }\n case Wallets.Coinbase: {\n const provider = getCoinbaseProvider();\n return provider?.request ? signMessageWithEthereumProvider(provider?.request, message, address) : '';\n }\n case Wallets.GenericEthereumWallet: {\n const provider = getOtherInjectedProvider();\n return provider?.request ? signMessageWithEthereumProvider(provider?.request, message, address) : '';\n }\n default:\n return '';\n }\n};\n\nexport const isSolanaWallet = (wallet: Wallets) => {\n const solanaWallets: Wallets[] = [Wallets.Phantom, Wallets.GenericSolanaWallet];\n return solanaWallets.includes(wallet);\n};\n\nexport const isEthereumWallet = (wallet: Wallets) => {\n const ethWallets: Wallets[] = [Wallets.Binance, Wallets.GenericEthereumWallet, Wallets.Coinbase, Wallets.Metamask];\n return ethWallets.includes(wallet);\n};\n","import * as React from 'react';\nimport { MessageDescriptor } from '@lingui/core';\nimport { msg } from '@lingui/core/macro';\nimport { useLingui } from '@lingui/react/macro';\nimport { Wallets } from '@stytch/core/public';\n\nimport { useConfig, useGlobalReducer, AppScreens } from '../../GlobalContextProvider';\nimport { WalletToText, isWalletVisible, useCryptoIcon } from '../../../../utils/crypto';\nimport ButtonColumn from '../../../components/molecules/ButtonColumn';\nimport Button from '../../../components/atoms/Button';\nimport { GenericWalletIcon } from '../../../../assets';\n\nconst MAX_BUTTONS = 6;\n\nconst walletMessages = {\n [Wallets.Phantom]: msg({ id: 'crypto.wallet.continueWithPhantom', message: 'Continue with Phantom' }),\n [Wallets.Binance]: msg({ id: 'crypto.wallet.continueWithBinance', message: 'Continue with Binance' }),\n [Wallets.Coinbase]: msg({ id: 'crypto.wallet.continueWithCoinbase', message: 'Continue with Coinbase' }),\n [Wallets.Metamask]: msg({ id: 'crypto.wallet.continueWithMetamask', message: 'Continue with Metamask' }),\n [Wallets.GenericEthereumWallet]: msg({\n id: 'crypto.wallet.continueWithEthereum',\n message: 'Continue with Other Ethereum Wallet',\n }),\n [Wallets.GenericSolanaWallet]: msg({\n id: 'crypto.wallet.continueWithSolana',\n message: 'Continue with Other Solana Wallet',\n }),\n} satisfies Record<Wallets, MessageDescriptor>;\n\nexport const CryptoWalletButtons = ({ type }: { type: 'main' | 'other' }) => {\n const { t } = useLingui();\n const [state, dispatch] = useGlobalReducer();\n const config = useConfig();\n\n const getCryptoIcon = useCryptoIcon();\n\n const oAuthOptions = config.oauthOptions?.providers.length ?? 0;\n\n // Crypto Buttons on screen = Maximum Buttons - OAuth Buttons - 1 (Other crypto or set up new wallet)\n const cryptoButtonsOnMainScreen = MAX_BUTTONS - oAuthOptions - 1;\n const onWalletStart = (wallet: Wallets) => {\n dispatch({\n type: 'update_crypto_state',\n cryptoState: {\n ...state.formState.cryptoState,\n walletOption: wallet,\n },\n });\n dispatch({ type: 'transition', screen: AppScreens.CryptoConnect });\n };\n\n const allDetectedWallets = (Object.keys(Wallets) as (keyof typeof Wallets)[]).filter((wallet) =>\n isWalletVisible(Wallets[wallet]),\n );\n\n const renderOtherScreenButton = allDetectedWallets.length > cryptoButtonsOnMainScreen;\n\n const mainWallets = allDetectedWallets.slice(0, cryptoButtonsOnMainScreen);\n const otherWallet = allDetectedWallets.slice(cryptoButtonsOnMainScreen);\n\n const walletsToRender = type === 'main' ? mainWallets : otherWallet;\n\n return (\n <ButtonColumn>\n {walletsToRender.map((wallet) => {\n const walletEnum = Wallets[wallet];\n const Icon = getCryptoIcon(walletEnum);\n return (\n <Button key={wallet} variant=\"outline\" icon={<Icon />} onClick={() => onWalletStart(walletEnum)}>\n {type === 'main' ? t(walletMessages[walletEnum]) : t(WalletToText[walletEnum])}\n </Button>\n );\n })}\n\n {renderOtherScreenButton && type === 'main' ? (\n <Button\n variant=\"outline\"\n icon={<GenericWalletIcon />}\n onClick={() => dispatch({ type: 'transition', screen: AppScreens.CryptoOtherScreen })}\n >\n {t(msg({ id: 'crypto.wallet.continueWithOtherWallet', message: 'Continue with other Crypto Wallet' }))}\n </Button>\n ) : (\n <Button\n variant=\"outline\"\n onClick={() => dispatch({ type: 'transition', screen: AppScreens.CryptoSetupWallet })}\n >\n {t(msg({ id: 'crypto.wallet.setupNewWallet', message: 'Set up a new crypto wallet' }))}\n </Button>\n )}\n </ButtonColumn>\n );\n};\n","import { useLingui } from '@lingui/react/macro';\nimport { useState } from 'react';\nimport { DEFAULT_OTP_EXPIRATION_MINUTES } from '@stytch/core';\nimport { OTPMethods, StytchEventType, StytchSDKAPIError } from '@stytch/core/public';\nimport {\n useConfig,\n useErrorCallback,\n useEventCallback,\n useGlobalReducer,\n useStytch,\n} from '../../GlobalContextProvider';\nimport { convertMagicLinkOptions } from '../../../../utils';\nimport { errorToast } from '../../../components/atoms/Toast';\nimport { getTranslatedError } from '../../../../utils/getTranslatedError';\n\nexport function usePasswordlessAuthenticate() {\n const { t } = useLingui();\n\n const stytchClient = useStytch();\n const { emailMagicLinksOptions, otpOptions } = useConfig();\n const [state, dispatch] = useGlobalReducer();\n const onEvent = useEventCallback();\n const onError = useErrorCallback();\n\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const email = state.formState.passwordState.email;\n\n const sendLink = async () => {\n setIsSubmitting(true);\n\n try {\n const data = await stytchClient.magicLinks.email.loginOrCreate(\n email,\n convertMagicLinkOptions(emailMagicLinksOptions),\n );\n onEvent({ type: StytchEventType.MagicLinkLoginOrCreateEvent, data: { ...data, email } });\n dispatch({ type: 'set_magic_link_email', email: email });\n } catch (e) {\n onError(e as StytchSDKAPIError);\n errorToast({ message: getTranslatedError(e as StytchSDKAPIError, t) });\n throw e;\n } finally {\n setIsSubmitting(false);\n }\n };\n\n const sendCode = async () => {\n setIsSubmitting(true);\n\n try {\n const data = await stytchClient.otps.email.loginOrCreate(email, {\n expiration_minutes: otpOptions?.expirationMinutes ?? DEFAULT_OTP_EXPIRATION_MINUTES,\n locale: otpOptions?.locale,\n });\n onEvent({ type: StytchEventType.OTPsLoginOrCreateEvent, data });\n dispatch({\n type: 'update_otp_state',\n otpState: {\n type: OTPMethods.Email,\n methodId: data.method_id,\n otpDestination: email,\n },\n });\n } catch (e) {\n onError(e as StytchSDKAPIError);\n errorToast({ message: getTranslatedError(e as StytchSDKAPIError, t) });\n throw e;\n } finally {\n setIsSubmitting(false);\n }\n };\n\n return {\n sendLink,\n sendCode,\n isSubmitting,\n };\n}\n","import React, { useState, useEffect } from 'react';\nimport { AppScreens, useConfig, useGlobalReducer, useStytch } from '../../GlobalContextProvider';\nimport { readB2CInternals } from '../../../../utils/internal';\nimport { EmailConfirmationView } from '../../../components/organisms/EmailConfirmationView';\nimport { EmailSentType } from '@stytch/core';\nimport { useCountdown } from '../../../components/atoms/Countdown';\n\nimport { usePasswordlessAuthenticate } from './usePasswordlessAuthenticate';\n\n/**\n * Resolves the best email domain to use as a hint for login\n */\nexport const useEmailDomain = () => {\n const stytch = useStytch();\n const config = useConfig();\n /**\n * Read the emailDomains out of sync storage, then read out of async storage\n * TODO - Should all bootstrap data live in the config somewhere?\n */\n const [emailDomains, setEmailDomains] = useState(() => {\n const { emailDomains } = readB2CInternals(stytch).bootstrap.getSync();\n return emailDomains;\n });\n\n useEffect(() => {\n readB2CInternals(stytch)\n .bootstrap.getAsync()\n .then(({ emailDomains }) => {\n setEmailDomains(emailDomains);\n });\n }, [stytch]);\n\n // If a domain is explicitly passed in, use it!\n if (config.emailMagicLinksOptions?.domainHint) {\n return config.emailMagicLinksOptions?.domainHint;\n }\n // If there can only be one logical choice, use it!\n if (emailDomains?.length === 1) {\n return emailDomains[0];\n }\n // If it isn't clear who sent the email\n // we simply won't provide a hint!\n return null;\n};\n\nexport const EmailConfirmation = ({ showGoBack = true }: { showGoBack?: boolean }) => {\n const stytchClient = useStytch();\n const [state, dispatch] = useGlobalReducer();\n const emailDomain = useEmailDomain();\n const countdown = useCountdown();\n const { sendLink, isSubmitting } = usePasswordlessAuthenticate();\n\n const email =\n state.formState.magicLinkState.email !== ''\n ? state.formState.magicLinkState.email\n : state.formState.passwordState.email;\n\n const goBack = () => {\n dispatch({ type: 'set_magic_link_email', email: '' });\n dispatch({ type: 'transition', screen: AppScreens.Main });\n readB2CInternals(stytchClient).networkClient.logEvent({\n name: 'email_try_again_clicked',\n details: { email: email, type: EmailSentType.LoginOrCreateEML },\n });\n };\n\n return (\n <EmailConfirmationView\n emailDomain={emailDomain}\n email={email}\n goBack={showGoBack ? goBack : undefined}\n resend={sendLink}\n countdown={countdown}\n isSubmitting={isSubmitting}\n />\n );\n};\n","// packages/react/compose-refs/src/compose-refs.tsx\nimport * as React from \"react\";\nfunction setRef(ref, value) {\n if (typeof ref === \"function\") {\n return ref(value);\n } else if (ref !== null && ref !== void 0) {\n ref.current = value;\n }\n}\nfunction composeRefs(...refs) {\n return (node) => {\n let hasCleanup = false;\n const cleanups = refs.map((ref) => {\n const cleanup = setRef(ref, node);\n if (!hasCleanup && typeof cleanup == \"function\") {\n hasCleanup = true;\n }\n return cleanup;\n });\n if (hasCleanup) {\n return () => {\n for (let i = 0; i < cleanups.length; i++) {\n const cleanup = cleanups[i];\n if (typeof cleanup == \"function\") {\n cleanup();\n } else {\n setRef(refs[i], null);\n }\n }\n };\n }\n };\n}\nfunction useComposedRefs(...refs) {\n return React.useCallback(composeRefs(...refs), refs);\n}\nexport {\n composeRefs,\n useComposedRefs\n};\n//# sourceMappingURL=index.mjs.map\n","// src/slot.tsx\nimport * as React from \"react\";\nimport { composeRefs } from \"@radix-ui/react-compose-refs\";\nimport { Fragment as Fragment2, jsx } from \"react/jsx-runtime\";\n// @__NO_SIDE_EFFECTS__\nfunction createSlot(ownerName) {\n const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);\n const Slot2 = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n const childrenArray = React.Children.toArray(children);\n const slottable = childrenArray.find(isSlottable);\n if (slottable) {\n const newElement = slottable.props.children;\n const newChildren = childrenArray.map((child) => {\n if (child === slottable) {\n if (React.Children.count(newElement) > 1) return React.Children.only(null);\n return React.isValidElement(newElement) ? newElement.props.children : null;\n } else {\n return child;\n }\n });\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children: React.isValidElement(newElement) ? React.cloneElement(newElement, void 0, newChildren) : null });\n }\n return /* @__PURE__ */ jsx(SlotClone, { ...slotProps, ref: forwardedRef, children });\n });\n Slot2.displayName = `${ownerName}.Slot`;\n return Slot2;\n}\nvar Slot = /* @__PURE__ */ createSlot(\"Slot\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlotClone(ownerName) {\n const SlotClone = React.forwardRef((props, forwardedRef) => {\n const { children, ...slotProps } = props;\n if (React.isValidElement(children)) {\n const childrenRef = getElementRef(children);\n const props2 = mergeProps(slotProps, children.props);\n if (children.type !== React.Fragment) {\n props2.ref = forwardedRef ? composeRefs(forwardedRef, childrenRef) : childrenRef;\n }\n return React.cloneElement(children, props2);\n }\n return React.Children.count(children) > 1 ? React.Children.only(null) : null;\n });\n SlotClone.displayName = `${ownerName}.SlotClone`;\n return SlotClone;\n}\nvar SLOTTABLE_IDENTIFIER = Symbol(\"radix.slottable\");\n// @__NO_SIDE_EFFECTS__\nfunction createSlottable(ownerName) {\n const Slottable2 = ({ children }) => {\n return /* @__PURE__ */ jsx(Fragment2, { children });\n };\n Slottable2.displayName = `${ownerName}.Slottable`;\n Slottable2.__radixId = SLOTTABLE_IDENTIFIER;\n return Slottable2;\n}\nvar Slottable = /* @__PURE__ */ createSlottable(\"Slottable\");\nfunction isSlottable(child) {\n return React.isValidElement(child) && typeof child.type === \"function\" && \"__radixId\" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;\n}\nfunction mergeProps(slotProps, childProps) {\n const overrideProps = { ...childProps };\n for (const propName in childProps) {\n const slotPropValue = slotProps[propName];\n const childPropValue = childProps[propName];\n const isHandler = /^on[A-Z]/.test(propName);\n if (isHandler) {\n if (slotPropValue && childPropValue) {\n overrideProps[propName] = (...args) => {\n const result = childPropValue(...args);\n slotPropValue(...args);\n return result;\n };\n } else if (slotPropValue) {\n overrideProps[propName] = slotPropValue;\n }\n } else if (propName === \"style\") {\n overrideProps[propName] = { ...slotPropValue, ...childPropValue };\n } else if (propName === \"className\") {\n overrideProps[propName] = [slotPropValue, childPropValue].filter(Boolean).join(\" \");\n }\n }\n return { ...slotProps, ...overrideProps };\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nexport {\n Slot as Root,\n Slot,\n Slottable,\n createSlot,\n createSlottable\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nvar NODES = [\n \"a\",\n \"button\",\n \"div\",\n \"form\",\n \"h2\",\n \"h3\",\n \"img\",\n \"input\",\n \"label\",\n \"li\",\n \"nav\",\n \"ol\",\n \"p\",\n \"select\",\n \"span\",\n \"svg\",\n \"ul\"\n];\nvar Primitive = NODES.reduce((primitive, node) => {\n const Slot = createSlot(`Primitive.${node}`);\n const Node = React.forwardRef((props, forwardedRef) => {\n const { asChild, ...primitiveProps } = props;\n const Comp = asChild ? Slot : node;\n if (typeof window !== \"undefined\") {\n window[Symbol.for(\"radix-ui\")] = true;\n }\n return /* @__PURE__ */ jsx(Comp, { ...primitiveProps, ref: forwardedRef });\n });\n Node.displayName = `Primitive.${node}`;\n return { ...primitive, [node]: Node };\n}, {});\nfunction dispatchDiscreteCustomEvent(target, event) {\n if (target) ReactDOM.flushSync(() => target.dispatchEvent(event));\n}\nvar Root = Primitive;\nexport {\n Primitive,\n Root,\n dispatchDiscreteCustomEvent\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/context/src/create-context.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createContext2(rootComponentName, defaultContext) {\n const Context = React.createContext(defaultContext);\n const Provider = (props) => {\n const { children, ...context } = props;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName) {\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n}\nfunction createContextScope(scopeName, createContextScopeDeps = []) {\n let defaultContexts = [];\n function createContext3(rootComponentName, defaultContext) {\n const BaseContext = React.createContext(defaultContext);\n const index = defaultContexts.length;\n defaultContexts = [...defaultContexts, defaultContext];\n const Provider = (props) => {\n const { scope, children, ...context } = props;\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const value = React.useMemo(() => context, Object.values(context));\n return /* @__PURE__ */ jsx(Context.Provider, { value, children });\n };\n Provider.displayName = rootComponentName + \"Provider\";\n function useContext2(consumerName, scope) {\n const Context = scope?.[scopeName]?.[index] || BaseContext;\n const context = React.useContext(Context);\n if (context) return context;\n if (defaultContext !== void 0) return defaultContext;\n throw new Error(`\\`${consumerName}\\` must be used within \\`${rootComponentName}\\``);\n }\n return [Provider, useContext2];\n }\n const createScope = () => {\n const scopeContexts = defaultContexts.map((defaultContext) => {\n return React.createContext(defaultContext);\n });\n return function useScope(scope) {\n const contexts = scope?.[scopeName] || scopeContexts;\n return React.useMemo(\n () => ({ [`__scope${scopeName}`]: { ...scope, [scopeName]: contexts } }),\n [scope, contexts]\n );\n };\n };\n createScope.scopeName = scopeName;\n return [createContext3, composeContextScopes(createScope, ...createContextScopeDeps)];\n}\nfunction composeContextScopes(...scopes) {\n const baseScope = scopes[0];\n if (scopes.length === 1) return baseScope;\n const createScope = () => {\n const scopeHooks = scopes.map((createScope2) => ({\n useScope: createScope2(),\n scopeName: createScope2.scopeName\n }));\n return function useComposedScopes(overrideScopes) {\n const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName }) => {\n const scopeProps = useScope(overrideScopes);\n const currentScope = scopeProps[`__scope${scopeName}`];\n return { ...nextScopes2, ...currentScope };\n }, {});\n return React.useMemo(() => ({ [`__scope${baseScope.scopeName}`]: nextScopes }), [nextScopes]);\n };\n };\n createScope.scopeName = baseScope.scopeName;\n return createScope;\n}\nexport {\n createContext2 as createContext,\n createContextScope\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/collection-legacy.tsx\nimport React from \"react\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createSlot } from \"@radix-ui/react-slot\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createCollection(name) {\n const PROVIDER_NAME = name + \"CollectionProvider\";\n const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);\n const [CollectionProviderImpl, useCollectionContext] = createCollectionContext(\n PROVIDER_NAME,\n { collectionRef: { current: null }, itemMap: /* @__PURE__ */ new Map() }\n );\n const CollectionProvider = (props) => {\n const { scope, children } = props;\n const ref = React.useRef(null);\n const itemMap = React.useRef(/* @__PURE__ */ new Map()).current;\n return /* @__PURE__ */ jsx(CollectionProviderImpl, { scope, itemMap, collectionRef: ref, children });\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n const CollectionSlotImpl = createSlot(COLLECTION_SLOT_NAME);\n const CollectionSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);\n return /* @__PURE__ */ jsx(CollectionSlotImpl, { ref: composedRefs, children });\n }\n );\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n const CollectionItemSlotImpl = createSlot(ITEM_SLOT_NAME);\n const CollectionItemSlot = React.forwardRef(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n React.useEffect(() => {\n context.itemMap.set(ref, { ref, ...itemData });\n return () => void context.itemMap.delete(ref);\n });\n return /* @__PURE__ */ jsx(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n }\n );\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n function useCollection(scope) {\n const context = useCollectionContext(name + \"CollectionConsumer\", scope);\n const getItems = React.useCallback(() => {\n const collectionNode = context.collectionRef.current;\n if (!collectionNode) return [];\n const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));\n const items = Array.from(context.itemMap.values());\n const orderedItems = items.sort(\n (a, b) => orderedNodes.indexOf(a.ref.current) - orderedNodes.indexOf(b.ref.current)\n );\n return orderedItems;\n }, [context.collectionRef, context.itemMap]);\n return getItems;\n }\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n useCollection,\n createCollectionScope\n ];\n}\n\n// src/collection.tsx\nimport React2 from \"react\";\nimport { createContextScope as createContextScope2 } from \"@radix-ui/react-context\";\nimport { useComposedRefs as useComposedRefs2 } from \"@radix-ui/react-compose-refs\";\nimport { createSlot as createSlot2 } from \"@radix-ui/react-slot\";\n\n// src/ordered-dictionary.ts\nvar __instanciated = /* @__PURE__ */ new WeakMap();\nvar OrderedDict = class _OrderedDict extends Map {\n #keys;\n constructor(entries) {\n super(entries);\n this.#keys = [...super.keys()];\n __instanciated.set(this, true);\n }\n set(key, value) {\n if (__instanciated.get(this)) {\n if (this.has(key)) {\n this.#keys[this.#keys.indexOf(key)] = key;\n } else {\n this.#keys.push(key);\n }\n }\n super.set(key, value);\n return this;\n }\n insert(index, key, value) {\n const has = this.has(key);\n const length = this.#keys.length;\n const relativeIndex = toSafeInteger(index);\n let actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n const safeIndex = actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n if (safeIndex === this.size || has && safeIndex === this.size - 1 || safeIndex === -1) {\n this.set(key, value);\n return this;\n }\n const size = this.size + (has ? 0 : 1);\n if (relativeIndex < 0) {\n actualIndex++;\n }\n const keys = [...this.#keys];\n let nextValue;\n let shouldSkip = false;\n for (let i = actualIndex; i < size; i++) {\n if (actualIndex === i) {\n let nextKey = keys[i];\n if (keys[i] === key) {\n nextKey = keys[i + 1];\n }\n if (has) {\n this.delete(key);\n }\n nextValue = this.get(nextKey);\n this.set(key, value);\n } else {\n if (!shouldSkip && keys[i - 1] === key) {\n shouldSkip = true;\n }\n const currentKey = keys[shouldSkip ? i : i - 1];\n const currentValue = nextValue;\n nextValue = this.get(currentKey);\n this.delete(currentKey);\n this.set(currentKey, currentValue);\n }\n }\n return this;\n }\n with(index, key, value) {\n const copy = new _OrderedDict(this);\n copy.insert(index, key, value);\n return copy;\n }\n before(key) {\n const index = this.#keys.indexOf(key) - 1;\n if (index < 0) {\n return void 0;\n }\n return this.entryAt(index);\n }\n /**\n * Sets a new key-value pair at the position before the given key.\n */\n setBefore(key, newKey, value) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index, newKey, value);\n }\n after(key) {\n let index = this.#keys.indexOf(key);\n index = index === -1 || index === this.size - 1 ? -1 : index + 1;\n if (index === -1) {\n return void 0;\n }\n return this.entryAt(index);\n }\n /**\n * Sets a new key-value pair at the position after the given key.\n */\n setAfter(key, newKey, value) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index + 1, newKey, value);\n }\n first() {\n return this.entryAt(0);\n }\n last() {\n return this.entryAt(-1);\n }\n clear() {\n this.#keys = [];\n return super.clear();\n }\n delete(key) {\n const deleted = super.delete(key);\n if (deleted) {\n this.#keys.splice(this.#keys.indexOf(key), 1);\n }\n return deleted;\n }\n deleteAt(index) {\n const key = this.keyAt(index);\n if (key !== void 0) {\n return this.delete(key);\n }\n return false;\n }\n at(index) {\n const key = at(this.#keys, index);\n if (key !== void 0) {\n return this.get(key);\n }\n }\n entryAt(index) {\n const key = at(this.#keys, index);\n if (key !== void 0) {\n return [key, this.get(key)];\n }\n }\n indexOf(key) {\n return this.#keys.indexOf(key);\n }\n keyAt(index) {\n return at(this.#keys, index);\n }\n from(key, offset) {\n const index = this.indexOf(key);\n if (index === -1) {\n return void 0;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.at(dest);\n }\n keyFrom(key, offset) {\n const index = this.indexOf(key);\n if (index === -1) {\n return void 0;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.keyAt(dest);\n }\n find(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return entry;\n }\n index++;\n }\n return void 0;\n }\n findIndex(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return index;\n }\n index++;\n }\n return -1;\n }\n filter(predicate, thisArg) {\n const entries = [];\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n entries.push(entry);\n }\n index++;\n }\n return new _OrderedDict(entries);\n }\n map(callbackfn, thisArg) {\n const entries = [];\n let index = 0;\n for (const entry of this) {\n entries.push([entry[0], Reflect.apply(callbackfn, thisArg, [entry, index, this])]);\n index++;\n }\n return new _OrderedDict(entries);\n }\n reduce(...args) {\n const [callbackfn, initialValue] = args;\n let index = 0;\n let accumulator = initialValue ?? this.at(0);\n for (const entry of this) {\n if (index === 0 && args.length === 1) {\n accumulator = entry;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n index++;\n }\n return accumulator;\n }\n reduceRight(...args) {\n const [callbackfn, initialValue] = args;\n let accumulator = initialValue ?? this.at(-1);\n for (let index = this.size - 1; index >= 0; index--) {\n const entry = this.at(index);\n if (index === this.size - 1 && args.length === 1) {\n accumulator = entry;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n }\n return accumulator;\n }\n toSorted(compareFn) {\n const entries = [...this.entries()].sort(compareFn);\n return new _OrderedDict(entries);\n }\n toReversed() {\n const reversed = new _OrderedDict();\n for (let index = this.size - 1; index >= 0; index--) {\n const key = this.keyAt(index);\n const element = this.get(key);\n reversed.set(key, element);\n }\n return reversed;\n }\n toSpliced(...args) {\n const entries = [...this.entries()];\n entries.splice(...args);\n return new _OrderedDict(entries);\n }\n slice(start, end) {\n const result = new _OrderedDict();\n let stop = this.size - 1;\n if (start === void 0) {\n return result;\n }\n if (start < 0) {\n start = start + this.size;\n }\n if (end !== void 0 && end > 0) {\n stop = end - 1;\n }\n for (let index = start; index <= stop; index++) {\n const key = this.keyAt(index);\n const element = this.get(key);\n result.set(key, element);\n }\n return result;\n }\n every(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (!Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return false;\n }\n index++;\n }\n return true;\n }\n some(predicate, thisArg) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return true;\n }\n index++;\n }\n return false;\n }\n};\nfunction at(array, index) {\n if (\"at\" in Array.prototype) {\n return Array.prototype.at.call(array, index);\n }\n const actualIndex = toSafeIndex(array, index);\n return actualIndex === -1 ? void 0 : array[actualIndex];\n}\nfunction toSafeIndex(array, index) {\n const length = array.length;\n const relativeIndex = toSafeInteger(index);\n const actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n return actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n}\nfunction toSafeInteger(number) {\n return number !== number || number === 0 ? 0 : Math.trunc(number);\n}\n\n// src/collection.tsx\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nfunction createCollection2(name) {\n const PROVIDER_NAME = name + \"CollectionProvider\";\n const [createCollectionContext, createCollectionScope] = createContextScope2(PROVIDER_NAME);\n const [CollectionContextProvider, useCollectionContext] = createCollectionContext(\n PROVIDER_NAME,\n {\n collectionElement: null,\n collectionRef: { current: null },\n collectionRefObject: { current: null },\n itemMap: new OrderedDict(),\n setItemMap: () => void 0\n }\n );\n const CollectionProvider = ({ state, ...props }) => {\n return state ? /* @__PURE__ */ jsx2(CollectionProviderImpl, { ...props, state }) : /* @__PURE__ */ jsx2(CollectionInit, { ...props });\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n const CollectionInit = (props) => {\n const state = useInitCollection();\n return /* @__PURE__ */ jsx2(CollectionProviderImpl, { ...props, state });\n };\n CollectionInit.displayName = PROVIDER_NAME + \"Init\";\n const CollectionProviderImpl = (props) => {\n const { scope, children, state } = props;\n const ref = React2.useRef(null);\n const [collectionElement, setCollectionElement] = React2.useState(\n null\n );\n const composeRefs = useComposedRefs2(ref, setCollectionElement);\n const [itemMap, setItemMap] = state;\n React2.useEffect(() => {\n if (!collectionElement) return;\n const observer = getChildListObserver(() => {\n });\n observer.observe(collectionElement, {\n childList: true,\n subtree: true\n });\n return () => {\n observer.disconnect();\n };\n }, [collectionElement]);\n return /* @__PURE__ */ jsx2(\n CollectionContextProvider,\n {\n scope,\n itemMap,\n setItemMap,\n collectionRef: composeRefs,\n collectionRefObject: ref,\n collectionElement,\n children\n }\n );\n };\n CollectionProviderImpl.displayName = PROVIDER_NAME + \"Impl\";\n const COLLECTION_SLOT_NAME = name + \"CollectionSlot\";\n const CollectionSlotImpl = createSlot2(COLLECTION_SLOT_NAME);\n const CollectionSlot = React2.forwardRef(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs2(forwardedRef, context.collectionRef);\n return /* @__PURE__ */ jsx2(CollectionSlotImpl, { ref: composedRefs, children });\n }\n );\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n const ITEM_SLOT_NAME = name + \"CollectionItemSlot\";\n const ITEM_DATA_ATTR = \"data-radix-collection-item\";\n const CollectionItemSlotImpl = createSlot2(ITEM_SLOT_NAME);\n const CollectionItemSlot = React2.forwardRef(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React2.useRef(null);\n const [element, setElement] = React2.useState(null);\n const composedRefs = useComposedRefs2(forwardedRef, ref, setElement);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n const { setItemMap } = context;\n const itemDataRef = React2.useRef(itemData);\n if (!shallowEqual(itemDataRef.current, itemData)) {\n itemDataRef.current = itemData;\n }\n const memoizedItemData = itemDataRef.current;\n React2.useEffect(() => {\n const itemData2 = memoizedItemData;\n setItemMap((map) => {\n if (!element) {\n return map;\n }\n if (!map.has(element)) {\n map.set(element, { ...itemData2, element });\n return map.toSorted(sortByDocumentPosition);\n }\n return map.set(element, { ...itemData2, element }).toSorted(sortByDocumentPosition);\n });\n return () => {\n setItemMap((map) => {\n if (!element || !map.has(element)) {\n return map;\n }\n map.delete(element);\n return new OrderedDict(map);\n });\n };\n }, [element, memoizedItemData, setItemMap]);\n return /* @__PURE__ */ jsx2(CollectionItemSlotImpl, { ...{ [ITEM_DATA_ATTR]: \"\" }, ref: composedRefs, children });\n }\n );\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n function useInitCollection() {\n return React2.useState(new OrderedDict());\n }\n function useCollection(scope) {\n const { itemMap } = useCollectionContext(name + \"CollectionConsumer\", scope);\n return itemMap;\n }\n const functions = {\n createCollectionScope,\n useCollection,\n useInitCollection\n };\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n functions\n ];\n}\nfunction shallowEqual(a, b) {\n if (a === b) return true;\n if (typeof a !== \"object\" || typeof b !== \"object\") return false;\n if (a == null || b == null) return false;\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n for (const key of keysA) {\n if (!Object.prototype.hasOwnProperty.call(b, key)) return false;\n if (a[key] !== b[key]) return false;\n }\n return true;\n}\nfunction isElementPreceding(a, b) {\n return !!(b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING);\n}\nfunction sortByDocumentPosition(a, b) {\n return !a[1].element || !b[1].element ? 0 : isElementPreceding(a[1].element, b[1].element) ? -1 : 1;\n}\nfunction getChildListObserver(callback) {\n const observer = new MutationObserver((mutationsList) => {\n for (const mutation of mutationsList) {\n if (mutation.type === \"childList\") {\n callback();\n return;\n }\n }\n });\n return observer;\n}\nexport {\n createCollection,\n createCollection2 as unstable_createCollection\n};\n//# sourceMappingURL=index.mjs.map\n","// src/primitive.tsx\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nfunction composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {\n return function handleEvent(event) {\n originalEventHandler?.(event);\n if (checkForDefaultPrevented === false || !event.defaultPrevented) {\n return ourEventHandler?.(event);\n }\n };\n}\nfunction getOwnerWindow(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access window outside of the DOM\");\n }\n return element?.ownerDocument?.defaultView ?? window;\n}\nfunction getOwnerDocument(element) {\n if (!canUseDOM) {\n throw new Error(\"Cannot access document outside of the DOM\");\n }\n return element?.ownerDocument ?? document;\n}\nfunction getActiveElement(node, activeDescendant = false) {\n const { activeElement } = getOwnerDocument(node);\n if (!activeElement?.nodeName) {\n return null;\n }\n if (isFrame(activeElement) && activeElement.contentDocument) {\n return getActiveElement(activeElement.contentDocument.body, activeDescendant);\n }\n if (activeDescendant) {\n const id = activeElement.getAttribute(\"aria-activedescendant\");\n if (id) {\n const element = getOwnerDocument(activeElement).getElementById(id);\n if (element) {\n return element;\n }\n }\n }\n return activeElement;\n}\nfunction isFrame(element) {\n return element.tagName === \"IFRAME\";\n}\nexport {\n canUseDOM,\n composeEventHandlers,\n getActiveElement,\n getOwnerDocument,\n getOwnerWindow,\n isFrame\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-layout-effect/src/use-layout-effect.tsx\nimport * as React from \"react\";\nvar useLayoutEffect2 = globalThis?.document ? React.useLayoutEffect : () => {\n};\nexport {\n useLayoutEffect2 as useLayoutEffect\n};\n//# sourceMappingURL=index.mjs.map\n","// src/use-controllable-state.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useInsertionEffect = React[\" useInsertionEffect \".trim().toString()] || useLayoutEffect;\nfunction useControllableState({\n prop,\n defaultProp,\n onChange = () => {\n },\n caller\n}) {\n const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({\n defaultProp,\n onChange\n });\n const isControlled = prop !== void 0;\n const value = isControlled ? prop : uncontrolledProp;\n if (true) {\n const isControlledRef = React.useRef(prop !== void 0);\n React.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const setValue = React.useCallback(\n (nextValue) => {\n if (isControlled) {\n const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue;\n if (value2 !== prop) {\n onChangeRef.current?.(value2);\n }\n } else {\n setUncontrolledProp(nextValue);\n }\n },\n [isControlled, prop, setUncontrolledProp, onChangeRef]\n );\n return [value, setValue];\n}\nfunction useUncontrolledState({\n defaultProp,\n onChange\n}) {\n const [value, setValue] = React.useState(defaultProp);\n const prevValueRef = React.useRef(value);\n const onChangeRef = React.useRef(onChange);\n useInsertionEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n React.useEffect(() => {\n if (prevValueRef.current !== value) {\n onChangeRef.current?.(value);\n prevValueRef.current = value;\n }\n }, [value, prevValueRef]);\n return [value, setValue, onChangeRef];\n}\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\n// src/use-controllable-state-reducer.tsx\nimport * as React2 from \"react\";\nimport { useEffectEvent } from \"@radix-ui/react-use-effect-event\";\nvar SYNC_STATE = Symbol(\"RADIX:SYNC_STATE\");\nfunction useControllableStateReducer(reducer, userArgs, initialArg, init) {\n const { prop: controlledState, defaultProp, onChange: onChangeProp, caller } = userArgs;\n const isControlled = controlledState !== void 0;\n const onChange = useEffectEvent(onChangeProp);\n if (true) {\n const isControlledRef = React2.useRef(controlledState !== void 0);\n React2.useEffect(() => {\n const wasControlled = isControlledRef.current;\n if (wasControlled !== isControlled) {\n const from = wasControlled ? \"controlled\" : \"uncontrolled\";\n const to = isControlled ? \"controlled\" : \"uncontrolled\";\n console.warn(\n `${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`\n );\n }\n isControlledRef.current = isControlled;\n }, [isControlled, caller]);\n }\n const args = [{ ...initialArg, state: defaultProp }];\n if (init) {\n args.push(init);\n }\n const [internalState, dispatch] = React2.useReducer(\n (state2, action) => {\n if (action.type === SYNC_STATE) {\n return { ...state2, state: action.state };\n }\n const next = reducer(state2, action);\n if (isControlled && !Object.is(next.state, state2.state)) {\n onChange(next.state);\n }\n return next;\n },\n ...args\n );\n const uncontrolledState = internalState.state;\n const prevValueRef = React2.useRef(uncontrolledState);\n React2.useEffect(() => {\n if (prevValueRef.current !== uncontrolledState) {\n prevValueRef.current = uncontrolledState;\n if (!isControlled) {\n onChange(uncontrolledState);\n }\n }\n }, [onChange, uncontrolledState, prevValueRef, isControlled]);\n const state = React2.useMemo(() => {\n const isControlled2 = controlledState !== void 0;\n if (isControlled2) {\n return { ...internalState, state: controlledState };\n }\n return internalState;\n }, [internalState, controlledState]);\n React2.useEffect(() => {\n if (isControlled && !Object.is(controlledState, internalState.state)) {\n dispatch({ type: SYNC_STATE, state: controlledState });\n }\n }, [controlledState, internalState.state, isControlled]);\n return [state, dispatch];\n}\nexport {\n useControllableState,\n useControllableStateReducer\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/presence.tsx\nimport * as React2 from \"react\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\n\n// src/use-state-machine.tsx\nimport * as React from \"react\";\nfunction useStateMachine(initialState, machine) {\n return React.useReducer((state, event) => {\n const nextState = machine[state][event];\n return nextState ?? state;\n }, initialState);\n}\n\n// src/presence.tsx\nvar Presence = (props) => {\n const { present, children } = props;\n const presence = usePresence(present);\n const child = typeof children === \"function\" ? children({ present: presence.isPresent }) : React2.Children.only(children);\n const ref = useComposedRefs(presence.ref, getElementRef(child));\n const forceMount = typeof children === \"function\";\n return forceMount || presence.isPresent ? React2.cloneElement(child, { ref }) : null;\n};\nPresence.displayName = \"Presence\";\nfunction usePresence(present) {\n const [node, setNode] = React2.useState();\n const stylesRef = React2.useRef(null);\n const prevPresentRef = React2.useRef(present);\n const prevAnimationNameRef = React2.useRef(\"none\");\n const initialState = present ? \"mounted\" : \"unmounted\";\n const [state, send] = useStateMachine(initialState, {\n mounted: {\n UNMOUNT: \"unmounted\",\n ANIMATION_OUT: \"unmountSuspended\"\n },\n unmountSuspended: {\n MOUNT: \"mounted\",\n ANIMATION_END: \"unmounted\"\n },\n unmounted: {\n MOUNT: \"mounted\"\n }\n });\n React2.useEffect(() => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n prevAnimationNameRef.current = state === \"mounted\" ? currentAnimationName : \"none\";\n }, [state]);\n useLayoutEffect(() => {\n const styles = stylesRef.current;\n const wasPresent = prevPresentRef.current;\n const hasPresentChanged = wasPresent !== present;\n if (hasPresentChanged) {\n const prevAnimationName = prevAnimationNameRef.current;\n const currentAnimationName = getAnimationName(styles);\n if (present) {\n send(\"MOUNT\");\n } else if (currentAnimationName === \"none\" || styles?.display === \"none\") {\n send(\"UNMOUNT\");\n } else {\n const isAnimating = prevAnimationName !== currentAnimationName;\n if (wasPresent && isAnimating) {\n send(\"ANIMATION_OUT\");\n } else {\n send(\"UNMOUNT\");\n }\n }\n prevPresentRef.current = present;\n }\n }, [present, send]);\n useLayoutEffect(() => {\n if (node) {\n let timeoutId;\n const ownerWindow = node.ownerDocument.defaultView ?? window;\n const handleAnimationEnd = (event) => {\n const currentAnimationName = getAnimationName(stylesRef.current);\n const isCurrentAnimation = currentAnimationName.includes(CSS.escape(event.animationName));\n if (event.target === node && isCurrentAnimation) {\n send(\"ANIMATION_END\");\n if (!prevPresentRef.current) {\n const currentFillMode = node.style.animationFillMode;\n node.style.animationFillMode = \"forwards\";\n timeoutId = ownerWindow.setTimeout(() => {\n if (node.style.animationFillMode === \"forwards\") {\n node.style.animationFillMode = currentFillMode;\n }\n });\n }\n }\n };\n const handleAnimationStart = (event) => {\n if (event.target === node) {\n prevAnimationNameRef.current = getAnimationName(stylesRef.current);\n }\n };\n node.addEventListener(\"animationstart\", handleAnimationStart);\n node.addEventListener(\"animationcancel\", handleAnimationEnd);\n node.addEventListener(\"animationend\", handleAnimationEnd);\n return () => {\n ownerWindow.clearTimeout(timeoutId);\n node.removeEventListener(\"animationstart\", handleAnimationStart);\n node.removeEventListener(\"animationcancel\", handleAnimationEnd);\n node.removeEventListener(\"animationend\", handleAnimationEnd);\n };\n } else {\n send(\"ANIMATION_END\");\n }\n }, [node, send]);\n return {\n isPresent: [\"mounted\", \"unmountSuspended\"].includes(state),\n ref: React2.useCallback((node2) => {\n stylesRef.current = node2 ? getComputedStyle(node2) : null;\n setNode(node2);\n }, [])\n };\n}\nfunction getAnimationName(styles) {\n return styles?.animationName || \"none\";\n}\nfunction getElementRef(element) {\n let getter = Object.getOwnPropertyDescriptor(element.props, \"ref\")?.get;\n let mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.ref;\n }\n getter = Object.getOwnPropertyDescriptor(element, \"ref\")?.get;\n mayWarn = getter && \"isReactWarning\" in getter && getter.isReactWarning;\n if (mayWarn) {\n return element.props.ref;\n }\n return element.props.ref || element.ref;\n}\nvar Root = Presence;\nexport {\n Presence,\n Root\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/id/src/id.tsx\nimport * as React from \"react\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nvar useReactId = React[\" useId \".trim().toString()] || (() => void 0);\nvar count = 0;\nfunction useId(deterministicId) {\n const [id, setId] = React.useState(useReactId());\n useLayoutEffect(() => {\n if (!deterministicId) setId((reactId) => reactId ?? String(count++));\n }, [deterministicId]);\n return deterministicId || (id ? `radix-${id}` : \"\");\n}\nexport {\n useId\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/direction/src/direction.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nvar DirectionContext = React.createContext(void 0);\nvar DirectionProvider = (props) => {\n const { dir, children } = props;\n return /* @__PURE__ */ jsx(DirectionContext.Provider, { value: dir, children });\n};\nfunction useDirection(localDir) {\n const globalDir = React.useContext(DirectionContext);\n return localDir || globalDir || \"ltr\";\n}\nvar Provider = DirectionProvider;\nexport {\n DirectionProvider,\n Provider,\n useDirection\n};\n//# sourceMappingURL=index.mjs.map\n","// packages/react/use-callback-ref/src/use-callback-ref.tsx\nimport * as React from \"react\";\nfunction useCallbackRef(callback) {\n const callbackRef = React.useRef(callback);\n React.useEffect(() => {\n callbackRef.current = callback;\n });\n return React.useMemo(() => (...args) => callbackRef.current?.(...args), []);\n}\nexport {\n useCallbackRef\n};\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/roving-focus-group.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createCollection } from \"@radix-ui/react-collection\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { jsx } from \"react/jsx-runtime\";\nvar ENTRY_FOCUS = \"rovingFocusGroup.onEntryFocus\";\nvar EVENT_OPTIONS = { bubbles: false, cancelable: true };\nvar GROUP_NAME = \"RovingFocusGroup\";\nvar [Collection, useCollection, createCollectionScope] = createCollection(GROUP_NAME);\nvar [createRovingFocusGroupContext, createRovingFocusGroupScope] = createContextScope(\n GROUP_NAME,\n [createCollectionScope]\n);\nvar [RovingFocusProvider, useRovingFocusContext] = createRovingFocusGroupContext(GROUP_NAME);\nvar RovingFocusGroup = React.forwardRef(\n (props, forwardedRef) => {\n return /* @__PURE__ */ jsx(Collection.Provider, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(Collection.Slot, { scope: props.__scopeRovingFocusGroup, children: /* @__PURE__ */ jsx(RovingFocusGroupImpl, { ...props, ref: forwardedRef }) }) });\n }\n);\nRovingFocusGroup.displayName = GROUP_NAME;\nvar RovingFocusGroupImpl = React.forwardRef((props, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n orientation,\n loop = false,\n dir,\n currentTabStopId: currentTabStopIdProp,\n defaultCurrentTabStopId,\n onCurrentTabStopIdChange,\n onEntryFocus,\n preventScrollOnEntryFocus = false,\n ...groupProps\n } = props;\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const direction = useDirection(dir);\n const [currentTabStopId, setCurrentTabStopId] = useControllableState({\n prop: currentTabStopIdProp,\n defaultProp: defaultCurrentTabStopId ?? null,\n onChange: onCurrentTabStopIdChange,\n caller: GROUP_NAME\n });\n const [isTabbingBackOut, setIsTabbingBackOut] = React.useState(false);\n const handleEntryFocus = useCallbackRef(onEntryFocus);\n const getItems = useCollection(__scopeRovingFocusGroup);\n const isClickFocusRef = React.useRef(false);\n const [focusableItemsCount, setFocusableItemsCount] = React.useState(0);\n React.useEffect(() => {\n const node = ref.current;\n if (node) {\n node.addEventListener(ENTRY_FOCUS, handleEntryFocus);\n return () => node.removeEventListener(ENTRY_FOCUS, handleEntryFocus);\n }\n }, [handleEntryFocus]);\n return /* @__PURE__ */ jsx(\n RovingFocusProvider,\n {\n scope: __scopeRovingFocusGroup,\n orientation,\n dir: direction,\n loop,\n currentTabStopId,\n onItemFocus: React.useCallback(\n (tabStopId) => setCurrentTabStopId(tabStopId),\n [setCurrentTabStopId]\n ),\n onItemShiftTab: React.useCallback(() => setIsTabbingBackOut(true), []),\n onFocusableItemAdd: React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount + 1),\n []\n ),\n onFocusableItemRemove: React.useCallback(\n () => setFocusableItemsCount((prevCount) => prevCount - 1),\n []\n ),\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n tabIndex: isTabbingBackOut || focusableItemsCount === 0 ? -1 : 0,\n \"data-orientation\": orientation,\n ...groupProps,\n ref: composedRefs,\n style: { outline: \"none\", ...props.style },\n onMouseDown: composeEventHandlers(props.onMouseDown, () => {\n isClickFocusRef.current = true;\n }),\n onFocus: composeEventHandlers(props.onFocus, (event) => {\n const isKeyboardFocus = !isClickFocusRef.current;\n if (event.target === event.currentTarget && isKeyboardFocus && !isTabbingBackOut) {\n const entryFocusEvent = new CustomEvent(ENTRY_FOCUS, EVENT_OPTIONS);\n event.currentTarget.dispatchEvent(entryFocusEvent);\n if (!entryFocusEvent.defaultPrevented) {\n const items = getItems().filter((item) => item.focusable);\n const activeItem = items.find((item) => item.active);\n const currentItem = items.find((item) => item.id === currentTabStopId);\n const candidateItems = [activeItem, currentItem, ...items].filter(\n Boolean\n );\n const candidateNodes = candidateItems.map((item) => item.ref.current);\n focusFirst(candidateNodes, preventScrollOnEntryFocus);\n }\n }\n isClickFocusRef.current = false;\n }),\n onBlur: composeEventHandlers(props.onBlur, () => setIsTabbingBackOut(false))\n }\n )\n }\n );\n});\nvar ITEM_NAME = \"RovingFocusGroupItem\";\nvar RovingFocusGroupItem = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRovingFocusGroup,\n focusable = true,\n active = false,\n tabStopId,\n children,\n ...itemProps\n } = props;\n const autoId = useId();\n const id = tabStopId || autoId;\n const context = useRovingFocusContext(ITEM_NAME, __scopeRovingFocusGroup);\n const isCurrentTabStop = context.currentTabStopId === id;\n const getItems = useCollection(__scopeRovingFocusGroup);\n const { onFocusableItemAdd, onFocusableItemRemove, currentTabStopId } = context;\n React.useEffect(() => {\n if (focusable) {\n onFocusableItemAdd();\n return () => onFocusableItemRemove();\n }\n }, [focusable, onFocusableItemAdd, onFocusableItemRemove]);\n return /* @__PURE__ */ jsx(\n Collection.ItemSlot,\n {\n scope: __scopeRovingFocusGroup,\n id,\n focusable,\n active,\n children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n tabIndex: isCurrentTabStop ? 0 : -1,\n \"data-orientation\": context.orientation,\n ...itemProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!focusable) event.preventDefault();\n else context.onItemFocus(id);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => context.onItemFocus(id)),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if (event.key === \"Tab\" && event.shiftKey) {\n context.onItemShiftTab();\n return;\n }\n if (event.target !== event.currentTarget) return;\n const focusIntent = getFocusIntent(event, context.orientation, context.dir);\n if (focusIntent !== void 0) {\n if (event.metaKey || event.ctrlKey || event.altKey || event.shiftKey) return;\n event.preventDefault();\n const items = getItems().filter((item) => item.focusable);\n let candidateNodes = items.map((item) => item.ref.current);\n if (focusIntent === \"last\") candidateNodes.reverse();\n else if (focusIntent === \"prev\" || focusIntent === \"next\") {\n if (focusIntent === \"prev\") candidateNodes.reverse();\n const currentIndex = candidateNodes.indexOf(event.currentTarget);\n candidateNodes = context.loop ? wrapArray(candidateNodes, currentIndex + 1) : candidateNodes.slice(currentIndex + 1);\n }\n setTimeout(() => focusFirst(candidateNodes));\n }\n }),\n children: typeof children === \"function\" ? children({ isCurrentTabStop, hasTabStop: currentTabStopId != null }) : children\n }\n )\n }\n );\n }\n);\nRovingFocusGroupItem.displayName = ITEM_NAME;\nvar MAP_KEY_TO_FOCUS_INTENT = {\n ArrowLeft: \"prev\",\n ArrowUp: \"prev\",\n ArrowRight: \"next\",\n ArrowDown: \"next\",\n PageUp: \"first\",\n Home: \"first\",\n PageDown: \"last\",\n End: \"last\"\n};\nfunction getDirectionAwareKey(key, dir) {\n if (dir !== \"rtl\") return key;\n return key === \"ArrowLeft\" ? \"ArrowRight\" : key === \"ArrowRight\" ? \"ArrowLeft\" : key;\n}\nfunction getFocusIntent(event, orientation, dir) {\n const key = getDirectionAwareKey(event.key, dir);\n if (orientation === \"vertical\" && [\"ArrowLeft\", \"ArrowRight\"].includes(key)) return void 0;\n if (orientation === \"horizontal\" && [\"ArrowUp\", \"ArrowDown\"].includes(key)) return void 0;\n return MAP_KEY_TO_FOCUS_INTENT[key];\n}\nfunction focusFirst(candidates, preventScroll = false) {\n const PREVIOUSLY_FOCUSED_ELEMENT = getActiveElement();\n for (const candidate of candidates) {\n if (candidate === PREVIOUSLY_FOCUSED_ELEMENT) return;\n candidate.focus({ preventScroll });\n if (getActiveElement() !== PREVIOUSLY_FOCUSED_ELEMENT) return;\n }\n}\nfunction wrapArray(array, startIndex) {\n return array.map((_, index) => array[(startIndex + index) % array.length]);\n}\nvar Root = RovingFocusGroup;\nvar Item = RovingFocusGroupItem;\nexport {\n Item,\n Root,\n RovingFocusGroup,\n RovingFocusGroupItem,\n createRovingFocusGroupScope\n};\nfunction getActiveElement(root = document) {\n const activeElement = root.activeElement;\n return activeElement && activeElement.shadowRoot ? getActiveElement(activeElement.shadowRoot) : activeElement;\n}\n//# sourceMappingURL=index.mjs.map\n","\"use client\";\n\n// src/tabs.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { useDirection } from \"@radix-ui/react-direction\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar TABS_NAME = \"Tabs\";\nvar [createTabsContext, createTabsScope] = createContextScope(TABS_NAME, [\n createRovingFocusGroupScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar [TabsProvider, useTabsContext] = createTabsContext(TABS_NAME);\nvar Tabs = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeTabs,\n value: valueProp,\n onValueChange,\n defaultValue,\n orientation = \"horizontal\",\n dir,\n activationMode = \"automatic\",\n ...tabsProps\n } = props;\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n onChange: onValueChange,\n defaultProp: defaultValue ?? \"\",\n caller: TABS_NAME\n });\n return /* @__PURE__ */ jsx(\n TabsProvider,\n {\n scope: __scopeTabs,\n baseId: useId(),\n value,\n onValueChange: setValue,\n orientation,\n dir: direction,\n activationMode,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n dir: direction,\n \"data-orientation\": orientation,\n ...tabsProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabs.displayName = TABS_NAME;\nvar TAB_LIST_NAME = \"TabsList\";\nvar TabsList = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, loop = true, ...listProps } = props;\n const context = useTabsContext(TAB_LIST_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n orientation: context.orientation,\n dir: context.dir,\n loop,\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n role: \"tablist\",\n \"aria-orientation\": context.orientation,\n ...listProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nTabsList.displayName = TAB_LIST_NAME;\nvar TRIGGER_NAME = \"TabsTrigger\";\nvar TabsTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, disabled = false, ...triggerProps } = props;\n const context = useTabsContext(TRIGGER_NAME, __scopeTabs);\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n return /* @__PURE__ */ jsx(\n RovingFocusGroup.Item,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n focusable: !disabled,\n active: isSelected,\n children: /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"tab\",\n \"aria-selected\": isSelected,\n \"aria-controls\": contentId,\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n id: triggerId,\n ...triggerProps,\n ref: forwardedRef,\n onMouseDown: composeEventHandlers(props.onMouseDown, (event) => {\n if (!disabled && event.button === 0 && event.ctrlKey === false) {\n context.onValueChange(value);\n } else {\n event.preventDefault();\n }\n }),\n onKeyDown: composeEventHandlers(props.onKeyDown, (event) => {\n if ([\" \", \"Enter\"].includes(event.key)) context.onValueChange(value);\n }),\n onFocus: composeEventHandlers(props.onFocus, () => {\n const isAutomaticActivation = context.activationMode !== \"manual\";\n if (!isSelected && !disabled && isAutomaticActivation) {\n context.onValueChange(value);\n }\n })\n }\n )\n }\n );\n }\n);\nTabsTrigger.displayName = TRIGGER_NAME;\nvar CONTENT_NAME = \"TabsContent\";\nvar TabsContent = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeTabs, value, forceMount, children, ...contentProps } = props;\n const context = useTabsContext(CONTENT_NAME, __scopeTabs);\n const triggerId = makeTriggerId(context.baseId, value);\n const contentId = makeContentId(context.baseId, value);\n const isSelected = value === context.value;\n const isMountAnimationPreventedRef = React.useRef(isSelected);\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);\n return () => cancelAnimationFrame(rAF);\n }, []);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || isSelected, children: ({ present }) => /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": isSelected ? \"active\" : \"inactive\",\n \"data-orientation\": context.orientation,\n role: \"tabpanel\",\n \"aria-labelledby\": triggerId,\n hidden: !present,\n id: contentId,\n tabIndex: 0,\n ...contentProps,\n ref: forwardedRef,\n style: {\n ...props.style,\n animationDuration: isMountAnimationPreventedRef.current ? \"0s\" : void 0\n },\n children: present && children\n }\n ) });\n }\n);\nTabsContent.displayName = CONTENT_NAME;\nfunction makeTriggerId(baseId, value) {\n return `${baseId}-trigger-${value}`;\n}\nfunction makeContentId(baseId, value) {\n return `${baseId}-content-${value}`;\n}\nvar Root2 = Tabs;\nvar List = TabsList;\nvar Trigger = TabsTrigger;\nvar Content = TabsContent;\nexport {\n Content,\n List,\n Root2 as Root,\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n Trigger,\n createTabsScope\n};\n//# sourceMappingURL=index.mjs.map\n","import type { ComponentType } from 'react';\nimport type { OTPMethods } from '@stytch/core/public';\nimport type { AppScreens } from './GlobalContextProvider';\nimport type { StartPasskeyAuth } from '../hooks/usePromptPasskey';\nimport type { Values } from '../../utils/types';\nimport type { IconRegistry } from '../components/IconRegistry';\nimport type { IconNames } from './components/Icons';\n\nexport type ProductId =\n | 'emailMagicLinks'\n | 'oauth'\n | 'otp'\n | 'crypto'\n | 'passwords'\n | 'passkeys'\n | 'passkeyRegistration';\n\n// tabs types\nexport const MagicLinkMethods = {\n Email: 'emailMagicLinks',\n} as const;\nexport type MagicLinkMethods = Values<typeof MagicLinkMethods>;\n\nexport const PasswordMethods = {\n Email: 'passwords',\n} as const;\nexport type PasswordMethods = Values<typeof PasswordMethods>;\n\nexport type TabMethods = OTPMethods | MagicLinkMethods | PasswordMethods;\n\n// mainScreen types\nexport type MainScreenKey = 'oauth' | 'crypto' | 'login-form' | 'divider' | 'passkey-button';\nexport type MainScreenGroup = MainScreenKey | MainScreenKey[];\n\nexport type MainScreenChildProps = {\n startPasskeyAuth: StartPasskeyAuth;\n};\n\nexport type StytchProduct = Readonly<{\n id: ProductId;\n\n screens: Partial<Record<AppScreens, ComponentType>>;\n tabs?: Partial<Record<TabMethods, ComponentType>>;\n mainScreen?: Partial<Record<MainScreenKey, ComponentType<MainScreenChildProps>>>;\n icons?: Partial<IconRegistry<IconNames>>;\n}>;\n","import React from 'react';\nimport classNames from 'classnames';\nimport { msg } from '@lingui/core/macro';\nimport { useLingui } from '@lingui/react/macro';\nimport { DEV } from '@stytch/core';\nimport type { MessageDescriptor } from '@lingui/core';\nimport { Tabs } from 'radix-ui';\nimport { OTPMethods } from '@stytch/core/public';\nimport { useConfig } from '../../../GlobalContextProvider';\nimport Typography from '../../../../components/atoms/Typography';\nimport { buttonClassNames } from '../../../../components/atoms/Button';\nimport styles from './index.module.css';\nimport { hasProduct, useProductComponents } from '../../../utils';\nimport { MagicLinkMethods, PasswordMethods, StytchProduct, TabMethods } from '../../../StytchProduct';\n\nexport const OTPTabHeaders: Record<TabMethods, MessageDescriptor> = {\n [OTPMethods.SMS]: msg({ id: 'tab.text', message: 'Text' }),\n [OTPMethods.WhatsApp]: msg({ id: 'tab.whatsapp', message: 'WhatsApp' }),\n [OTPMethods.Email]: msg({ id: 'tab.email', message: 'Email' }),\n [MagicLinkMethods.Email]: msg({ id: 'tab.email', message: 'Email' }),\n [PasswordMethods.Email]: msg({ id: 'tab.email', message: 'Email' }),\n};\n\nexport const getTabMethods = (products: StytchProduct[], otpMethods: OTPMethods[]) => {\n const hasPassword = hasProduct(products, 'passwords');\n const tabMethods = new Set<TabMethods>();\n for (const { id } of products) {\n if (id === 'emailMagicLinks') {\n tabMethods.add(hasPassword ? PasswordMethods.Email : MagicLinkMethods.Email);\n } else if (id === 'passwords') {\n tabMethods.add(PasswordMethods.Email);\n } else if (id === 'otp') {\n for (const method of otpMethods) {\n tabMethods.add(method === OTPMethods.Email && hasPassword ? PasswordMethods.Email : method);\n }\n }\n }\n return Array.from(tabMethods);\n};\n\nexport const LoginForm = () => {\n const { t } = useLingui();\n const { otpOptions, products } = useConfig();\n const productsIncludesOtp = hasProduct(products, 'otp');\n const otpMethods = productsIncludesOtp ? (otpOptions?.methods ?? []) : [];\n const hasEmailMagicLink = hasProduct(products, 'emailMagicLinks');\n const hasOTPEmail = productsIncludesOtp && otpMethods.includes(OTPMethods.Email);\n\n const tabMethods = getTabMethods(products, otpMethods);\n const tabMethodComponents = useProductComponents(products, 'tabs');\n\n if (hasEmailMagicLink && hasOTPEmail)\n return (\n <Typography variant=\"helper\" color=\"destructive\">\n {DEV('Error: Cannot use both EML and Email OTP')}\n </Typography>\n );\n\n return (\n <Tabs.Root defaultValue={tabMethods[0]}>\n {tabMethods.length > 1 && (\n <Tabs.List className={styles.tabRow} aria-label={t({ message: 'Select login method', id: 'tab.listLabel' })}>\n {tabMethods.map((method) => (\n <Tabs.Trigger\n value={method}\n key={method}\n className={classNames(buttonClassNames({ variant: 'outline', block: true }), styles.tab)}\n >\n {t(OTPTabHeaders[method])}\n </Tabs.Trigger>\n ))}\n </Tabs.List>\n )}\n\n {tabMethods.map((method) => {\n const Component = tabMethodComponents![method];\n if (tabMethods.length > 1) {\n return (\n // We override tabIndex here because each tab will have some interactive element\n // > It is recommended that all tabpanel elements in a tab set are focusable if there are any panels in\n // > the set that contain content where the first element in the panel is not focusable.\n // - From: https://www.w3.org/WAI/ARIA/apg/patterns/tabs/examples/tabs-automatic/#accessibilityfeatures\n <Tabs.Content value={method} key={method} tabIndex={-1}>\n <Component />\n </Tabs.Content>\n );\n } else {\n return <Component key={method} />;\n }\n })}\n </Tabs.Root>\n );\n};\n","import React, { useState } from 'react';\nimport { StytchEventType, StytchAPIError } from '@stytch/core/public';\nimport { useLingui } from '@lingui/react/macro';\nimport { EmailSentType } from '@stytch/core';\n\nimport {\n useConfig,\n useStytch,\n useGlobalReducer,\n AppScreens,\n useErrorCallback,\n useEventCallback,\n} from '../../../GlobalContextProvider';\nimport { EMAIL_REGEX, convertMagicLinkOptions } from '../../../../../utils';\nimport Button from '../../../../components/atoms/Button';\nimport EmailInput from '../../../../components/molecules/EmailInput';\nimport Column from '../../../../components/atoms/Column';\nimport { readB2CInternals } from '../../../../../utils/internal';\nimport { getTranslatedError } from '../../../../../utils/getTranslatedError';\nimport { hasProduct } from '../../../utils';\n\nexport const MagicLinkEmailForm = () => {\n const { t } = useLingui();\n const onEvent = useEventCallback();\n const onError = useErrorCallback();\n const [, dispatch] = useGlobalReducer();\n const stytchClient = useStytch();\n const config = useConfig();\n const emailMagicLinksOptions = config.emailMagicLinksOptions;\n const hasPasskeys = hasProduct(config.products, 'passkeys');\n\n const [email, setEmail] = useState('');\n const [errorMessage, setErrorMessage] = useState<string>('');\n const [isSubmitting, setIsSubmitting] = useState<boolean>(false);\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n const submittingEmail = email;\n if (!submittingEmail.match(EMAIL_REGEX)) {\n setErrorMessage(t({ id: 'error.invalidEmail', message: 'Email format is invalid.' }));\n } else {\n setErrorMessage('');\n setIsSubmitting(true);\n stytchClient.magicLinks.email\n .loginOrCreate(submittingEmail, convertMagicLinkOptions(emailMagicLinksOptions))\n .then((data) => {\n onEvent({ type: StytchEventType.MagicLinkLoginOrCreateEvent, data: { ...data, email: submittingEmail } });\n setIsSubmitting(false);\n dispatch({ type: 'set_magic_link_email', email: submittingEmail });\n dispatch({ type: 'transition', screen: AppScreens.EmailConfirmation });\n readB2CInternals(stytchClient).networkClient.logEvent({\n name: 'email_try_again_clicked',\n details: { email: submittingEmail, type: EmailSentType.LoginOrCreateEML },\n });\n })\n .catch((e: StytchAPIError) => {\n onError(e);\n setIsSubmitting(false);\n setErrorMessage(getTranslatedError(e, t));\n });\n }\n };\n\n return (\n <Column as=\"form\" onSubmit={handleSubmit} gap={4}>\n <EmailInput email={email} setEmail={setEmail} hasPasskeys={hasPasskeys} hideLabel error={errorMessage} />\n <Button variant=\"primary\" loading={isSubmitting} type=\"submit\">\n {t({ id: 'button.emailLogin', message: 'Continue with email' })}\n </Button>\n </Column>\n );\n};\n","import React from 'react';\nimport { MessageDescriptor } from '@lingui/core';\nimport { msg } from '@lingui/core/macro';\nimport { useLingui } from '@lingui/react/macro';\nimport { StringLiteralFromEnum } from '@stytch/core';\nimport { OAuthProviders } from '@stytch/core/public';\nimport { useStytch } from '../GlobalContextProvider';\nimport Button from '../../components/atoms/Button';\nimport { usePresentation } from '../../components/PresentationConfig';\nimport type { oauthIcons } from './Icons';\nimport { IconRegistry } from '../../components/IconRegistry';\n\ninterface ProviderInfo {\n messageDescriptor: MessageDescriptor;\n}\n\nconst providerInfo = {\n [OAuthProviders.Google]: {\n messageDescriptor: msg({ id: 'oauth.continueWithGoogle', message: 'Continue with Google' }),\n },\n [OAuthProviders.Microsoft]: {\n messageDescriptor: msg({ id: 'oauth.continueWithMicrosoft', message: 'Continue with Microsoft' }),\n },\n [OAuthProviders.Apple]: {\n messageDescriptor: msg({ id: 'oauth.continueWithApple', message: 'Continue with Apple' }),\n },\n [OAuthProviders.Github]: {\n messageDescriptor: msg({ id: 'oauth.continueWithGitHub', message: 'Continue with GitHub' }),\n },\n [OAuthProviders.GitLab]: {\n messageDescriptor: msg({ id: 'oauth.continueWithGitLab', message: 'Continue with GitLab' }),\n },\n [OAuthProviders.Facebook]: {\n messageDescriptor: msg({ id: 'oauth.continueWithFacebook', message: 'Continue with Facebook' }),\n },\n [OAuthProviders.Discord]: {\n messageDescriptor: msg({ id: 'oauth.continueWithDiscord', message: 'Continue with Discord' }),\n },\n [OAuthProviders.Salesforce]: {\n messageDescriptor: msg({ id: 'oauth.continueWithSalesforce', message: 'Continue with Salesforce' }),\n },\n [OAuthProviders.Slack]: {\n messageDescriptor: msg({ id: 'oauth.continueWithSlack', message: 'Continue with Slack' }),\n },\n [OAuthProviders.Amazon]: {\n messageDescriptor: msg({ id: 'oauth.continueWithAmazon', message: 'Continue with Amazon' }),\n },\n [OAuthProviders.Bitbucket]: {\n messageDescriptor: msg({ id: 'oauth.continueWithBitbucket', message: 'Continue with Bitbucket' }),\n },\n [OAuthProviders.LinkedIn]: {\n messageDescriptor: msg({ id: 'oauth.continueWithLinkedIn', message: 'Continue with LinkedIn' }),\n },\n [OAuthProviders.Coinbase]: {\n messageDescriptor: msg({ id: 'oauth.continueWithCoinbase', message: 'Continue with Coinbase' }),\n },\n [OAuthProviders.Twitch]: {\n messageDescriptor: msg({ id: 'oauth.continueWithTwitch', message: 'Continue with Twitch' }),\n },\n [OAuthProviders.Twitter]: {\n messageDescriptor: msg({ id: 'oauth.continueWithX', message: 'Continue with X' }),\n },\n [OAuthProviders.TikTok]: {\n messageDescriptor: msg({ id: 'oauth.continueWithTikTok', message: 'Continue with TikTok' }),\n },\n [OAuthProviders.Snapchat]: {\n messageDescriptor: msg({ id: 'oauth.continueWithSnapchat', message: 'Continue with Snapchat' }),\n },\n [OAuthProviders.Figma]: {\n messageDescriptor: msg({ id: 'oauth.continueWithFigma', message: 'Continue with Figma' }),\n },\n [OAuthProviders.Yahoo]: {\n messageDescriptor: msg({ id: 'oauth.continueWithYahoo', message: 'Continue with Yahoo' }),\n },\n} satisfies Record<OAuthProviders, ProviderInfo>;\n\ntype Props = {\n providerType: StringLiteralFromEnum<OAuthProviders>;\n loginRedirectUrl?: string;\n signupRedirectUrl?: string;\n customScopes?: string[];\n providerParams?: Record<string, string>;\n onSuccess?: () => void;\n};\n\nexport const OAuthButton = ({\n providerType,\n loginRedirectUrl,\n signupRedirectUrl,\n customScopes,\n providerParams,\n onSuccess,\n}: Props) => {\n const { t } = useLingui();\n const stytchClient = useStytch();\n const iconRegistry: IconRegistry<keyof typeof oauthIcons> = usePresentation().iconRegistry;\n\n const provider = providerInfo[providerType];\n let label: string = providerType;\n let icon = null;\n if (provider) {\n const { messageDescriptor } = provider;\n\n const iconName = providerType === 'twitter' ? 'xTwitter' : providerType;\n const Icon = iconRegistry[iconName];\n\n label = t(messageDescriptor);\n icon = <Icon />;\n }\n\n const onButtonClick = async () => {\n await stytchClient.oauth[providerType].start({\n login_redirect_url: loginRedirectUrl,\n signup_redirect_url: signupRedirectUrl,\n custom_scopes: customScopes,\n provider_params: providerParams,\n });\n onSuccess?.();\n };\n\n return (\n <Button onClick={onButtonClick} variant=\"outline\" icon={icon}>\n {label}\n </Button>\n );\n};\n","import { useStytch } from '../../GlobalContextProvider';\nimport { readB2CInternals } from '../../../../utils/internal';\nimport { useMemo } from 'react';\nimport { safeLocalStorage } from '../../../../utils/storage';\nimport { OAuthProviders } from '@stytch/core/public';\n\nexport function useLastUsedOAuth() {\n const stytch = useStytch();\n const { publicToken } = readB2CInternals(stytch);\n\n const lastUsedOAuth = useMemo(() => safeLocalStorage.getItem(publicToken, 'b2c_last_used_oauth'), [publicToken]);\n const setLastUsedOAuth = (providerType: OAuthProviders) => {\n safeLocalStorage.setItem(publicToken, 'b2c_last_used_oauth', providerType);\n };\n\n return [lastUsedOAuth, setLastUsedOAuth] as const;\n}\n","import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { OAuthProviders, OneTapPositions } from '@stytch/core/public';\nimport { DEV, logger, StringLiteralFromEnum } from '@stytch/core';\nimport classNames from 'classnames';\nimport { OAuthButton } from './OAuthButton';\nimport { useConfig, useStytch } from '../GlobalContextProvider';\nimport { readB2CInternals } from '../../../utils/internal';\nimport { useIsUnmounted } from '../../hooks/useIsMounted';\nimport { ErrorMessages, OneTapErrors } from '../../components/organisms/OneTapError';\nimport { OneTapProvider } from '../../../oneTap/OneTapProvider';\nimport { CircularProgress } from '../../components/atoms/CircularProgress';\nimport { useIsOnlyFloatingOneTap } from '../../hooks/useIsOnlyFloatingOneTap';\nimport { GoogleOneTapClient } from '../../../oneTap/GoogleOneTapClient';\nimport { getRenderedOneTapMode } from '../../../oneTap/positionModes';\nimport styles from './GoogleOneTap.module.css';\nimport LastUsed from '../../components/molecules/LastUsed';\nimport { useLastUsedOAuth } from '../screens/Main/useLastUsedOAuth';\n\ntype Props = {\n position?: StringLiteralFromEnum<OneTapPositions>;\n customScopes?: string[];\n providerParams?: Record<string, string>;\n cancelOnTapOutside?: boolean;\n};\n\nconst OAUTH_BUTTON_HEIGHT = 38;\n\n// See WebComponents.tsx - when using shadow DOM, the Google script cannot see the\n// mount point, so we render it outside and use slot to bring it back in\nconst OneTapMountNode = ({ enableShadowDOM }: { enableShadowDOM: boolean }) =>\n enableShadowDOM ? (\n <slot name=\"one-tap\"></slot>\n ) : (\n <div data-prompt_parent_id=\"g_id_onload\" id=\"google-parent-prompt\" />\n );\n\nexport const GoogleOneTap = ({ position, customScopes, providerParams, cancelOnTapOutside }: Props) => {\n const oneTapRenderMode = getRenderedOneTapMode(position);\n const shouldRenderEmbeddedOneTap = oneTapRenderMode === 'embedded';\n const shouldRenderOneTap = !!oneTapRenderMode;\n\n const config = useConfig();\n const stytch = useStytch();\n const isOnlyFloatingOneTap = useIsOnlyFloatingOneTap(config);\n const [pending, setPending] = useState(shouldRenderEmbeddedOneTap);\n const [canDisplayOneTap, setCanDisplayOneTap] = useState(true);\n const [height, setHeight] = useState(OAUTH_BUTTON_HEIGHT);\n const [oneTapError, setOneTapError] = useState<OneTapErrors>();\n const resizeCount = useRef(0);\n const timeout = useRef<number>();\n const isUnmounted = useIsUnmounted();\n const [lastUsedMethod, setLastUsedOAuth] = useLastUsedOAuth();\n\n /*\n * Begin One Tap Render Smoothing Logic\n */\n // Gets height of rendered one-tap UI, and sets the container height to that.\n // Animation is added for a smoother transition,\n const onResize = useCallback<ResizeObserverCallback>(([el]) => {\n if (timeout.current != null) {\n clearTimeout(timeout.current);\n }\n // On initial load, the one-tap ui rapidly changes heights 3 times. Checking\n // the resizeCount lets us debounce the first 2 resizes, so they will get\n // cancelled, but if they don't, it will resize after the short delay.\n if (resizeCount.current > 1) {\n // While setting the height, if the contentRect height is 0, it could also mean that the\n // oauthOptions props are being changed, and in that scenario if we can continue to display\n // one tap, we are setting the container height to the current height. If one tap cannot display\n // one tap, we will set the container height to the height of the button component.\n // Else we will set the height to the contentRect height.\n setHeight((currentHeight) =>\n el.contentRect.height === 0 ? (canDisplayOneTap ? currentHeight : OAUTH_BUTTON_HEIGHT) : el.contentRect.height,\n );\n } else {\n timeout.current = window.setTimeout(\n () =>\n setHeight((currentHeight) =>\n el.contentRect.height === 0\n ? canDisplayOneTap\n ? currentHeight\n : OAUTH_BUTTON_HEIGHT\n : el.contentRect.height,\n ),\n 100,\n );\n }\n resizeCount.current++;\n // eslint-disable-next-line react-hooks/exhaustive-deps -- SDK-1354\n }, []);\n\n // If we are in embedded mode, initialize the resize observer and bind it to the React callback\n useEffect(() => {\n if (shouldRenderEmbeddedOneTap) {\n const el = document.getElementById('google-parent-prompt');\n if (el) {\n const resizeObserver = new ResizeObserver(onResize);\n resizeObserver.observe(el);\n return () => resizeObserver.disconnect();\n }\n }\n }, [onResize, shouldRenderEmbeddedOneTap]);\n /*\n * End One Tap Render Smoothing Logic\n */\n\n /*\n * Begin One Tap Loading / Initialization Logic\n */\n //\n const attemptToLoadOneTap = useCallback(async () => {\n if (!shouldRenderOneTap) {\n return;\n }\n\n const { oneTap } = readB2CInternals(stytch);\n const clientResult = await oneTap.createOneTapClient();\n if (!clientResult.success) {\n if (clientResult.reason === 'oauth_config_not_found') {\n setOneTapError(OneTapErrors.NoConfiguredOAuthClient);\n } else if (clientResult.reason === 'no_signup_redirect_urls_set') {\n setOneTapError(OneTapErrors.NoConfiguredSignupRedirectUrls);\n } else if (clientResult.reason === 'no_login_redirect_urls_set') {\n setOneTapError(OneTapErrors.NoConfiguredLoginRedirectUrls);\n } else {\n logger.error('Unable to load One Tap settings for project', clientResult);\n }\n return;\n }\n const { client } = clientResult;\n\n const onOneTapCancelled = (showError?: boolean) => {\n setCanDisplayOneTap(false);\n setHeight(OAUTH_BUTTON_HEIGHT);\n if (showError) {\n setOneTapError(OneTapErrors.OriginNotAllowedForClient);\n }\n };\n\n /**\n * One Tap is composed of two calls, an init() call and a prompt() call.\n * The init() call takes in a parent_id where One Tap should be shown\n * prompt() does the actual showing.\n * If the element does not exist, we show One Tap in the upper right corner.\n * If the element does exist, One Tap's lifecycle is tied to the lifecycle of said element.\n * Here, we call init() then prompt() in the useEffect. If the component unmounts before\n * prompt() is called, One Tap falls back to the element-does-not-exist behavior.\n * Fix: add a check for whether the component is still rendered immediately before we\n * call prompt, preventing this race condition\n */\n if (isUnmounted.current) {\n return;\n }\n\n const renderResult = await client.render({\n callback: oneTap.createOnSuccessHandler({\n loginRedirectUrl: config.oauthOptions?.loginRedirectURL,\n signupRedirectUrl: config.oauthOptions?.signupRedirectURL,\n onSuccess: oneTap.redirectOnSuccess,\n }),\n onOneTapCancelled,\n style: { position },\n cancelOnTapOutside,\n });\n\n // Check if the component has become unmounted during the async OT render process\n // Kill the rest of the logic if so\n if (isUnmounted.current) {\n client.cancel();\n return;\n }\n\n setCanDisplayOneTap(renderResult.success);\n setPending(false);\n\n if (!renderResult.success) {\n if (renderResult.reason === 'unregistered_origin') {\n setOneTapError(OneTapErrors.OriginNotAllowedForClient);\n }\n if (renderResult.reason === 'invalid_client') {\n setOneTapError(OneTapErrors.InvalidOAuthClient);\n }\n logger.error('Unable to render One Tap prompt', renderResult);\n }\n return client;\n }, [\n shouldRenderOneTap,\n stytch,\n isUnmounted,\n config.oauthOptions?.loginRedirectURL,\n config.oauthOptions?.signupRedirectURL,\n position,\n cancelOnTapOutside,\n ]);\n\n useEffect(() => {\n let client: GoogleOneTapClient | undefined;\n attemptToLoadOneTap()\n .then(($client) => (client = $client))\n .catch((err) => {\n logger.error('Unable to render One Tap prompt', err);\n setCanDisplayOneTap(false);\n setPending(false);\n });\n return () => client?.cancel();\n }, [attemptToLoadOneTap]);\n /*\n * End One Tap Loading / Initialization Logic\n */\n\n // Fallback Google auth button in case One Tap cannot be displayed\n const fallbackButton = (\n <OAuthButton\n providerType={OAuthProviders.Google}\n loginRedirectUrl={config.oauthOptions?.loginRedirectURL}\n signupRedirectUrl={config.oauthOptions?.signupRedirectURL}\n customScopes={customScopes}\n providerParams={providerParams}\n onSuccess={() => setLastUsedOAuth(OAuthProviders.Google)}\n />\n );\n\n const fallbackWithLastUsed =\n lastUsedMethod === OAuthProviders.Google ? <LastUsed>{fallbackButton}</LastUsed> : fallbackButton;\n\n if (isOnlyFloatingOneTap) {\n return <OneTapMountNode enableShadowDOM={Boolean(config.enableShadowDOM)} />;\n }\n\n if (oneTapError) {\n return (\n <>\n {DEV(<ErrorMessages error={oneTapError} />)}\n {fallbackWithLastUsed}\n </>\n );\n }\n\n if (shouldRenderEmbeddedOneTap && OneTapProvider.willGoogleOneTapShowEmbedded()) {\n return (\n <div className={classNames(styles.container, { [styles.pending]: pending })} style={{ height: height + 'px' }}>\n {pending && <CircularProgress size={25} />}\n {canDisplayOneTap ? <OneTapMountNode enableShadowDOM={Boolean(config.enableShadowDOM)} /> : fallbackButton}\n </div>\n );\n }\n\n return fallbackWithLastUsed;\n};\n","import React from 'react';\nimport { arrayUtils } from '@stytch/core';\nimport { OAuthButton } from '../../components/OAuthButton';\nimport { GoogleOneTap } from '../../components/GoogleOneTap';\nimport { useConfig } from '../../GlobalContextProvider';\nimport ButtonColumn from '../../../components/molecules/ButtonColumn';\nimport LastUsed from '../../../components/molecules/LastUsed';\nimport { useLastUsedOAuth } from './useLastUsedOAuth';\n\nexport const OAuthButtons = () => {\n const config = useConfig();\n const [lastUsedOAuth, setLastUsedOAuth] = useLastUsedOAuth();\n\n if (!config.oauthOptions) return <></>;\n const { providers, loginRedirectURL, signupRedirectURL } = config.oauthOptions;\n\n const [reorderedProviders, foundLastUsed] = arrayUtils.moveToFront(\n providers,\n (provider) => provider.type === lastUsedOAuth,\n );\n\n return (\n <ButtonColumn>\n {reorderedProviders.map((provider, index) => {\n const providerProps = {\n customScopes: provider.custom_scopes,\n providerParams: provider.provider_params,\n };\n\n if (provider.one_tap) {\n return (\n <GoogleOneTap\n position={provider.position}\n key={`oauth-${provider.type}`}\n {...providerProps}\n cancelOnTapOutside={provider.cancel_on_tap_outside}\n />\n );\n }\n\n const button = (\n <OAuthButton\n key={`oauth-${provider.type}`}\n providerType={provider.type}\n loginRedirectUrl={loginRedirectURL}\n signupRedirectUrl={signupRedirectURL}\n onSuccess={() => setLastUsedOAuth(provider.type)}\n {...providerProps}\n />\n );\n\n return foundLastUsed && index === 0 ? <LastUsed>{button}</LastUsed> : button;\n })}\n </ButtonColumn>\n );\n};\n","import React, { useEffect, useState } from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport {\n AppScreens,\n useConfig,\n useErrorCallback,\n useEventCallback,\n useGlobalReducer,\n useStytch,\n} from '../../GlobalContextProvider';\nimport { DEFAULT_OTP_EXPIRATION_MINUTES, DEFAULT_SESSION_DURATION_MINUTES, EmailSentType } from '@stytch/core';\nimport { OTPMethods, StytchAPIError, StytchEventType } from '@stytch/core/public';\nimport Button from '../../../components/atoms/Button';\nimport { readB2CInternals } from '../../../../utils/internal';\nimport Column from '../../../components/atoms/Column';\nimport { SentOTPEntry } from '../../../components/organisms/SentOTPEntry';\nimport { formatNumber } from '../../../../utils/handleParsePhoneNumber';\nimport { getTranslatedError } from '../../../../utils/getTranslatedError';\nimport ButtonColumn from '../../../components/molecules/ButtonColumn';\nimport { useCountdown } from '../../../components/atoms/Countdown';\nimport { ResendOTPButton } from '../../../components/organisms/ResendOTPButton';\n\nexport const OTPAuthenticate = ({ hideBackButton = false }: { hideBackButton?: boolean }) => {\n const { t } = useLingui();\n const onEvent = useEventCallback();\n const onError = useErrorCallback();\n const stytchClient = useStytch();\n const config = useConfig();\n const [state, dispatch] = useGlobalReducer();\n const [isSubmitting, setIsSubmitting] = useState<boolean>(false);\n\n const destination = state.formState.otpState.otpDestination;\n const selectionMethod = state.formState.otpState.type;\n const [errorMessage, setErrorMessage] = useState('');\n const [formattedDestination, setFormattedDestination] = useState(destination);\n\n const calculateExpiration = () =>\n Date.now() + 1000 * 60 * (config.otpOptions?.expirationMinutes ?? DEFAULT_OTP_EXPIRATION_MINUTES);\n\n useEffect(() => {\n const parseDestination = async () => {\n const parsePhoneNumber = (phoneNumber: string) =>\n readB2CInternals(stytchClient).clientsideServices.parsedPhoneNumber({ phoneNumber });\n\n const national = await formatNumber({\n parsePhoneNumber,\n phoneNumber: destination,\n });\n\n setFormattedDestination(selectionMethod === OTPMethods.Email ? destination : national);\n };\n\n parseDestination();\n }, [selectionMethod, destination, stytchClient]);\n\n const [expiration, setExpiration] = useState(calculateExpiration);\n const resendCountdown = useCountdown();\n\n const resendOTP = async () => {\n if (selectionMethod === OTPMethods.Email) {\n readB2CInternals(stytchClient).networkClient.logEvent({\n name: 'email_try_again_clicked',\n details: { email: destination, type: EmailSentType.LoginOrCreateOTP },\n });\n }\n\n try {\n const data = await stytchClient.otps[selectionMethod].loginOrCreate(destination, {\n expiration_minutes: config.otpOptions?.expirationMinutes ?? DEFAULT_OTP_EXPIRATION_MINUTES,\n });\n\n onEvent({ type: StytchEventType.OTPsLoginOrCreateEvent, data });\n setExpiration(calculateExpiration());\n dispatch({\n type: 'update_otp_state',\n otpState: {\n type: selectionMethod,\n methodId: data.method_id,\n otpDestination: destination,\n },\n });\n } catch (e: unknown) {\n onError(e as StytchAPIError);\n setErrorMessage(getTranslatedError(e as StytchAPIError, t));\n throw e;\n }\n };\n\n const handleSubmit = async (otp: string) => {\n setIsSubmitting(true);\n stytchClient.otps\n .authenticate(otp, state.formState.otpState.methodId, {\n session_duration_minutes: config.sessionOptions?.sessionDurationMinutes ?? DEFAULT_SESSION_DURATION_MINUTES,\n })\n .then((data) => {\n onEvent({ type: StytchEventType.OTPsAuthenticate, data });\n setIsSubmitting(false);\n dispatch({\n type: 'transition',\n screen: AppScreens.OTPConfirmation,\n });\n })\n .catch((e: StytchAPIError) => {\n onError(e);\n resendCountdown.clear();\n setIsSubmitting(false);\n setErrorMessage(getTranslatedError(e, t));\n });\n };\n\n return (\n <Column gap={6}>\n <SentOTPEntry\n expiration={expiration}\n formattedDestination={formattedDestination}\n isSubmitting={isSubmitting}\n onSubmit={handleSubmit}\n errorMessage={errorMessage}\n />\n\n <ButtonColumn>\n <ResendOTPButton countdown={resendCountdown} resendOTP={resendOTP} isSubmitting={isSubmitting} />\n\n {!hideBackButton && (\n <Button variant=\"ghost\" onClick={() => dispatch({ type: 'transition', screen: AppScreens.Main })}>\n {t({ id: 'button.goBack', message: 'Go back' })}\n </Button>\n )}\n </ButtonColumn>\n </Column>\n );\n};\n","import * as React from 'react';\nimport { StytchEventType } from '@stytch/core/public';\nimport { useLingui } from '@lingui/react/macro';\nimport { useMountEffect } from '../../../hooks/useMountEffect';\nimport { useEventCallback } from '../../GlobalContextProvider';\nimport { Confirmation } from '../../../components/molecules/Confirmation';\n\nexport const OTPConfirmation = () => {\n const { t } = useLingui();\n const onEvent = useEventCallback();\n useMountEffect(() => {\n onEvent({ type: StytchEventType.AuthenticateFlowComplete, data: {} });\n });\n\n return (\n <Confirmation text={t({ id: 'otp.success.content', message: 'Your passcode has been successfully verified.' })} />\n );\n};\n","import React, { useMemo, useState } from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { StytchAPIError, StytchEventType } from '@stytch/core/public';\nimport { DEFAULT_SESSION_DURATION_MINUTES } from '@stytch/core';\n\nimport Column from '../../../components/atoms/Column';\nimport Button from '../../../components/atoms/Button';\nimport EmailInput from '../../../components/molecules/EmailInput';\nimport { PasswordInput } from '../../../components/molecules/PasswordInput';\n\nimport {\n AppScreens,\n useConfig,\n useErrorCallback,\n useEventCallback,\n useGlobalReducer,\n useStytch,\n} from '../../GlobalContextProvider';\nimport { useBootstrap } from '../../utils';\n\nimport { convertPasswordResetOptions, debounce, noop } from '../../../../utils';\nimport { getNewPasswordProps, PasswordError, PasswordErrorProps } from '../../../components/molecules/PasswordError';\nimport { getTranslatedError } from '../../../../utils/getTranslatedError';\n\nexport const PasswordNewUser = () => {\n const { t } = useLingui();\n const stytchClient = useStytch();\n const { bootstrap } = useBootstrap();\n const config = useConfig();\n const passwordOptions = config.passwordOptions;\n\n const [state, dispatch] = useGlobalReducer();\n\n const onEvent = useEventCallback();\n const onError = useErrorCallback();\n\n const email = state.formState.passwordState.email;\n const [password, setPassword] = useState('');\n const [errorMessage, setErrorMessage] = useState('');\n const [passwordError, setPasswordError] = useState<PasswordErrorProps>({ policy: 'notLoaded' });\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const updateStrengthCheck = useMemo(\n () =>\n debounce((email: string, password: string) => {\n setErrorMessage('');\n stytchClient.passwords\n .strengthCheck({ email, password })\n .then(({ score, feedback, valid_password, strength_policy, breached_password }) => {\n const common = {\n passwordInvalid: !valid_password,\n isPasswordBreached: breached_password,\n };\n\n if (strength_policy === 'zxcvbn') {\n setPasswordError({\n policy: strength_policy,\n ...common,\n passwordScore: score,\n passwordWarning: feedback.warning,\n passwordSuggestions: feedback.suggestions,\n });\n } else if (strength_policy === 'luds') {\n setPasswordError({\n policy: strength_policy,\n ...common,\n missingCharacters: feedback.luds_requirements.missing_characters,\n missingComplexity: feedback.luds_requirements.missing_complexity,\n });\n }\n })\n .catch((e: StytchAPIError) => {\n setErrorMessage(getTranslatedError(e, t));\n });\n }),\n [stytchClient.passwords, t],\n );\n\n const onPasswordChange = (password: string) => {\n setPassword(password);\n updateStrengthCheck(email, password);\n };\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n setErrorMessage('');\n setIsSubmitting(true);\n stytchClient.passwords\n .create({\n email,\n password,\n session_duration_minutes: config.sessionOptions?.sessionDurationMinutes ?? DEFAULT_SESSION_DURATION_MINUTES,\n })\n .then((data) => {\n setIsSubmitting(false);\n onEvent({ type: StytchEventType.PasswordCreate, data });\n dispatch({ type: 'transition', screen: AppScreens.PasswordConfirmation });\n })\n .catch((e: StytchAPIError) => {\n onError(e);\n if (e.error_type === 'reset_password') {\n stytchClient.passwords.resetByEmailStart(convertPasswordResetOptions(email, passwordOptions)).then(() => {\n dispatch({ type: 'transition', screen: AppScreens.PasswordDedupe });\n });\n } else {\n setErrorMessage(getTranslatedError(e, t));\n }\n setIsSubmitting(false);\n });\n };\n\n const passwordInputProps = getNewPasswordProps(bootstrap, passwordError.policy);\n\n return (\n <Column as=\"form\" onSubmit={handleSubmit} gap={4}>\n <EmailInput email={email} setEmail={noop} disabled />\n\n <PasswordInput password={password} setPassword={onPasswordChange} error={errorMessage} {...passwordInputProps} />\n\n <PasswordError bootstrap={bootstrap} {...passwordError} />\n\n <Button\n variant=\"primary\"\n loading={isSubmitting}\n type=\"submit\"\n disabled={passwordError.policy === 'notLoaded' || passwordError.passwordInvalid}\n >\n {t({\n id: 'button.continue',\n message: 'Continue',\n })}\n </Button>\n </Column>\n );\n};\n","import React, { useState } from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { DEFAULT_SESSION_DURATION_MINUTES } from '@stytch/core';\nimport { StytchEventType, StytchAPIError } from '@stytch/core/public';\n\nimport Column from '../../../components/atoms/Column';\nimport Button from '../../../components/atoms/Button';\nimport ButtonColumn from '../../../components/molecules/ButtonColumn';\nimport EmailInput from '../../../components/molecules/EmailInput';\nimport { PasswordInput } from '../../../components/molecules/PasswordInput';\n\nimport {\n useGlobalReducer,\n useStytch,\n AppScreens,\n useConfig,\n useEventCallback,\n useErrorCallback,\n} from '../../GlobalContextProvider';\nimport { convertPasswordResetOptions } from '../../../../utils';\nimport { getTranslatedError } from '../../../../utils/getTranslatedError';\n\nexport const PasswordAuthenticate = () => {\n const { t } = useLingui();\n const stytchClient = useStytch();\n const config = useConfig();\n const passwordOptions = config.passwordOptions;\n const [state, dispatch] = useGlobalReducer();\n\n const onEvent = useEventCallback();\n const onError = useErrorCallback();\n\n const [email, setEmail] = useState(state.formState.passwordState.email);\n const [password, setPassword] = useState('');\n const [errorMessage, setErrorMessage] = useState('');\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n setErrorMessage('');\n setIsSubmitting(true);\n stytchClient.passwords\n .authenticate({\n email,\n password,\n session_duration_minutes: config.sessionOptions?.sessionDurationMinutes ?? DEFAULT_SESSION_DURATION_MINUTES,\n })\n .then((data) => {\n setIsSubmitting(false);\n onEvent({ type: StytchEventType.PasswordAuthenticate, data });\n dispatch({ type: 'transition', screen: AppScreens.PasswordConfirmation });\n })\n .catch((e: StytchAPIError) => {\n onError(e);\n if (e.error_type === 'reset_password') {\n stytchClient.passwords.resetByEmailStart(convertPasswordResetOptions(email, passwordOptions)).then(() => {\n dispatch({ type: 'transition', screen: AppScreens.PasswordDedupe });\n });\n } else {\n setErrorMessage(getTranslatedError(e, t));\n }\n setIsSubmitting(false);\n });\n };\n\n const onForgot = () => {\n stytchClient.passwords.resetByEmailStart(convertPasswordResetOptions(email, passwordOptions)).then(() => {\n dispatch({ type: 'transition', screen: AppScreens.PasswordForgot });\n });\n };\n\n return (\n <Column as=\"form\" onSubmit={handleSubmit} gap={4}>\n <EmailInput email={email} setEmail={setEmail} disabled />\n\n <PasswordInput password={password} setPassword={setPassword} type=\"current\" error={errorMessage} />\n\n <ButtonColumn>\n <Button variant=\"primary\" loading={isSubmitting} type=\"submit\">\n {t({ id: 'button.continue', message: 'Continue' })}\n </Button>\n\n <Button variant=\"outline\" onClick={onForgot}>\n {t({ id: 'button.forgotPassword', message: 'Forgot your password?' })}\n </Button>\n </ButtonColumn>\n </Column>\n );\n};\n","import React, { useState } from 'react';\nimport { StytchAPIError, StytchEventType } from '@stytch/core/public';\nimport { EmailConfirmation } from './EmailConfirmation';\nimport { OTPAuthenticate } from './OTPAuthenticate';\nimport Divider from '../../../components/molecules/Divider';\nimport { convertPasswordResetOptions } from '../../../../utils';\nimport {\n AppScreens,\n useConfig,\n useErrorCallback,\n useEventCallback,\n useGlobalReducer,\n useStytch,\n} from '../../GlobalContextProvider';\nimport { useMountEffect } from '../../../hooks/useMountEffect';\nimport Button from '../../../components/atoms/Button';\nimport ErrorText from '../../../components/molecules/ErrorText';\nimport { getTranslatedError } from '../../../../utils/getTranslatedError';\nimport { useLingui } from '@lingui/react/macro';\nimport Column from '../../../components/atoms/Column';\nimport { usePasswordlessAuthenticate } from './usePasswordlessAuthenticate';\n\ntype PasswordlessAuthenticateProps = {\n secondaryType: 'eml' | 'otp' | undefined;\n};\n\nexport const PasswordlessAuthenticate = ({ secondaryType }: PasswordlessAuthenticateProps) => {\n const { t } = useLingui();\n const stytchClient = useStytch();\n const config = useConfig();\n const [state, dispatch] = useGlobalReducer();\n const onEvent = useEventCallback();\n const onError = useErrorCallback();\n\n const [errorMessage, setErrorMessage] = useState('');\n\n const { sendLink, sendCode } = usePasswordlessAuthenticate();\n const passwordOptions = config.passwordOptions;\n\n const email = state.formState.passwordState.email;\n\n const resetPassword = () => {\n stytchClient.passwords\n .resetByEmailStart(convertPasswordResetOptions(email, passwordOptions))\n .then((data) => {\n onEvent({ type: StytchEventType.PasswordResetByEmailStart, data });\n dispatch({ type: 'transition', screen: AppScreens.PasswordSetNew });\n })\n .catch((e: StytchAPIError) => {\n onError(e);\n setErrorMessage(getTranslatedError(e, t));\n });\n };\n\n useMountEffect(() => {\n switch (secondaryType) {\n case 'eml':\n sendLink().catch(() => {\n // Swallow error to avoid unhandled promise errors, sendLink() will already show error toast\n });\n return;\n\n case 'otp':\n sendCode().catch(() => {\n // Swallow error to avoid unhandled promise errors, sendLink() will already show error toast\n });\n return;\n\n default:\n stytchClient.passwords\n .resetByEmailStart(convertPasswordResetOptions(email, passwordOptions))\n .then((data) => {\n onEvent({ type: StytchEventType.PasswordResetByEmailStart, data });\n dispatch({ type: 'transition', screen: AppScreens.PasswordSetNew });\n })\n .catch((e: StytchAPIError) => {\n onError(e);\n });\n return;\n }\n });\n\n if (!secondaryType) {\n return null;\n }\n\n return (\n <>\n {secondaryType === 'eml' ? <EmailConfirmation showGoBack={false} /> : <OTPAuthenticate hideBackButton />}\n\n <Divider />\n\n <Column gap={2}>\n <Button onClick={resetPassword} variant=\"outline\">\n {t({ id: 'button.createPasswordInstead', message: 'Create a password instead' })}\n </Button>\n {errorMessage && <ErrorText>{errorMessage}</ErrorText>}\n </Column>\n </>\n );\n};\n","import React, { Dispatch } from 'react';\nimport { OTPMethods } from '@stytch/core/public';\nimport { useLingui } from '@lingui/react/macro';\n\nimport Column from '../../../components/atoms/Column';\nimport Button from '../../../components/atoms/Button';\nimport { useGlobalReducer, AppScreens, useConfig } from '../../GlobalContextProvider';\nimport Divider from '../../../components/molecules/Divider';\nimport { PasswordNewUser } from '../Password/PasswordNewUser';\nimport { PasswordAuthenticate } from '../Password/PasswordAuthenticate';\nimport Typography from '../../../components/atoms/Typography';\nimport TextColumn from '../../../components/molecules/TextColumn';\nimport { PasswordlessAuthenticate } from './PasswordlessAuthenticate';\nimport { Action } from '../../reducer';\nimport { hasProduct } from '../../utils';\nimport { usePasswordlessAuthenticate } from './usePasswordlessAuthenticate';\n\nexport const PasswordCreateAuthenticate = () => {\n const { t } = useLingui();\n const { emailMagicLinksOptions, otpOptions, products } = useConfig();\n const [state, dispatch] = useGlobalReducer();\n\n const otpMethods = otpOptions?.methods ?? [];\n const hasEmailMagicLink = hasProduct(products, 'emailMagicLinks') && !!emailMagicLinksOptions;\n const hasOTPEmail = otpMethods.includes(OTPMethods.Email);\n const secondaryType = hasOTPEmail ? 'otp' : hasEmailMagicLink ? 'eml' : undefined;\n const userType = state.formState.passwordState.type;\n\n const secondaryAuth = useSecondaryAuthenticate(secondaryType, { dispatch });\n\n return (\n <Column gap={2}>\n {(() => {\n switch (userType) {\n case 'new':\n return (\n <Column gap={6}>\n {secondaryAuth ? (\n <TextColumn\n header={t({ id: 'password.createAccount.title', message: 'Create an account' })}\n body={t({\n id: 'createAccount.title',\n message: 'Choose how you would like to create your account.',\n })}\n />\n ) : (\n <TextColumn\n header={t({ id: 'password.setPassword.title', message: 'Set a password' })}\n body={t({\n id: 'password.createAccount.content',\n message: 'Finish creating your account by setting a password.',\n })}\n />\n )}\n\n {secondaryAuth && (\n <Button variant=\"primary\" onClick={secondaryAuth.handle} loading={secondaryAuth.isSubmitting}>\n {secondaryAuth.buttonText}\n </Button>\n )}\n\n {secondaryAuth && <Divider />}\n\n <PasswordNewUser />\n </Column>\n );\n\n case 'password':\n return (\n <Column gap={6}>\n <Typography variant=\"header\">{t({ id: 'password.login.title', message: 'Log in' })}</Typography>\n\n <PasswordAuthenticate />\n\n {secondaryAuth && <Divider />}\n\n {secondaryAuth && (\n <Button variant=\"outline\" onClick={secondaryAuth.handle} loading={secondaryAuth.isSubmitting}>\n {secondaryAuth.buttonText}\n </Button>\n )}\n </Column>\n );\n\n case 'passwordless':\n return <PasswordlessAuthenticate secondaryType={secondaryType} />;\n }\n })()}\n\n <Button variant=\"ghost\" onClick={() => dispatch({ type: 'transition', screen: AppScreens.Main })}>\n {t({ id: 'button.goBack', message: 'Go back' })}\n </Button>\n </Column>\n );\n};\n\nfunction useSecondaryAuthenticate(\n secondaryType: 'eml' | 'otp' | undefined,\n {\n dispatch,\n }: {\n dispatch: Dispatch<Action>;\n },\n) {\n const { t } = useLingui();\n const { sendLink, sendCode, isSubmitting } = usePasswordlessAuthenticate();\n\n if (secondaryType == null) {\n return undefined;\n }\n\n const buttonText =\n secondaryType === 'eml'\n ? t({\n id: 'button.emailMagicLink',\n message: 'Email me a login link',\n })\n : t({\n id: 'button.emailOTP',\n message: 'Email me a login code',\n });\n\n const handle =\n secondaryType === 'eml'\n ? async () => {\n await sendLink();\n dispatch({ type: 'transition', screen: AppScreens.EmailConfirmation });\n }\n : async () => {\n await sendCode();\n dispatch({ type: 'transition', screen: AppScreens.OTPAuthenticate });\n };\n\n return {\n buttonText,\n handle,\n isSubmitting,\n };\n}\n","import React, { useState, useMemo, useEffect } from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { DEFAULT_SESSION_DURATION_MINUTES } from '@stytch/core';\nimport { StytchAPIError, StytchEventType } from '@stytch/core/public';\n\nimport Column from '../../../components/atoms/Column';\nimport Typography from '../../../components/atoms/Typography';\nimport { PasswordInput } from '../../../components/molecules/PasswordInput';\n\nimport {\n useGlobalReducer,\n useStytch,\n AppScreens,\n useConfig,\n useErrorCallback,\n useEventCallback,\n} from '../../GlobalContextProvider';\nimport { useBootstrap } from '../../utils';\n\nimport { debounce } from '../../../../utils';\nimport Button from '../../../components/atoms/Button';\n\nimport { getNewPasswordProps, PasswordError, PasswordErrorProps } from '../../../components/molecules/PasswordError';\nimport ErrorText from '../../../components/molecules/ErrorText';\nimport { getTranslatedError } from '../../../../utils/getTranslatedError';\nimport ButtonColumn from '../../../components/molecules/ButtonColumn';\nimport VerticalTransition from '../../../components/atoms/VerticalTransition';\n\nexport const ResetPasswordScreen = () => {\n const { t } = useLingui();\n const stytchClient = useStytch();\n const config = useConfig();\n const { bootstrap } = useBootstrap();\n const [state, dispatch] = useGlobalReducer();\n const passwordToken = state.formState.resetPasswordState.token;\n\n const onEvent = useEventCallback();\n const onError = useErrorCallback();\n\n const resetTokenType = useMemo(() => {\n const parsed = stytchClient.parseAuthenticateUrl();\n return parsed?.tokenType ?? '';\n }, [stytchClient]);\n\n const [password, setPassword] = useState('');\n const [passwordError, setPasswordError] = useState<PasswordErrorProps>({ policy: 'notLoaded' });\n const [errorMessage, setErrorMessage] = useState('');\n const [isSubmitting, setIsSubmitting] = useState(false);\n\n // Passwordless login states\n const [loginErrorMessage, setLoginErrorMessage] = useState('');\n const [isLoggingIn, setIsLoggingIn] = useState(false);\n\n const updateStrengthCheck = useMemo(\n () =>\n debounce((password: string) => {\n setErrorMessage('');\n return stytchClient.passwords\n .strengthCheck({ password })\n .then(({ score, feedback, valid_password, strength_policy, breached_password }) => {\n const common = {\n passwordInvalid: !valid_password,\n isPasswordBreached: breached_password,\n };\n\n if (strength_policy === 'zxcvbn') {\n setPasswordError({\n policy: strength_policy,\n ...common,\n passwordScore: score,\n passwordWarning: feedback.warning,\n passwordSuggestions: feedback.suggestions,\n });\n } else if (strength_policy === 'luds') {\n setPasswordError({\n policy: strength_policy,\n ...common,\n missingCharacters: feedback.luds_requirements.missing_characters,\n missingComplexity: feedback.luds_requirements.missing_complexity,\n });\n }\n });\n }),\n [stytchClient.passwords],\n );\n\n useEffect(() => {\n if (resetTokenType === 'login') {\n stytchClient.magicLinks\n .authenticate(passwordToken, {\n session_duration_minutes: config.sessionOptions?.sessionDurationMinutes ?? DEFAULT_SESSION_DURATION_MINUTES,\n })\n .then(() => {\n dispatch({ type: 'transition', screen: AppScreens.PasswordConfirmation });\n })\n .catch((e: Error) => {\n onError(e);\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps -- SDK-1354\n }, [resetTokenType]);\n\n const onPasswordChange = (password: string) => {\n setPassword(password);\n updateStrengthCheck(password);\n };\n\n const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n setErrorMessage('');\n setIsSubmitting(true);\n stytchClient.passwords\n .resetByEmail({\n token: passwordToken,\n password,\n session_duration_minutes: config.sessionOptions?.sessionDurationMinutes ?? DEFAULT_SESSION_DURATION_MINUTES,\n })\n .then((data) => {\n setIsSubmitting(false);\n onEvent({ type: StytchEventType.PasswordResetByEmail, data });\n dispatch({ type: 'transition', screen: AppScreens.PasswordConfirmation });\n })\n .catch((e: StytchAPIError) => {\n onError(e);\n setErrorMessage(getTranslatedError(e, t));\n setIsSubmitting(false);\n });\n };\n\n const handlePasswordlessLogin = () => {\n setLoginErrorMessage('');\n setIsLoggingIn(true);\n stytchClient.magicLinks\n .authenticate(passwordToken, {\n session_duration_minutes: config.sessionOptions?.sessionDurationMinutes ?? DEFAULT_SESSION_DURATION_MINUTES,\n })\n .then(() => {\n dispatch({ type: 'transition', screen: AppScreens.PasswordConfirmation });\n })\n .catch((e: StytchAPIError) => {\n onError(e);\n setLoginErrorMessage(getTranslatedError(e, t));\n })\n .finally(() => {\n setIsLoggingIn(false);\n });\n };\n\n if (resetTokenType === 'login') {\n return (\n // Same as <LoggingInScreen>, but use its own string ID\n <Typography variant=\"header\" align=\"center\">\n {t({\n id: 'password.reset.loggingInProgress',\n message: 'Logging in...',\n })}\n </Typography>\n );\n }\n\n const passwordInputProps = getNewPasswordProps(bootstrap, passwordError.policy);\n\n return (\n <form onSubmit={handleSubmit}>\n <Column gap={6}>\n <Typography variant=\"header\">\n {t({\n id: 'password.reset.title',\n message: 'Reset your password',\n })}\n </Typography>\n\n <Column gap={2}>\n <PasswordInput\n password={password}\n setPassword={onPasswordChange}\n error={errorMessage}\n {...passwordInputProps}\n />\n\n <div>\n {errorMessage && <ErrorText>{errorMessage}</ErrorText>}\n <PasswordError bootstrap={bootstrap} {...passwordError} />\n </div>\n </Column>\n\n <ButtonColumn\n top={\n <Button\n variant=\"primary\"\n loading={isSubmitting}\n type=\"submit\"\n disabled={passwordError.policy === 'notLoaded' || passwordError.passwordInvalid}\n >\n {t({\n id: 'button.continue',\n message: 'Continue',\n })}\n </Button>\n }\n bottom={\n <Column gap={2}>\n <Button variant=\"outline\" disabled={isLoggingIn} onClick={handlePasswordlessLogin} loading={isLoggingIn}>\n <VerticalTransition\n primary={t({\n id: 'password.reset.loginWithoutPassword',\n message: 'Login without a password',\n })}\n secondary={t({\n id: 'login.loading',\n message: 'Logging in...',\n })}\n triggered={isLoggingIn}\n />\n </Button>\n\n {loginErrorMessage && <ErrorText>{loginErrorMessage}</ErrorText>}\n </Column>\n }\n />\n </Column>\n </form>\n );\n};\n","import { AppScreens, useConfig, useGlobalReducer, useStytch } from '../../GlobalContextProvider';\nimport { convertMagicLinkOptions, convertPasswordResetOptions } from '../../../../utils';\n\n/**\n * Handle the common behavior part of email actions, used in conjunction with <EmailActionLayout>\n */\nexport function useResetResendPasswordActions() {\n const [state, dispatch] = useGlobalReducer();\n const stytchClient = useStytch();\n const email = state.formState.passwordState.email;\n const { emailMagicLinksOptions, passwordOptions } = useConfig();\n\n return {\n email,\n\n resendResetPassword: () =>\n stytchClient.passwords.resetByEmailStart(convertPasswordResetOptions(email, passwordOptions)),\n\n sendMagicLink: async () => {\n const result = await stytchClient.magicLinks.email.loginOrCreate(\n email,\n convertMagicLinkOptions(emailMagicLinksOptions),\n );\n dispatch({ type: 'transition', screen: AppScreens.EmailConfirmation });\n return result;\n },\n\n goBack: () => dispatch({ type: 'transition', screen: AppScreens.Main }),\n };\n}\n","import React from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { Trans } from '@lingui/react';\nimport { EmailSentType } from '@stytch/core';\nimport EmailActionLayout from '../../../components/molecules/EmailActionLayout';\nimport { useStytch } from '../../GlobalContextProvider';\nimport { useResetResendPasswordActions } from './useResetResendPasswordActions';\nimport { readB2CInternals } from '../../../../utils/internal';\n\nexport const PasswordForgot = () => {\n const { t } = useLingui();\n const stytchClient = useStytch();\n\n const { email, resendResetPassword, sendMagicLink, goBack } = useResetResendPasswordActions();\n\n return (\n <EmailActionLayout\n header={t({ id: 'password.forgot.title', message: 'Forgot your password?' })}\n description={\n <Trans\n id=\"password.forgot.content\"\n message=\"A link to reset your password was sent to you at <bold>{email}</bold>.\"\n components={{ bold: <b /> }}\n values={{ email }}\n />\n }\n resend={() => {\n readB2CInternals(stytchClient).networkClient.logEvent({\n name: 'email_try_again_clicked',\n details: { email: email, type: EmailSentType.ResetPassword },\n });\n\n return resendResetPassword();\n }}\n sendMagicLink={sendMagicLink}\n goBack={goBack}\n />\n );\n};\n","import React from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { Trans } from '@lingui/react';\nimport EmailActionLayout from '../../../components/molecules/EmailActionLayout';\nimport { useResetResendPasswordActions } from './useResetResendPasswordActions';\n\nexport const PasswordBreached = () => {\n const { t } = useLingui();\n\n const { email, resendResetPassword, sendMagicLink, goBack } = useResetResendPasswordActions();\n\n return (\n <EmailActionLayout\n header={t({\n id: 'password.breached.title',\n message: 'Check your email to set a new password',\n })}\n description={\n <Trans\n id=\"password.breached.content\"\n message=\"A different site where you use the same password had a security issue recently. For your safety, an email was sent to you at <bold>{email}</bold> to reset your password.\"\n components={{ bold: <b /> }}\n values={{ email }}\n />\n }\n resend={resendResetPassword}\n sendMagicLink={sendMagicLink}\n goBack={goBack}\n />\n );\n};\n","import React from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { Trans } from '@lingui/react';\nimport { StytchEventType } from '@stytch/core/public';\nimport EmailActionLayout from '../../../components/molecules/EmailActionLayout';\nimport { useErrorCallback, useEventCallback } from '../../GlobalContextProvider';\nimport { useResetResendPasswordActions } from './useResetResendPasswordActions';\n\nexport const PasswordSetNew = () => {\n const { t } = useLingui();\n const onError = useErrorCallback();\n const onEvent = useEventCallback();\n\n const { email, resendResetPassword, goBack } = useResetResendPasswordActions();\n\n return (\n <EmailActionLayout\n header={t({\n id: 'password.setNew.title',\n message: 'Check your email',\n })}\n description={\n <Trans\n id=\"password.setNew.content\"\n message=\"A login link was sent to you at <bold>{email}</bold>.\"\n components={{ bold: <b /> }}\n values={{ email }}\n />\n }\n resend={async () => {\n try {\n const data = await resendResetPassword();\n onEvent({ type: StytchEventType.PasswordResetByEmailStart, data });\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n } catch (e: any) {\n onError(e);\n throw e;\n }\n }}\n goBack={goBack}\n />\n );\n};\n","import React from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { Trans } from '@lingui/react';\nimport EmailActionLayout from '../../../components/molecules/EmailActionLayout';\nimport { useResetResendPasswordActions } from './useResetResendPasswordActions';\n\nexport const PasswordDedupe = () => {\n const { t } = useLingui();\n\n const { email, resendResetPassword, sendMagicLink, goBack } = useResetResendPasswordActions();\n\n return (\n <EmailActionLayout\n header={t({\n id: 'password.resetRequired.title',\n message: 'Check your email to set a new password',\n })}\n description={\n <Trans\n id=\"password.resetRequired.content\"\n message=\"We want to make sure your account is secure and that it's really you logging in! A login link was sent to you at <bold>{email}</bold>.\"\n components={{ bold: <b /> }}\n values={{ email }}\n />\n }\n resend={resendResetPassword}\n sendMagicLink={sendMagicLink}\n goBack={goBack}\n />\n );\n};\n","import { StytchEventType } from '@stytch/core/public';\nimport * as React from 'react';\nimport { Confirmation } from '../../../components/molecules/Confirmation';\nimport { useMountEffect } from '../../../hooks/useMountEffect';\nimport { useEventCallback } from '../../GlobalContextProvider';\n\nexport const PasswordConfirmation = () => {\n const onEvent = useEventCallback();\n useMountEffect(() => {\n onEvent({ type: StytchEventType.AuthenticateFlowComplete, data: {} });\n });\n\n return <Confirmation />;\n};\n","import React, { useState } from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { EmailSentType } from '@stytch/core';\nimport { StytchAPIError } from '@stytch/core/public';\n\nimport { useConfig, useGlobalReducer, AppScreens, useStytch, useErrorCallback } from '../../../GlobalContextProvider';\nimport { EMAIL_REGEX } from '../../../../../utils';\nimport Button from '../../../../components/atoms/Button';\nimport EmailInput from '../../../../components/molecules/EmailInput';\nimport Column from '../../../../components/atoms/Column';\nimport { readB2CInternals } from '../../../../../utils/internal';\nimport { getTranslatedError } from '../../../../../utils/getTranslatedError';\nimport { hasProduct } from '../../../utils';\n\nexport const PasswordsEmailForm = () => {\n const { t } = useLingui();\n const [, dispatch] = useGlobalReducer();\n const config = useConfig();\n const stytch = useStytch();\n const onError = useErrorCallback();\n const hasPasskeys = hasProduct(config.products, 'passkeys');\n\n const [email, setEmail] = useState('');\n const [errorMessage, setErrorMessage] = useState<string>('');\n const [isSubmitting, setIsSubmitting] = useState<boolean>(false);\n\n const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n if (!email.match(EMAIL_REGEX)) {\n setErrorMessage(t({ id: 'error.invalidEmail', message: 'Email format is invalid.' }));\n } else {\n setErrorMessage('');\n setIsSubmitting(true);\n\n readB2CInternals(stytch)\n .searchManager.searchUser(email)\n .then(({ userType }) => {\n dispatch({ type: 'update_password_state', passwordState: { email, type: userType } });\n dispatch({ type: 'transition', screen: AppScreens.PasswordCreateOrLogin });\n readB2CInternals(stytch).networkClient.logEvent({\n name: 'email_sent',\n details: { email: email, type: EmailSentType.ResetPassword },\n });\n })\n .catch((e: StytchAPIError) => {\n onError(e);\n setIsSubmitting(false);\n setErrorMessage(getTranslatedError(e, t));\n });\n }\n };\n\n return (\n <Column as=\"form\" onSubmit={handleSubmit} gap={4}>\n <EmailInput email={email} setEmail={setEmail} hasPasskeys={hasPasskeys} hideLabel error={errorMessage} />\n <Button variant=\"primary\" loading={isSubmitting} type=\"submit\">\n {t({ id: 'button.emailLogin', message: 'Continue with email' })}\n </Button>\n </Column>\n );\n};\n","export enum Device {\n DESKTOP = 'Desktop device',\n MOBILE = 'Mobile device',\n UNKNOWN = 'Unknown device',\n}\n\nexport const determineDeviceType = (userAgent: string): Device => {\n // TODO: Add more device types/ make more fine grained\n if (userAgent === '') {\n return Device.UNKNOWN;\n }\n\n // eslint-disable-next-line lingui/no-unlocalized-strings\n const mobileKeywords = ['mobile', 'android', 'iphone', 'ipad', 'windows phone'];\n userAgent = userAgent.toLowerCase();\n for (const keyword of mobileKeywords) {\n if (userAgent.includes(keyword)) {\n return Device.MOBILE;\n }\n }\n\n return Device.DESKTOP;\n};\n\n// This commonly occurs when a user tries to register a Passkey using a QR code on a separate device\n// but the Passkey has already been sync'd to that device (e.g. the user registers an Apple passkey on their Macbook,\n// it then syncs to their iPhone, and then they try to register the same Passkey on their iPhone). At some point we\n// may be able to remove this logic when this is handled within the browser Passkeys UI.\nexport const SAFARI_CROSS_DEVICE_DUPLICATE_REG_ERROR_MESSAGE =\n 'At least one credential matches an entry of the excludeCredentials list in the platform attached authenticator.';\nexport const CHROME_CROSS_DEVICE_DUPLICATE_REG_ERROR_MESSAGE =\n 'The user attempted to register an authenticator that contains one of the credentials already registered with the relying party.';\n","import React, { useEffect, useState } from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { StytchAPIError, StytchEventType } from '@stytch/core/public';\nimport Column from '../../../components/atoms/Column';\nimport TextColumn from '../../../components/molecules/TextColumn';\n\nimport {\n AppScreens,\n useConfig,\n useErrorCallback,\n useEventCallback,\n useGlobalReducer,\n useStytch,\n} from '../../GlobalContextProvider';\n\nimport Button from '../../../components/atoms/Button';\nimport { DEFAULT_SESSION_DURATION_MINUTES } from '@stytch/core';\nimport {\n CHROME_CROSS_DEVICE_DUPLICATE_REG_ERROR_MESSAGE,\n SAFARI_CROSS_DEVICE_DUPLICATE_REG_ERROR_MESSAGE,\n} from '../../../../utils/passkeys';\nimport { LoadingScreen } from '../../../components/molecules/Loading';\nimport ButtonColumn from '../../../components/molecules/ButtonColumn';\nimport ErrorText from '../../../components/molecules/ErrorText';\n\nexport const PasskeyRegistrationStart = () => {\n const { t } = useLingui();\n const stytchClient = useStytch();\n const [userState, setUserState] = useState<'noUser' | 'hasUser' | 'loading'>(() =>\n // We'll optimistically say if the user has a cached session then they are logged in, otherwise we try loading first\n stytchClient.user.getSync() != null ? 'hasUser' : 'loading',\n );\n const [error, setError] = useState<string>();\n const config = useConfig();\n\n const onEvent = useEventCallback();\n const onError = useErrorCallback();\n\n useEffect(() => {\n stytchClient.user\n .get()\n .then(() => {\n setUserState('hasUser');\n })\n .catch((e: StytchAPIError) => {\n setUserState('noUser');\n onError(e);\n });\n }, [onError, stytchClient]);\n\n const [, dispatch] = useGlobalReducer();\n\n const onCreatePasskey = () => {\n setError(undefined);\n\n stytchClient.webauthn\n .register({\n domain: config.passkeyOptions?.domain,\n is_passkey: true,\n session_duration_minutes: config.sessionOptions?.sessionDurationMinutes ?? DEFAULT_SESSION_DURATION_MINUTES,\n })\n .then((data) => {\n onEvent({ type: StytchEventType.PasskeyRegister, data });\n dispatch({ type: 'transition', screen: AppScreens.PasskeyRegistrationSuccess });\n })\n .catch((e: StytchAPIError) => {\n onError(e);\n\n if (\n e.message.includes(SAFARI_CROSS_DEVICE_DUPLICATE_REG_ERROR_MESSAGE) ||\n e.message.includes(CHROME_CROSS_DEVICE_DUPLICATE_REG_ERROR_MESSAGE)\n ) {\n setError(\n t({\n id: 'error.duplicatePasskey',\n message:\n 'The Passkey cannot be created as it seems to be already registered. It is possible this Passkey was registered on another device but has synced cross-device.',\n }),\n );\n return;\n } else {\n setError(\n t({\n id: 'error.passkeyNotCreated',\n message:\n 'Your Passkey was not created. Click “Create a Passkey” to try again or skip without adding a Passkey.',\n }),\n );\n }\n });\n };\n\n const onSkip = () => {\n onEvent({ type: StytchEventType.PasskeySkip, data: {} });\n dispatch({ type: 'transition', screen: AppScreens.PasskeyRegistrationSuccess });\n };\n\n if (userState === 'loading') {\n return <LoadingScreen />;\n }\n\n if (userState === 'noUser') {\n return (\n <ErrorText>\n {t({\n id: 'passkey.registrationStart.error.noUser',\n message: 'Error: Cannot use PasskeyRegistration component without active user authenticated.',\n })}\n </ErrorText>\n );\n }\n\n return (\n <Column gap={6}>\n <TextColumn\n header={t({\n id: 'passkey.registrationStart.title',\n message: 'Set up a new Passkey',\n })}\n body={t({\n id: 'passkey.registrationStart.subtitle',\n message: \"With Passkeys you don't need to remember complex passwords.\",\n })}\n helper={t({\n id: 'passkey.registrationStart.description',\n message:\n 'Passkeys are encrypted digital keys you create using your fingerprint, face, or screen lock. Creating a Passkey will allow you to easily and securely log in to your account.',\n })}\n />\n\n <ButtonColumn>\n <Button variant=\"primary\" onClick={() => onCreatePasskey()}>\n {t({\n id: 'button.createPasskey',\n message: 'Create a Passkey',\n })}\n </Button>\n\n {error && <ErrorText>{error}</ErrorText>}\n\n <Button variant=\"ghost\" onClick={() => onSkip()}>\n {t({\n id: 'button.skip',\n message: 'Skip',\n })}\n </Button>\n </ButtonColumn>\n </Column>\n );\n};\n","import { useSyncExternalStore } from 'react';\nimport { useStytch } from '../b2c/GlobalContextProvider';\nimport { User } from '@stytch/core/public';\n\n// useStytchUser is a very lightweight copy-pasta of the hook from stytch-react\n// If we end up calling this in several places, consider hoisting to global context\nexport const useStytchUser = (): User | null => {\n const stytch = useStytch();\n return useSyncExternalStore(stytch.onStateChange, () => stytch.user.getSync());\n};\n","import React, { useEffect, useRef } from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport Button from '../../../components/atoms/Button';\nimport Typography from '../../../components/atoms/Typography';\nimport Input from '../../../components/molecules/Input';\nimport styles from './EditableRow.module.css';\nimport classNames from 'classnames';\n\nexport type EditableRowState =\n | { type: 'viewing' } //\n | { type: 'editing'; id: string; newName: string }\n | { type: 'deleting'; id: string };\n\nconst commonButtonProps = {\n block: false,\n variant: 'ghost',\n} as const;\n\ntype Props = {\n id: string;\n name: string;\n className?: string;\n state: EditableRowState;\n updateState: (newState: EditableRowState) => void;\n handleEdit: (id: string, newName: string) => void;\n};\n\nexport const EditableRow = ({ id, name, className, state, updateState, handleEdit }: Props) => {\n const { t } = useLingui();\n\n const isEditing = isEditingRow(id, state);\n const othersEditing = state.type !== 'viewing' && state.id !== id;\n\n const inputRef = useRef<HTMLInputElement>(null);\n useEffect(() => {\n if (isEditing) {\n inputRef.current?.focus();\n }\n }, [isEditing]);\n\n return (\n <form\n className={classNames(styles.row, className)}\n onSubmit={(evt) => {\n evt.preventDefault();\n if (isEditing) {\n handleEdit(id, state.newName);\n }\n }}\n data-testid={testId(id)}\n >\n <div className={styles.input}>\n {isEditing ? (\n <Input\n id={`passkey-name-${id}`}\n ref={inputRef}\n label={t({ id: 'passkey.editing.label', message: 'Passkey name' })}\n hideLabel\n value={isEditing ? state.newName : name}\n onChange={(e) => {\n if (isEditing) {\n updateState({ ...state, newName: e.target.value });\n }\n }}\n />\n ) : (\n <Typography color=\"muted\">{name}</Typography>\n )}\n </div>\n\n {(() => {\n if (state.type === 'deleting') return null;\n\n if (isEditing) {\n return (\n <div className={styles.actions}>\n <Button key=\"submit\" type=\"submit\" {...commonButtonProps}>\n {t({ id: 'button.save', message: 'Save' })}\n </Button>\n <Button onClick={() => updateState({ type: 'viewing' })} {...commonButtonProps}>\n {t({ id: 'button.cancel', message: 'Cancel' })}\n </Button>\n </div>\n );\n }\n\n if (state.type === 'viewing' || othersEditing) {\n return (\n <div className={styles.actions}>\n <Button\n // key required to workaround a React/Preact issue when button type is updated on re-render\n key=\"edit\"\n onClick={() => updateState({ type: 'editing', id, newName: name })}\n disabled={othersEditing}\n {...commonButtonProps}\n >\n {t({ id: 'button.edit', message: 'Edit' })}\n </Button>\n <Button\n onClick={() => updateState({ type: 'deleting', id })}\n disabled={othersEditing}\n {...commonButtonProps}\n >\n {t({ id: 'button.delete', message: 'Delete' })}\n </Button>\n </div>\n );\n }\n })()}\n </form>\n );\n};\n\nexport function isEditingRow(\n id: string,\n state: EditableRowState,\n): state is Extract<EditableRowState, { type: 'editing' }> {\n return state.type === 'editing' && state.id === id;\n}\n\nexport function testId(id: string) {\n return `editable-row-${id}`;\n}\n","import React, { useState } from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { logger } from '@stytch/core';\nimport { errorToStytchError, StytchEventType, WebAuthnRegistration } from '@stytch/core/public';\nimport { errorToast } from '../../../components/atoms/Toast';\nimport { AppScreens, useEventCallback, useGlobalReducer, useStytch } from '../../GlobalContextProvider';\nimport { useStytchUser } from '../../../hooks/useStytchUser';\nimport Column from '../../../components/atoms/Column';\nimport Typography from '../../../components/atoms/Typography';\nimport Button from '../../../components/atoms/Button';\nimport { EditableRow, EditableRowState } from './EditableRow';\nimport ButtonColumn from '../../../components/molecules/ButtonColumn';\nimport ErrorText from '../../../components/molecules/ErrorText';\nimport styles from './PasskeyRegistrationSuccess.module.css';\n\n// TODO: Add some type of device icon once we have better insight into that.\n// const deviceTypeToIcon: Partial<Record<Device, React.JSX.Element>> = {\n// [Device.DESKTOP]: <Computer />,\n// [Device.MOBILE]: <Mobile />,\n// };\n\ntype OptimisticUpdate = {\n registrations: WebAuthnRegistration[];\n update: Promise<unknown>;\n};\n\nexport const PasskeyRegistrationSuccess = () => {\n const { t } = useLingui();\n const stytchClient = useStytch();\n const user = useStytchUser();\n\n const [optimisticRegistrations, setOptimisticRegistrations] = useState<OptimisticUpdate>();\n const webAuthnRegistrations = optimisticRegistrations?.registrations ?? user?.webauthn_registrations;\n\n const [editableRowState, setEditableRowState] = useState<EditableRowState>({ type: 'viewing' });\n\n const onEvent = useEventCallback();\n const [, dispatch] = useGlobalReducer();\n\n const onSetUpANewPasskey = async () => {\n await optimisticRegistrations?.update;\n dispatch({ type: 'transition', screen: AppScreens.PasskeyRegistrationStart });\n };\n\n const onDone = async () => {\n await optimisticRegistrations?.update;\n onEvent({ type: StytchEventType.PasskeyDone, data: {} });\n };\n\n const startOptimisticUpdate = (registrations: WebAuthnRegistration[], update: Promise<unknown>) => {\n const prevEditableRowState = { ...editableRowState };\n\n setOptimisticRegistrations({ registrations, update });\n setEditableRowState({ type: 'viewing' });\n\n update\n .catch((error) => {\n logger.error(error);\n errorToast({ message: errorToStytchError(error).message });\n setEditableRowState(prevEditableRowState);\n })\n .then(() => {\n setOptimisticRegistrations(undefined);\n });\n };\n\n const deleteReg = (id: string) => {\n if (!user) return;\n\n startOptimisticUpdate(\n user.webauthn_registrations.filter((r) => r.webauthn_registration_id !== id),\n stytchClient.user.deleteWebauthnRegistration(id),\n );\n };\n\n const updateReg = (id: string, name: string) => {\n if (!user) return;\n\n startOptimisticUpdate(\n user.webauthn_registrations.map((r) => (r.webauthn_registration_id === id ? { ...r, name } : r)),\n stytchClient.webauthn.update({ webauthn_registration_id: id, name }).then(() => stytchClient.user.get()),\n );\n };\n\n return (\n <Column gap={6}>\n <Typography variant=\"header\">\n {t({\n id: 'passkey.registrationSuccess.title',\n message: 'Passkey successfully created!',\n })}\n </Typography>\n\n {webAuthnRegistrations && webAuthnRegistrations.length > 0 && (\n <Column gap={4}>\n <Typography weight=\"medium\">\n {t({\n id: 'passkey.registrationSuccess.existingPasskeys',\n message: 'Existing Passkeys',\n })}\n </Typography>\n\n <Column className={styles.existing}>\n {webAuthnRegistrations.map((registration: WebAuthnRegistration) => (\n // TODO: Add some type of device icon once we have better insight into that.\n // deviceTypeToIcon[determineDeviceType(registration.user_agent)]\n <EditableRow\n className={styles.passkeyRow}\n key={registration.webauthn_registration_id}\n id={registration.webauthn_registration_id}\n name={registration.name}\n state={editableRowState}\n updateState={setEditableRowState}\n handleEdit={updateReg}\n />\n ))}\n </Column>\n </Column>\n )}\n\n <ButtonColumn>\n {editableRowState.type === 'deleting' ? (\n <>\n <Button\n variant=\"destructive\"\n onClick={() => {\n deleteReg(editableRowState.id);\n }}\n >\n {t({\n id: 'button.delete',\n message: 'Delete',\n })}\n </Button>\n\n <ErrorText\n // alert role to ensure this gets read out when the row delete button is clicked\n role=\"alert\"\n >\n {t({\n id: 'passkey.registrationSuccess.deleteWarning',\n message: 'Once deleted, the passkey cannot be restored.',\n })}\n </ErrorText>\n\n <Button\n variant=\"ghost\"\n onClick={() => {\n setEditableRowState({ type: 'viewing' });\n }}\n >\n {t({\n id: 'button.cancel',\n message: 'Cancel',\n })}\n </Button>\n </>\n ) : (\n <>\n <Button variant=\"primary\" disabled={editableRowState.type === 'editing'} onClick={onSetUpANewPasskey}>\n {t({\n id: 'passkey.registrationSuccess.setupAnother',\n message: 'Set up another Passkey',\n })}\n </Button>\n\n <Button variant=\"ghost\" disabled={editableRowState.type === 'editing'} onClick={onDone}>\n {t({\n id: 'button.done',\n message: 'Done',\n })}\n </Button>\n </>\n )}\n </ButtonColumn>\n </Column>\n );\n};\n","import * as React from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { StytchEventType } from '@stytch/core/public';\nimport { useMountEffect } from '../../../hooks/useMountEffect';\nimport { useEventCallback } from '../../GlobalContextProvider';\nimport { Confirmation } from '../../../components/molecules/Confirmation';\n\nexport const PasskeyConfirmation = () => {\n const { t } = useLingui();\n const onEvent = useEventCallback();\n useMountEffect(() => {\n onEvent({ type: StytchEventType.AuthenticateFlowComplete, data: {} });\n });\n\n return (\n <Confirmation\n text={t({ id: 'passkey.success.content', message: 'Your Passkey has been successfully authenticated.' })}\n />\n );\n};\n","import React from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport Button from '../../../../components/atoms/Button';\nimport { StartPasskeyAuth } from '../../../../hooks/usePromptPasskey';\nimport { PasskeyIcon } from '../../../../../assets';\n\nexport const PasskeyButton = ({ startPasskeyAuth }: { startPasskeyAuth: StartPasskeyAuth }) => {\n const { t } = useLingui();\n\n return (\n <Button icon={<PasskeyIcon />} variant=\"outline\" onClick={startPasskeyAuth}>\n {t({ id: 'button.loginWithPasskey', message: 'Login with a Passkey' })}\n </Button>\n );\n};\n","import React from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { StytchEventType } from '@stytch/core/public';\nimport {\n AppScreens,\n useErrorCallback,\n useGlobalReducer,\n useStytch,\n useEventCallback,\n} from '../../GlobalContextProvider';\nimport { connectWithWallet, isSolanaWallet } from '../../../../utils/crypto';\nimport Column from '../../../components/atoms/Column';\nimport TextColumn from '../../../components/molecules/TextColumn';\nimport Button from '../../../components/atoms/Button';\nimport { useMountEffect } from '../../../hooks/useMountEffect';\n\nexport const ConnectWallet = () => {\n const { t } = useLingui();\n const onEvent = useEventCallback();\n const onError = useErrorCallback();\n const handleError = () => {\n // eslint-disable-next-line lingui/no-unlocalized-strings -- This is not shown in the UI, just sent to the error callback\n onError({ message: '[Error] Could not connect to wallet' });\n dispatch({ type: 'transition', screen: AppScreens.CryptoError });\n };\n const stytchClient = useStytch();\n const [state, dispatch] = useGlobalReducer();\n const walletOption = state.formState.cryptoState.walletOption;\n const walletType = isSolanaWallet(walletOption) ? 'solana' : 'ethereum';\n\n const onConnectWallet = async () => {\n const address = await connectWithWallet({ wallet: walletOption });\n stytchClient.cryptoWallets\n .authenticateStart({\n crypto_wallet_address: address,\n crypto_wallet_type: walletType,\n })\n .then((data) => {\n onEvent({ type: StytchEventType.CryptoWalletAuthenticateStart, data });\n dispatch({\n type: 'update_crypto_state',\n cryptoState: {\n walletAddress: address,\n walletChallenge: data.challenge,\n walletOption: walletOption,\n },\n });\n\n dispatch({ type: 'transition', screen: AppScreens.CryptoSignMessage });\n })\n .catch(handleError);\n };\n\n useMountEffect(() => {\n onConnectWallet();\n });\n\n return (\n <Column gap={6}>\n <TextColumn\n header={t({ id: 'crypto.connectWallet.title', message: 'Connecting to your wallet...' })}\n body={t({\n id: 'crypto.connectWallet.instructionPopup',\n message: 'Complete sign in by connecting through the wallet pop up in the right corner of your screen.',\n })}\n helper={t({\n id: 'crypto.troubleHelp',\n message: 'If you are having trouble, go back to the main screen and try logging in again.',\n })}\n />\n <Button variant=\"outline\" onClick={() => dispatch({ type: 'transition', screen: AppScreens.Main })}>\n {t({ id: 'button.goBack', message: 'Go back' })}\n </Button>\n </Column>\n );\n};\n","import React from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { DEFAULT_SESSION_DURATION_MINUTES } from '@stytch/core';\nimport { StytchEventType } from '@stytch/core/public';\nimport {\n AppScreens,\n useGlobalReducer,\n useStytch,\n useConfig,\n useErrorCallback,\n useEventCallback,\n} from '../../GlobalContextProvider';\nimport { signMessageWithWallet, isSolanaWallet } from '../../../../utils/crypto';\nimport Column from '../../../components/atoms/Column';\nimport TextColumn from '../../../components/molecules/TextColumn';\nimport Button from '../../../components/atoms/Button';\nimport { useMountEffect } from '../../../hooks/useMountEffect';\n\nexport const SignMessage = () => {\n const { t } = useLingui();\n const onEvent = useEventCallback();\n const onError = useErrorCallback();\n const handleError = () => {\n // eslint-disable-next-line lingui/no-unlocalized-strings -- This is not shown in the UI, just sent to the error callback\n onError({ message: '[Error] Could not sign message' });\n dispatch({ type: 'transition', screen: AppScreens.CryptoError });\n };\n const stytchClient = useStytch();\n const config = useConfig();\n const [state, dispatch] = useGlobalReducer();\n const { walletChallenge, walletAddress, walletOption } = state.formState.cryptoState;\n const walletType = isSolanaWallet(walletOption) ? 'solana' : 'ethereum';\n\n const onSignWallet = async () => {\n const signature = await signMessageWithWallet({\n wallet: walletOption,\n message: walletChallenge,\n address: walletAddress,\n });\n\n stytchClient.cryptoWallets\n .authenticate({\n crypto_wallet_address: walletAddress,\n crypto_wallet_type: walletType,\n signature,\n session_duration_minutes: config.sessionOptions?.sessionDurationMinutes ?? DEFAULT_SESSION_DURATION_MINUTES,\n })\n .then((data) => {\n onEvent({ type: StytchEventType.CryptoWalletAuthenticate, data });\n dispatch({ type: 'transition', screen: AppScreens.CryptoConfirmation });\n })\n .catch(handleError);\n };\n\n useMountEffect(() => {\n onSignWallet();\n });\n\n return (\n <Column gap={6}>\n <TextColumn\n header={t({ id: 'crypto.signMessage.title', message: 'Completing signature request...' })}\n body={t({\n id: 'crypto.signMessage.instruction',\n message: 'Complete the signature request through the wallet pop up in the right corner of your screen.',\n })}\n helper={t({\n id: 'crypto.troubleHelp',\n message: 'If you are having trouble, go back to the main screen and try logging in again.',\n })}\n />\n\n <Button variant=\"outline\" onClick={() => dispatch({ type: 'transition', screen: AppScreens.Main })}>\n {t({ id: 'button.goBack', message: 'Go back' })}\n </Button>\n </Column>\n );\n};\n","import React from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport Column from '../../../components/atoms/Column';\nimport Typography from '../../../components/atoms/Typography';\nimport { AppScreens, useGlobalReducer } from '../../GlobalContextProvider';\nimport { CryptoWalletButtons } from './WalletButtons';\nimport Button from '../../../components/atoms/Button';\nimport ButtonColumn from '../../../components/molecules/ButtonColumn';\n\nexport const OtherCryptoWallets = () => {\n const { t } = useLingui();\n const [, dispatch] = useGlobalReducer();\n\n return (\n <Column gap={6}>\n <Typography variant=\"header\">\n {t({ id: 'crypto.continueWithOtherWallet.title', message: 'Continue with other wallet' })}\n </Typography>\n\n <ButtonColumn>\n <CryptoWalletButtons type=\"other\" />\n <Button variant=\"ghost\" onClick={() => dispatch({ type: 'transition', screen: AppScreens.Main })}>\n {t({ id: 'button.goBack', message: 'Go back' })}\n </Button>\n </ButtonColumn>\n </Column>\n );\n};\n","import React from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { Wallets } from '@stytch/core/public';\nimport { AppScreens, useGlobalReducer } from '../../GlobalContextProvider';\nimport Column from '../../../components/atoms/Column';\nimport TextColumn from '../../../components/molecules/TextColumn';\nimport Button, { ButtonAnchor } from '../../../components/atoms/Button';\nimport ButtonColumn from '../../../components/molecules/ButtonColumn';\nimport { useCryptoIcon } from '../../../../utils/crypto';\n\nconst commonButtonProps = {\n variant: 'outline',\n target: '_blank',\n rel: 'noreferrer',\n} as const;\n\nexport const SetupNewWallet = () => {\n const { t } = useLingui();\n const [, dispatch] = useGlobalReducer();\n\n const getCryptoIcon = useCryptoIcon();\n const MetamaskIcon = getCryptoIcon(Wallets.Metamask);\n const PhantomIcon = getCryptoIcon(Wallets.Phantom);\n const CoinbaseIcon = getCryptoIcon(Wallets.Coinbase);\n const BinanceIcon = getCryptoIcon(Wallets.Binance);\n\n return (\n <Column gap={6}>\n <TextColumn\n header={t({ id: 'crypto.setupNewWallet.title', message: 'Set up a new crypto wallet' })}\n body={t({\n id: 'crypto.setupNewWallet.content',\n message: 'Get started by downloading any Ethereum or Solana wallet.',\n })}\n helper={t({\n id: 'crypto.setupNewWallet.instruction',\n message:\n 'We’ve included a few examples of wallet extensions you can find below. Once you’ve set up your wallet, click “Go back” to use it and sign in.',\n })}\n />\n\n <ButtonColumn>\n <ButtonAnchor {...commonButtonProps} icon={<MetamaskIcon />} href=\"https://metamask.io/\">\n {t({ id: 'crypto.wallet.metamask', message: 'Metamask' })}\n </ButtonAnchor>\n <ButtonAnchor {...commonButtonProps} icon={<PhantomIcon />} href=\"https://phantom.com/\">\n {t({ id: 'crypto.wallet.phantom', message: 'Phantom' })}\n </ButtonAnchor>\n\n <ButtonAnchor {...commonButtonProps} icon={<CoinbaseIcon />} href=\"https://www.coinbase.com/wallet\">\n {t({ id: 'crypto.wallet.coinbase', message: 'Coinbase' })}\n </ButtonAnchor>\n\n <ButtonAnchor {...commonButtonProps} icon={<BinanceIcon />} href=\"https://web3.binance.com/en/about\">\n {t({ id: 'crypto.wallet.binance', message: 'Binance' })}\n </ButtonAnchor>\n\n <Button variant=\"primary\" onClick={() => dispatch({ type: 'transition', screen: AppScreens.Main })}>\n {t({ id: 'button.goBack', message: 'Go back' })}\n </Button>\n </ButtonColumn>\n </Column>\n );\n};\n","import React from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport Column from '../../../components/atoms/Column';\nimport TextColumn from '../../../components/molecules/TextColumn';\nimport { useGlobalReducer, AppScreens } from '../../GlobalContextProvider';\nimport Button from '../../../components/atoms/Button';\n\nexport const Error = () => {\n const { t } = useLingui();\n const [, dispatch] = useGlobalReducer();\n\n return (\n <Column gap={6}>\n <TextColumn\n header={t({ id: 'crypto.error.title', message: 'Looks like there was an error' })}\n body={t({\n id: 'crypto.error.content',\n message: 'Your sign in request could not be completed. Go back to the main screen and try logging in again.',\n })}\n />\n <Button variant=\"outline\" onClick={() => dispatch({ type: 'transition', screen: AppScreens.Main })}>\n {t({ id: 'button.goBack', message: 'Go back' })}\n </Button>\n </Column>\n );\n};\n","import React from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport Column from '../../../components/atoms/Column';\nimport { AppScreens, useGlobalReducer } from '../../GlobalContextProvider';\nimport Button from '../../../components/atoms/Button';\nimport { Confirmation } from '../../../components/molecules/Confirmation';\n\nexport const Success = () => {\n const { t } = useLingui();\n const [, dispatch] = useGlobalReducer();\n\n return (\n <Column gap={6}>\n <Confirmation\n header={t({ id: 'crypto.success.title', message: 'Success!' })}\n text={t({ id: 'crypto.success.content', message: 'You have successfully connected your wallet.' })}\n />\n <Button variant=\"outline\" onClick={() => dispatch({ type: 'transition', screen: AppScreens.Main })}>\n {t({ id: 'button.goBack', message: 'Go back' })}\n </Button>\n </Column>\n );\n};\n","import * as React from 'react';\nimport type { SVGProps } from 'react';\n/* AUTOGENERATED: DO NOT EDIT */\nimport _styles from '../logo.module.css';\nexport const AmazonIcon = (props: SVGProps<SVGSVGElement>): JSX.Element => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} fill=\"none\" {...props}>\n <path\n fill=\"#F90\"\n d=\"M16.5 15.53C9.2 19 4.69 16.1 1.8 14.33c-.19-.1-.5.03-.23.34.97 1.17 4.13 3.98 8.25 3.98s6.59-2.25 6.9-2.64c.3-.4.08-.6-.22-.48m2.04-1.13c-.2-.25-1.19-.3-1.81-.22s-1.57.45-1.49.68c.04.09.13.05.56.01s1.64-.2 1.9.14c.25.33-.4 1.9-.51 2.16s.04.32.25.15.6-.6.85-1.23c.25-.62.4-1.5.25-1.69\"\n />\n <path\n fill=\"#000\"\n fillRule=\"evenodd\"\n d=\"M11.6 8.46c0 .9.02 1.67-.44 2.47-.37.66-.96 1.06-1.62 1.06-.9 0-1.42-.68-1.42-1.69 0-1.99 1.79-2.35 3.48-2.35zm2.35 5.69a.5.5 0 0 1-.55.05c-.78-.64-.91-.94-1.34-1.55-1.28 1.3-2.19 1.7-3.85 1.7-1.96 0-3.5-1.22-3.5-3.64 0-1.9 1.03-3.19 2.5-3.82 1.26-.56 3.03-.66 4.39-.81v-.3c0-.56.04-1.22-.29-1.7-.28-.43-.83-.6-1.3-.6-.9 0-1.7.45-1.89 1.4-.04.21-.19.42-.4.43l-2.27-.25c-.19-.04-.4-.2-.34-.49C5.63 1.83 8.1 1 10.33 1c1.13 0 2.62.3 3.52 1.16 1.13 1.06 1.02 2.48 1.02 4.02v3.64c0 1.1.46 1.57.88 2.16.16.21.19.47 0 .63-.48.4-1.33 1.13-1.8 1.55z\"\n clipRule=\"evenodd\"\n className={_styles.darkInvert}\n />\n </svg>\n);\n","import * as React from 'react';\nimport type { SVGProps } from 'react';\n/* AUTOGENERATED: DO NOT EDIT */\nimport _styles from '../logo.module.css';\nexport const AppleIcon = (props: SVGProps<SVGSVGElement>): JSX.Element => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} fill=\"none\" {...props}>\n <path\n fill=\"#000\"\n d=\"M16.55 7.14c-.1.08-1.86 1.12-1.86 3.43A4 4 0 0 0 17 14.2c0 .06-.35 1.3-1.18 2.56-.74 1.1-1.5 2.21-2.67 2.21s-1.47-.7-2.82-.7c-1.32 0-1.79.73-2.86.73S5.66 17.97 4.8 16.7c-1-1.48-1.8-3.78-1.8-5.96C3 7.25 5.17 5.4 7.31 5.4c1.14 0 2.09.78 2.8.78.68 0 1.74-.83 3.03-.83.5 0 2.26.05 3.41 1.79m-4.02-3.27c.53-.66.91-1.59.91-2.5q0-.22-.03-.37c-.87.03-1.9.6-2.53 1.36-.49.59-.95 1.5-.95 2.44 0 .14.03.28.04.33l.23.02c.78 0 1.76-.54 2.33-1.28\"\n className={_styles.darkInvert}\n />\n </svg>\n);\n","import * as React from 'react';\nimport type { SVGProps } from 'react';\n/* AUTOGENERATED: DO NOT EDIT */\nimport _styles from '../logo.module.css';\nexport const BinanceIcon = (props: SVGProps<SVGSVGElement>): JSX.Element => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} fill=\"none\" {...props}>\n <path\n fill=\"#F3BA2F\"\n d=\"m6.43 8.56 3.5-3.5 3.49 3.5 2.03-2.03L9.92 1 4.4 6.53zM4.99 10 2.96 7.97.92 10l2.04 2.03zM6.43 11.44l3.5 3.5 3.49-3.5 2.03 2.03L9.92 19 4.4 13.47zM16.89 12.03 18.92 10 16.9 7.97 14.85 10z\"\n />\n <path fill=\"#F3BA2F\" d=\"M11.99 10 9.92 7.93 8.4 9.46l-.18.18-.36.36 2.06 2.07z\" />\n </svg>\n);\n","import * as React from 'react';\nimport type { SVGProps } from 'react';\n/* AUTOGENERATED: DO NOT EDIT */\nimport _styles from '../logo.module.css';\nexport const BitbucketIcon = (props: SVGProps<SVGSVGElement>): JSX.Element => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} fill=\"none\" {...props}>\n <path\n fill=\"#1868DB\"\n d=\"m17.96 9.14-1.34 8.08a.9.9 0 0 1-.93.78H4.3a.9.9 0 0 1-.93-.78L1.02 2.81c-.1-.5.17-.81.64-.81h16.68c.47 0 .73.32.64.8l-.64 3.8c-.09.55-.4.78-.93.78H7.37q-.23 0-.2.26l.79 4.78q.05.18.23.2h3.62q.17-.02.23-.2l.56-3.46c.05-.43.35-.6.75-.6h3.94c.58 0 .76.29.67.78\"\n />\n </svg>\n);\n","import * as React from 'react';\nimport type { SVGProps } from 'react';\n/* AUTOGENERATED: DO NOT EDIT */\nimport _styles from '../logo.module.css';\nexport const CoinbaseIcon = (props: SVGProps<SVGSVGElement>): JSX.Element => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} fill=\"none\" {...props}>\n <path fill=\"#0052FF\" d=\"M10.02 14.5a4.5 4.5 0 1 1 4.44-5.25H19a9 9 0 1 0 0 1.5h-4.54a4.5 4.5 0 0 1-4.44 3.75\" />\n </svg>\n);\n","import * as React from 'react';\nimport type { SVGProps } from 'react';\n/* AUTOGENERATED: DO NOT EDIT */\nimport _styles from '../logo.module.css';\nexport const DiscordIcon = (props: SVGProps<SVGSVGElement>): JSX.Element => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} fill=\"none\" {...props}>\n <path\n fill=\"#5865F2\"\n d=\"M12.53 3q-.26.44-.47.92a15 15 0 0 0-4.12 0q-.21-.47-.48-.92-1.93.3-3.72 1.1a13.8 13.8 0 0 0-2.66 9.72Q3.15 15.28 5.63 16q.56-.72.98-1.5a10 10 0 0 1-1.54-.7l.38-.27c2.88 1.3 6.22 1.3 9.1 0q.19.15.38.27a10 10 0 0 1-1.54.7q.41.8.98 1.5 2.48-.7 4.55-2.18c.38-3.69-.64-6.89-2.67-9.73a15 15 0 0 0-3.71-1.08zm-5.52 8.86c-.89 0-1.62-.77-1.62-1.72 0-.94.7-1.71 1.62-1.71.9 0 1.63.77 1.62 1.71-.02.95-.72 1.72-1.62 1.72m5.98 0c-.89 0-1.62-.77-1.62-1.72 0-.94.7-1.71 1.62-1.71.91 0 1.63.77 1.62 1.71-.02.95-.72 1.72-1.62 1.72\"\n />\n </svg>\n);\n","import * as React from 'react';\nimport type { SVGProps } from 'react';\n/* AUTOGENERATED: DO NOT EDIT */\nimport _styles from '../logo.module.css';\nexport const FacebookIcon = (props: SVGProps<SVGSVGElement>): JSX.Element => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} fill=\"none\" {...props}>\n <path\n fill=\"#0866FF\"\n d=\"M19 10a9 9 0 1 0-11.17 8.73v-5.98H5.97V10h1.86V8.81c0-3.06 1.38-4.48 4.39-4.48.57 0 1.55.11 1.96.23v2.49q-.35-.03-1.04-.03c-1.48 0-2.05.55-2.05 2V10h2.94l-.5 2.75h-2.44v6.18A9 9 0 0 0 19 10\"\n />\n <path\n fill=\"#fff\"\n d=\"m13.53 12.75.5-2.75h-2.94v-.97c0-1.46.57-2.01 2.05-2.01q.7 0 1.04.03v-2.5a10 10 0 0 0-1.96-.22c-3 0-4.4 1.42-4.4 4.48V10H5.98v2.75h1.86v5.98a9 9 0 0 0 3.26.2v-6.18z\"\n />\n </svg>\n);\n","import * as React from 'react';\nimport type { SVGProps } from 'react';\n/* AUTOGENERATED: DO NOT EDIT */\nimport _styles from '../logo.module.css';\nexport const FigmaIcon = (props: SVGProps<SVGSVGElement>): JSX.Element => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} fill=\"none\" {...props}>\n <path fill=\"#24CB71\" d=\"M4 16a3 3 0 0 1 3-3h3v3a3 3 0 0 1-6 0\" />\n <path fill=\"#FF7237\" d=\"M10 1v6h3a3 3 0 0 0 0-6z\" />\n <path fill=\"#00B6FF\" d=\"M12.98 13a3 3 0 1 0 0-6 3 3 0 0 0 0 6\" />\n <path fill=\"#FF3737\" d=\"M4 4a3 3 0 0 0 3 3h3V1H7a3 3 0 0 0-3 3\" />\n <path fill=\"#874FFF\" d=\"M4 10a3 3 0 0 0 3 3h3V7H7a3 3 0 0 0-3 3\" />\n </svg>\n);\n","import * as React from 'react';\nimport type { SVGProps } from 'react';\n/* AUTOGENERATED: DO NOT EDIT */\nimport _styles from '../logo.module.css';\nexport const GitlabIcon = (props: SVGProps<SVGSVGElement>): JSX.Element => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} fill=\"none\" {...props}>\n <path\n fill=\"#E24329\"\n d=\"m18.7 8.2-.03-.07-2.45-6.4A.65.65 0 0 0 15 1.8l-1.65 5.07h-6.7L5 1.8a.64.64 0 0 0-.97-.37.6.6 0 0 0-.25.3l-2.45 6.4-.03.06a4.55 4.55 0 0 0 1.51 5.26l.03.02 3.73 2.8 1.85 1.4 1.12.84c.27.21.65.21.92 0l1.12-.84 1.85-1.4 3.75-2.81.01-.01a4.55 4.55 0 0 0 1.5-5.26\"\n />\n <path\n fill=\"#FC6D26\"\n d=\"m18.7 8.2-.03-.07a8 8 0 0 0-3.29 1.48L10 13.68l3.43 2.59 3.75-2.81.01-.01a4.55 4.55 0 0 0 1.5-5.26\"\n />\n <path\n fill=\"#FCA326\"\n d=\"m6.57 16.27 1.85 1.4 1.12.84c.27.21.65.21.92 0l1.12-.84 1.85-1.4s-1.6-1.2-3.43-2.6c-1.83 1.4-3.43 2.6-3.43 2.6\"\n />\n <path\n fill=\"#FC6D26\"\n d=\"M4.62 9.61a8 8 0 0 0-3.3-1.48l-.02.06a4.55 4.55 0 0 0 1.51 5.26l.03.02 3.73 2.8s1.6-1.2 3.43-2.6z\"\n />\n </svg>\n);\n","import * as React from 'react';\nimport type { SVGProps } from 'react';\n/* AUTOGENERATED: DO NOT EDIT */\nimport _styles from '../logo.module.css';\nexport const LinkedinIcon = (props: SVGProps<SVGSVGElement>): JSX.Element => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} fill=\"none\" {...props}>\n <path\n fill=\"#007EBB\"\n fillRule=\"evenodd\"\n d=\"M3 19h14a2 2 0 0 0 2-2V3a2 2 0 0 0-2-2H3a2 2 0 0 0-2 2v14c0 1.1.9 2 2 2\"\n clipRule=\"evenodd\"\n />\n <path\n fill=\"#fff\"\n fillRule=\"evenodd\"\n d=\"M16.5 16.5h-2.67v-4.55c0-1.25-.48-1.94-1.46-1.94-1.08 0-1.64.72-1.64 1.94v4.55H8.16V7.83h2.57V9s.78-1.43 2.62-1.43c1.83 0 3.15 1.12 3.15 3.44zM5.09 6.7A1.6 1.6 0 0 1 3.5 5.1c0-.88.71-1.6 1.59-1.6.87 0 1.58.72 1.58 1.6s-.7 1.6-1.58 1.6m-1.33 9.8h2.68V7.83H3.76z\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n","import * as React from 'react';\nimport type { SVGProps } from 'react';\n/* AUTOGENERATED: DO NOT EDIT */\nimport _styles from '../logo.module.css';\nexport const MetamaskIcon = (props: SVGProps<SVGSVGElement>): JSX.Element => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} fill=\"none\" {...props}>\n <path\n fill=\"#FF5C16\"\n d=\"m17.82 18.08-3.88-1.15-2.92 1.75H8.98l-2.93-1.75-3.87 1.15L1 14.1 2.18 9.7 1 5.95l1.18-4.63 6.05 3.62h3.54l6.05-3.62L19 5.95 17.82 9.7 19 14.1z\"\n />\n <path\n fill=\"#FF5C16\"\n d=\"m2.18 1.32 6.06 3.62-.25 2.49zM6.06 14.1l2.66 2.03-2.66.8zM8.5 10.75 8 7.43 4.71 9.69V12l1.33-1.26zM17.82 1.32l-6.05 3.62.24 2.49zM13.95 14.1l-2.67 2.03 2.67.8zM15.29 9.69 12 7.43l-.52 3.32h2.46L15.28 12z\"\n />\n <path\n fill=\"#E34807\"\n d=\"m6.05 16.93-3.87 1.15L1 14.1h5.05zM8.5 10.75l.75 4.8-1.03-2.67-3.5-.87 1.33-1.26zM13.95 16.93l3.87 1.15L19 14.1h-5.05zM11.5 10.75l-.75 4.8 1.03-2.67 3.5-.87-1.33-1.26z\"\n />\n <path\n fill=\"#FF8D5D\"\n d=\"M1 14.1 2.18 9.7H4.7L4.72 12l3.5.87 1.03 2.66-.53.6-2.67-2.04zM19 14.1 17.82 9.7H15.3L15.28 12l-3.5.87-1.03 2.66.53.6 2.67-2.04z\"\n />\n <path fill=\"#FF8D5D\" d=\"M11.77 4.94H8.23L8 7.43l1.26 8.11h1.5l1.26-8.11z\" />\n <path\n fill=\"#661800\"\n d=\"M2.18 1.32 1 5.95 2.18 9.7H4.7L8 7.43zM7.77 11.71H6.62l-.62.61 2.22.56zM17.82 1.32 19 5.95 17.82 9.7H15.3L12 7.43zM12.23 11.71h1.15l.62.62-2.22.55zM11.02 17.1l.26-.97-.53-.58h-1.5l-.53.58.26.96\"\n />\n <path fill=\"#C0C4CD\" d=\"M11.02 17.1v1.58H8.98v-1.59z\" />\n <path fill=\"#E7EBF6\" d=\"m6.06 16.93 2.92 1.75v-1.59l-.26-.96zM13.95 16.93l-2.93 1.75v-1.59l.26-.96z\" />\n </svg>\n);\n","import * as React from 'react';\nimport type { SVGProps } from 'react';\n/* AUTOGENERATED: DO NOT EDIT */\nimport _styles from '../logo.module.css';\nexport const PhantomIcon = (props: SVGProps<SVGSVGElement>): JSX.Element => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} fill=\"none\" {...props}>\n <path\n fill=\"#AB9FF2\"\n d=\"M3.13 17.5c2.3 0 4.02-2 5.05-3.58q-.19.53-.2 1.04c0 .92.54 1.58 1.58 1.58 1.44 0 2.97-1.26 3.76-2.62a2 2 0 0 0-.08.55c0 .64.36 1.04 1.1 1.04 2.32 0 4.66-4.12 4.66-7.73 0-2.8-1.42-5.28-4.98-5.28C7.75 2.5 1 10.16 1 15.11c0 1.94 1.04 2.39 2.13 2.39m8.73-10.02c0-.7.39-1.2.96-1.2s.95.5.95 1.2-.4 1.2-.95 1.2c-.57 0-.96-.5-.96-1.2m2.98 0c0-.7.39-1.2.96-1.2.55 0 .94.5.94 1.2s-.38 1.2-.94 1.2c-.57 0-.96-.5-.96-1.2\"\n />\n </svg>\n);\n","import * as React from 'react';\nimport type { SVGProps } from 'react';\n/* AUTOGENERATED: DO NOT EDIT */\nimport _styles from '../logo.module.css';\nexport const SalesforceIcon = (props: SVGProps<SVGSVGElement>): JSX.Element => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} fill=\"none\" {...props}>\n <path\n fill=\"#00A1E0\"\n fillRule=\"evenodd\"\n d=\"M8.49 4.92a3.1 3.1 0 0 1 2.28-1.01c1.2 0 2.22.68 2.78 1.7q.75-.35 1.57-.35c2.14 0 3.88 1.8 3.88 4.04a3.96 3.96 0 0 1-4.65 3.96c-.49.9-1.42 1.5-2.47 1.5q-.65 0-1.25-.3a3.2 3.2 0 0 1-2.97 2.04c-1.4 0-2.58-.9-3.04-2.18q-.3.06-.62.06c-1.66 0-3-1.4-3-3.13 0-1.16.6-2.17 1.5-2.71a4 4 0 0 1-.29-1.44c0-1.99 1.57-3.6 3.5-3.6 1.13 0 2.15.56 2.78 1.42\"\n clipRule=\"evenodd\"\n />\n </svg>\n);\n","import * as React from 'react';\nimport type { SVGProps } from 'react';\n/* AUTOGENERATED: DO NOT EDIT */\nimport _styles from '../logo.module.css';\nexport const SnapchatIcon = (props: SVGProps<SVGSVGElement>): JSX.Element => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} fill=\"none\" {...props}>\n <path\n fill=\"#fff\"\n d=\"M17.72 14.26c-2.78-1.35-3.23-3.43-3.25-3.59-.02-.18-.05-.33.16-.52.2-.19 1.08-.73 1.32-.9q.63-.41.46-.92c-.1-.24-.32-.33-.56-.33l-.22.03c-.44.1-.87.32-1.12.38h-.1q-.19.02-.17-.21c.03-.49.1-1.44.02-2.32a3.7 3.7 0 0 0-.96-2.36A4.3 4.3 0 0 0 10 2.14a4.3 4.3 0 0 0-3.3 1.37 3.7 3.7 0 0 0-.96 2.36c-.08.89 0 1.84.02 2.33q.01.22-.17.22l-.1-.02c-.24-.06-.68-.28-1.12-.38L4.15 8c-.24 0-.46.1-.55.33-.14.35.04.63.45.91.24.17 1.13.72 1.33.9.2.2.18.34.15.53-.02.16-.46 2.24-3.25 3.59-.16.08-.44.24.05.51.77.43 1.28.38 1.68.64.34.22.14.69.38.86.3.2 1.2-.02 2.35.36.96.32 1.55 1.22 3.26 1.22s2.32-.9 3.27-1.22c1.15-.38 2.04-.16 2.34-.36.25-.17.05-.64.39-.86.4-.26.9-.21 1.68-.64.48-.26.2-.43.04-.5\"\n className={_styles.darkInvert}\n />\n <path\n fill=\"#000\"\n d=\"M18.94 14.1a1.3 1.3 0 0 0-.64-.67l-.14-.07-.24-.13a5.4 5.4 0 0 1-1.97-1.68 4 4 0 0 1-.33-.6q-.06-.16-.01-.23l.1-.12.82-.53q.52-.36.74-.8a1.6 1.6 0 0 0 .08-1.3c-.23-.6-.8-.98-1.5-.98a2 2 0 0 0-.54.08q.01-.64-.04-1.29a4.83 4.83 0 0 0-2.44-3.93A5.6 5.6 0 0 0 10 1.15a5.6 5.6 0 0 0-2.82.72 4.8 4.8 0 0 0-2.44 3.93q-.06.66-.04 1.28a3 3 0 0 0-.55-.08 1.54 1.54 0 0 0-1.6 1.65q.01.33.18.64.23.43.74.8l.42.27.38.25q.08.04.12.12.05.07-.01.24-.14.3-.33.59a5.4 5.4 0 0 1-1.91 1.65c-.43.23-.89.39-1.08.9-.14.4-.05.84.32 1.21q.2.21.46.35.53.3 1.12.45.13.03.23.1c.13.12.12.3.3.55q.13.2.33.34c.37.26.78.27 1.23.3.4 0 .85.02 1.37.2q.3.11.7.36c.61.38 1.46.9 2.88.9s2.27-.52 2.9-.9q.37-.25.68-.36c.52-.17.97-.2 1.37-.2.44-.02.86-.04 1.23-.3q.24-.16.38-.41c.13-.22.13-.37.25-.47l.21-.1a5 5 0 0 0 1.14-.46q.28-.15.48-.37v-.01c.35-.37.44-.8.3-1.18m-1.27.68c-.77.42-1.28.38-1.67.64-.34.21-.14.68-.39.85-.3.21-1.2-.01-2.34.37-.95.31-1.56 1.21-3.27 1.21-1.7 0-2.3-.9-3.27-1.22-1.15-.38-2.04-.15-2.34-.36-.25-.17-.05-.64-.38-.86-.4-.25-.91-.2-1.68-.63-.5-.27-.21-.44-.05-.52 2.79-1.35 3.23-3.43 3.25-3.58.02-.2.05-.34-.16-.53-.2-.18-1.08-.73-1.32-.9-.4-.28-.59-.57-.46-.91.1-.25.32-.34.56-.34l.22.03c.44.1.87.32 1.12.38l.1.01q.19 0 .17-.22c-.03-.49-.1-1.43-.02-2.32.1-1.22.5-1.83.96-2.36A4.3 4.3 0 0 1 10 2.15a4.3 4.3 0 0 1 3.3 1.36c.46.54.86 1.14.96 2.36.08.89.01 1.84-.02 2.33q-.01.23.17.22l.1-.02c.24-.06.68-.28 1.12-.38l.22-.02c.24 0 .46.1.56.33q.17.5-.46.91c-.24.17-1.13.72-1.32.9-.21.2-.18.34-.16.53.02.16.46 2.24 3.25 3.59.17.08.44.25-.05.52\"\n className={_styles.darkInvert}\n />\n </svg>\n);\n","import * as React from 'react';\nimport type { SVGProps } from 'react';\n/* AUTOGENERATED: DO NOT EDIT */\nimport _styles from '../logo.module.css';\nexport const TiktokIcon = (props: SVGProps<SVGSVGElement>): JSX.Element => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} fill=\"none\" {...props}>\n <path\n fill=\"#161823\"\n fillRule=\"evenodd\"\n d=\"M11.38 1.79h2.3A4.42 4.42 0 0 0 18 5.3v.68l.01 2.41a7.6 7.6 0 0 1-4.39-1.38v6.28c0 3.14-2.6 5.7-5.8 5.7a6 6 0 0 1-3.33-1.03A5.7 5.7 0 0 1 2 13.3a5.76 5.76 0 0 1 6.59-5.64v3.16q-.37-.11-.78-.12a2.63 2.63 0 0 0-2.66 2.6c0 1 .58 1.87 1.43 2.3q.55.3 1.23.3c1.42 0 2.59-1.1 2.64-2.5V1h3.16q0 .4.08.79z\"\n clipRule=\"evenodd\"\n className={_styles.darkInvert}\n />\n </svg>\n);\n","import * as React from 'react';\nimport type { SVGProps } from 'react';\n/* AUTOGENERATED: DO NOT EDIT */\nimport _styles from '../logo.module.css';\nexport const TwitchIcon = (props: SVGProps<SVGSVGElement>): JSX.Element => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} fill=\"none\" {...props}>\n <path fill=\"#fff\" d=\"m16.25 9.36-2.5 2.57h-2.5l-2.19 2.25v-2.25H6.25V2.29h10z\" />\n <path\n fill=\"#9146FF\"\n d=\"M5.63 1 2.5 4.21V15.8h3.75V19l3.13-3.21h2.5L17.5 10V1zm10.62 8.36-2.5 2.57h-2.5l-2.19 2.25v-2.25H6.25V2.29h10z\"\n />\n <path fill=\"#9146FF\" d=\"M14.38 4.54h-1.26v3.85h1.26zM10.94 4.54H9.69v3.85h1.25z\" />\n </svg>\n);\n","import * as React from 'react';\nimport type { SVGProps } from 'react';\n/* AUTOGENERATED: DO NOT EDIT */\nimport _styles from '../logo.module.css';\nexport const XTwitterIcon = (props: SVGProps<SVGSVGElement>): JSX.Element => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} fill=\"none\" {...props}>\n <path\n fill=\"#000\"\n d=\"M11.67 8.62 18.23 1h-1.55l-5.7 6.61L6.44 1H1.2l6.87 10-6.87 8h1.55l6.01-7 4.8 7h5.24zm-2.12 2.47-.7-1-5.54-7.92H5.7l4.47 6.4.7 1 5.8 8.3H14.3z\"\n className={_styles.darkInvert}\n />\n </svg>\n);\n","import type { IconRegistry } from '../../components/IconRegistry';\nimport {\n AmazonIcon,\n AppleIcon,\n BitbucketIcon,\n CoinbaseIcon,\n DiscordIcon,\n FacebookIcon,\n FigmaIcon,\n GithubIcon,\n GmailIcon,\n GitlabIcon,\n GoogleIcon,\n LinkedinIcon,\n MicrosoftIcon,\n OutlookIcon,\n SalesforceIcon,\n SlackIcon,\n SnapchatIcon,\n TiktokIcon,\n TwitchIcon,\n XTwitterIcon,\n YahooIcon,\n PhantomIcon,\n MetamaskIcon,\n BinanceIcon,\n} from '../../../assets/logo-color';\n\nexport const oauthIcons = {\n amazon: AmazonIcon,\n apple: AppleIcon,\n bitbucket: BitbucketIcon,\n coinbase: CoinbaseIcon,\n discord: DiscordIcon,\n facebook: FacebookIcon,\n figma: FigmaIcon,\n github: GithubIcon,\n gitlab: GitlabIcon,\n google: GoogleIcon,\n linkedin: LinkedinIcon,\n microsoft: MicrosoftIcon,\n salesforce: SalesforceIcon,\n slack: SlackIcon,\n snapchat: SnapchatIcon,\n tiktok: TiktokIcon,\n twitch: TwitchIcon,\n xTwitter: XTwitterIcon,\n yahoo: YahooIcon,\n} satisfies IconRegistry<string>;\n\nexport const cryptoIcons = {\n phantom: PhantomIcon,\n metamask: MetamaskIcon,\n binance: BinanceIcon,\n coinbase: CoinbaseIcon,\n} satisfies IconRegistry<string>;\n\nexport const emailIcons = {\n gmail: GmailIcon,\n outlook: OutlookIcon,\n yahoo: YahooIcon,\n} satisfies IconRegistry<string>;\n\nexport type IconNames =\n | keyof typeof oauthIcons //\n | keyof typeof cryptoIcons\n | keyof typeof emailIcons;\n","'use client';\n\nimport React from 'react';\nimport { OneTapPositions, OTPMethods } from '@stytch/core/public';\nimport { OTPEmailForm, PhoneForm } from './screens/Main/LoginForm/OTPForm';\nimport { CryptoWalletButtons } from './screens/Crypto/WalletButtons';\nimport { AppScreens } from './GlobalContextProvider';\nimport { EmailConfirmation } from './screens/Secondary/EmailConfirmation';\nimport { LoginForm } from './screens/Main/LoginForm';\nimport { MagicLinkEmailForm } from './screens/Main/LoginForm/MagicLinkForm';\nimport { OAuthButtons } from './screens/Main/OAuthButtons';\nimport { OTPAuthenticate } from './screens/Secondary/OTPAuthenticate';\nimport { OTPConfirmation } from './screens/Secondary/OTPConfirmation';\nimport { PasswordCreateAuthenticate } from './screens/Secondary/PasswordCreateAuthenticate';\nimport { ResetPasswordScreen } from './screens/Password/ResetPasswordScreen';\nimport { PasswordForgot } from './screens/Password/PasswordForgot';\nimport { PasswordBreached } from './screens/Password/PasswordBreached';\nimport { PasswordSetNew } from './screens/Password/PasswordSetNew';\nimport { PasswordDedupe } from './screens/Password/PasswordDedupe';\nimport { PasswordConfirmation } from './screens/Password/PasswordConfirmation';\nimport { PasswordsEmailForm } from './screens/Main/LoginForm/PasswordForm';\nimport { PasskeyRegistrationStart } from './screens/Passkey/PasskeyRegistrationStart';\nimport { PasskeyRegistrationSuccess } from './screens/Passkey/PasskeyRegistrationSuccess';\nimport { PasskeyConfirmation } from './screens/Passkey/PasskeyConfirmation';\nimport { PasskeyButton } from './screens/Main/LoginForm/PasskeyButton';\nimport { ConnectWallet } from './screens/Crypto/ConnectWallet';\nimport { SignMessage } from './screens/Crypto/SignMessage';\nimport { OtherCryptoWallets } from './screens/Crypto/OtherWallets';\nimport { SetupNewWallet } from './screens/Crypto/SetupNewWallet';\nimport { Error } from './screens/Crypto/Error';\nimport { Success } from './screens/Crypto/Success';\nimport { MagicLinkMethods, PasswordMethods, StytchProduct } from './StytchProduct';\nimport { GoogleOneTap } from './components/GoogleOneTap';\nimport { cryptoIcons, emailIcons, oauthIcons } from './components/Icons';\n\nconst PhoneFormSMS = () => <PhoneForm method={OTPMethods.SMS} />;\nconst PhoneFormWhatsApp = () => <PhoneForm method={OTPMethods.WhatsApp} />;\nconst MainWalletButtons = () => <CryptoWalletButtons type=\"main\" />;\nconst FloatingOneTap = () => <GoogleOneTap position={OneTapPositions.floating} />;\n\nexport const emailMagicLinks: StytchProduct = {\n id: 'emailMagicLinks',\n screens: {\n [AppScreens.EmailConfirmation]: EmailConfirmation,\n },\n tabs: {\n [MagicLinkMethods.Email]: MagicLinkEmailForm,\n },\n mainScreen: {\n 'login-form': LoginForm,\n },\n icons: emailIcons,\n};\n\nexport const oauth: StytchProduct = {\n id: 'oauth',\n screens: {\n [AppScreens.FloatingOneTap]: FloatingOneTap,\n },\n mainScreen: {\n oauth: OAuthButtons,\n },\n icons: oauthIcons,\n};\n\nexport const otp: StytchProduct = {\n id: 'otp',\n screens: {\n [AppScreens.OTPAuthenticate]: OTPAuthenticate,\n [AppScreens.OTPConfirmation]: OTPConfirmation,\n },\n tabs: {\n [OTPMethods.Email]: OTPEmailForm,\n [OTPMethods.SMS]: PhoneFormSMS,\n [OTPMethods.WhatsApp]: PhoneFormWhatsApp,\n },\n mainScreen: {\n 'login-form': LoginForm,\n },\n icons: emailIcons,\n};\n\nexport const passwords: StytchProduct = {\n id: 'passwords',\n screens: {\n [AppScreens.PasswordCreateOrLogin]: PasswordCreateAuthenticate,\n [AppScreens.PasswordResetForm]: ResetPasswordScreen,\n [AppScreens.PasswordForgot]: PasswordForgot,\n [AppScreens.PasswordBreached]: PasswordBreached,\n [AppScreens.PasswordSetNew]: PasswordSetNew,\n [AppScreens.PasswordDedupe]: PasswordDedupe,\n [AppScreens.PasswordConfirmation]: PasswordConfirmation,\n },\n tabs: {\n [PasswordMethods.Email]: PasswordsEmailForm,\n },\n mainScreen: {\n 'login-form': LoginForm,\n },\n icons: emailIcons,\n};\n\nexport const passkeys: StytchProduct = {\n id: 'passkeys',\n screens: {\n [AppScreens.PasskeyConfirmation]: PasskeyConfirmation,\n },\n mainScreen: {\n 'passkey-button': PasskeyButton,\n },\n};\n\nexport const passkeyRegistration: StytchProduct = {\n id: 'passkeyRegistration',\n screens: {\n [AppScreens.PasskeyRegistrationStart]: PasskeyRegistrationStart,\n [AppScreens.PasskeyRegistrationSuccess]: PasskeyRegistrationSuccess,\n },\n};\n\nexport const crypto: StytchProduct = {\n id: 'crypto',\n screens: {\n [AppScreens.CryptoConnect]: ConnectWallet,\n [AppScreens.CryptoSignMessage]: SignMessage,\n [AppScreens.CryptoOtherScreen]: OtherCryptoWallets,\n [AppScreens.CryptoSetupWallet]: SetupNewWallet,\n [AppScreens.CryptoError]: Error,\n [AppScreens.CryptoConfirmation]: Success,\n },\n mainScreen: {\n crypto: MainWalletButtons,\n },\n icons: cryptoIcons,\n};\n","import React, { useState, useEffect } from 'react';\nimport { StytchProjectConfigurationInput } from '@stytch/core/public';\nimport { messages } from '../../messages/en';\nimport { I18nProviderWrapper } from '../components/atoms/I18nProviderWrapper';\nimport { GlobalContextProvider, DEFAULT_STATE, AppState, AppScreens } from './GlobalContextProvider';\nimport Container from './Container';\nimport { ResetPasswordSDKConfig, DeprecatedSDKConfig } from '../../types';\nimport { readB2CInternals } from '../../utils/internal';\nimport { usePresentationWithDefault, PresentationContext } from '../components/PresentationConfig';\nimport { passwords } from './Products';\nimport { addProduct } from './utils';\nimport { logger, RUN_IN_DEV } from '@stytch/core';\n\nexport const ResetPasswordContainer = <TProjectConfiguration extends StytchProjectConfigurationInput>({\n client,\n config: rawConfig,\n presentation,\n callbacks,\n strings,\n styles,\n passwordResetToken: rawToken,\n}: ResetPasswordSDKConfig<TProjectConfiguration> & DeprecatedSDKConfig) => {\n const config = addProduct(rawConfig, passwords);\n\n // Default to reading token from URL if not provided\n let token = rawToken;\n if (!token) {\n const result = client.parseAuthenticateUrl();\n if (result?.tokenType === 'reset_password' || result?.tokenType === 'login') {\n token = result.token;\n }\n }\n\n // Read the watermark out of sync storage, then read it out of async storage\n const [displayWatermark, setDisplayWatermark] = useState(() => {\n const { displayWatermark } = readB2CInternals(client).bootstrap.getSync();\n return displayWatermark;\n });\n useEffect(() => {\n readB2CInternals(client)\n .bootstrap.getAsync()\n .then(({ displayWatermark }) => {\n setDisplayWatermark(displayWatermark);\n });\n }, [client]);\n\n RUN_IN_DEV(() => {\n if (styles) {\n logger.error(\n 'styles is deprecated and has no effect. Use the presentation prop instead.\\n' +\n 'See https://stytch.com/docs/api-reference/consumer/frontend-sdks/react/upgrade-guide#step-by-step-guide',\n );\n }\n });\n\n const initialState: AppState = {\n ...DEFAULT_STATE,\n screen: AppScreens.PasswordResetForm,\n formState: {\n ...DEFAULT_STATE.formState,\n resetPasswordState: {\n token: token!,\n },\n },\n };\n\n const presentationValue = usePresentationWithDefault(presentation, displayWatermark, config.products, 'Products');\n\n return (\n <GlobalContextProvider client={client} config={config} callbacks={callbacks} initialState={initialState}>\n <PresentationContext.Provider value={presentationValue}>\n <I18nProviderWrapper messages={messages} overrides={strings}>\n <Container />\n </I18nProviderWrapper>\n </PresentationContext.Provider>\n </GlobalContextProvider>\n );\n};\n","import { StytchProjectConfigurationInput } from '@stytch/core/public';\nimport { ResetPasswordContainer } from '../../b2c/ResetPasswordContainer';\nimport { createB2CComponent } from '../bindings/createB2CComponent';\nimport { StytchProps } from './StytchLogin';\n\nexport interface StytchResetPasswordProps<\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n> extends StytchProps<TProjectConfiguration> {\n /**\n * A Stytch password reset token.\n */\n passwordResetToken: string;\n}\n\n/**\n * The Stytch Reset Password component.\n * This component can only be used with a Stytch UI Client\n * passed into the StytchProvider.\n *\n * See the {@link https://stytch.com/docs/sdks online reference}\n *\n * @example\n * <StytchPasswordReset\n * config={{\n * products: [Products.passwords],\n * passwordOptions: {\n * loginRedirectURL: '${exampleURL}/authenticate',\n * resetPasswordRedirectURL: '${exampleURL}/authenticate',\n * },\n * }}\n * passwordResetToken=\"PvC5UudZ7TPZbELt95yXAQ-8MeEUCRob8bUQ-g52fIJs\"\n * presentation={{\n * theme: { primary: '#0577CA' },\n * options: {},\n * }}\n * callbacks={{\n * onEvent: (event) => console.log(event)\n * }}\n * />\n */\nexport const StytchPasswordReset = /* @__PURE__ */ createB2CComponent('StytchPasswordReset', ResetPasswordContainer);\n","import React, { useState, useEffect } from 'react';\nimport { StytchProjectConfigurationInput } from '@stytch/core/public';\nimport { messages } from '../../messages/en';\nimport { I18nProviderWrapper } from '../components/atoms/I18nProviderWrapper';\nimport { GlobalContextProvider, DEFAULT_STATE, AppState, AppScreens } from './GlobalContextProvider';\nimport Container from './Container';\nimport { SDKConfig, DeprecatedSDKConfig } from '../../types';\nimport { readB2CInternals } from '../../utils/internal';\nimport { usePresentationWithDefault, PresentationContext } from '../components/PresentationConfig';\nimport { passkeyRegistration } from './Products';\nimport { addProduct } from './utils';\nimport { logger, RUN_IN_DEV } from '@stytch/core';\n\nexport const PasskeyRegistrationContainer = <TProjectConfiguration extends StytchProjectConfigurationInput>({\n client,\n config: rawConfig,\n presentation,\n callbacks,\n strings,\n styles,\n}: SDKConfig<TProjectConfiguration> & DeprecatedSDKConfig) => {\n const config = addProduct(rawConfig, passkeyRegistration);\n\n /**\n * Read the watermark out of sync storage, then read it out of async storage\n */\n const [displayWatermark, setDisplayWatermark] = useState(() => {\n const { displayWatermark } = readB2CInternals(client).bootstrap.getSync();\n return displayWatermark;\n });\n\n useEffect(() => {\n readB2CInternals(client)\n .bootstrap.getAsync()\n .then(({ displayWatermark }) => {\n setDisplayWatermark(displayWatermark);\n });\n }, [client]);\n\n RUN_IN_DEV(() => {\n if (styles) {\n logger.error(\n 'styles is deprecated and has no effect. Use the presentation prop instead.\\n' +\n 'See https://stytch.com/docs/api-reference/consumer/frontend-sdks/react/upgrade-guide#step-by-step-guide',\n );\n }\n });\n\n const initialState: AppState = {\n ...DEFAULT_STATE,\n screen: AppScreens.PasskeyRegistrationStart,\n formState: {\n ...DEFAULT_STATE.formState,\n },\n };\n\n const presentationValue = usePresentationWithDefault(presentation, displayWatermark, config.products, 'Products');\n\n return (\n <GlobalContextProvider client={client} config={config} callbacks={callbacks} initialState={initialState}>\n <PresentationContext.Provider value={presentationValue}>\n <I18nProviderWrapper messages={messages} overrides={strings}>\n <Container />\n </I18nProviderWrapper>\n </PresentationContext.Provider>\n </GlobalContextProvider>\n );\n};\n","import { PasskeyRegistrationContainer } from '../../b2c/PasskeyRegistrationContainer';\nimport { createB2CComponent } from '../bindings/createB2CComponent';\n\n/**\n * The Stytch Passkey Registration component.\n * This component can only be used with a Stytch UI Client\n * passed into the StytchProvider.\n *\n * See the {@link https://stytch.com/docs/sdks online reference}\n *\n * @example\n * <StytchPasskeyRegistration\n * presentation={{\n * theme: { primary: '#ff00f7' },\n * options: {},\n * }}\n * callbacks={{\n * onEvent: (event) => console.log(event)\n * }}\n * />\n */\nexport const StytchPasskeyRegistration = /* @__PURE__ */ createB2CComponent(\n 'StytchPasskeyRegistration',\n PasskeyRegistrationContainer,\n);\n","import React, { ReactNode, useEffect, useRef, useState } from 'react';\nimport { useLingui } from '@lingui/react/macro';\nimport { useErrorCallback, useEventCallback, useStytch } from '../../GlobalContextProvider';\nimport { useStytchUser } from '../../../hooks/useStytchUser';\nimport { ErrorDisplay } from '../../../components/molecules/ErrorScreen';\nimport { useBootstrap } from '../../utils';\nimport { IDPConsent, useIDPState } from '../../../components/organisms/IDPConsent';\nimport { OAuthAuthorizeParams, OAuthLogoutParams, parseIDPParams } from '../../../../utils/idpHelpers';\nimport { IDPLogout, useLogoutState } from '../../../components/organisms/IDPLogout';\nimport { useTrustedAuthTokenParams } from '../../../components/organisms/IDPContextProvider';\nimport { AuthTokenParams } from '../../../../types';\nimport { NoCurrentSessionError } from '@stytch/core/public';\nimport { LoadingScreen } from '../../../components/molecules/Loading';\nimport MainContainer from '../../../components/molecules/MainContainer';\nimport { usePresentation } from '../../../components/PresentationConfig';\n\nconst IDPConsentScreenImpl = ({\n initialError,\n initialParams,\n}: {\n initialError: string | null;\n initialParams: OAuthAuthorizeParams;\n}) => {\n const stytchClient = useStytch();\n const onError = useErrorCallback();\n const onEvent = useEventCallback();\n const { oauthAuthorizeStart, oauthAuthorizeSubmit } = stytchClient.idp;\n\n const { bootstrap, fromCache: bootstrapNotLoaded } = useBootstrap();\n\n const idpConsentInfo = useIDPState({\n initialError,\n initialParams,\n oauthAuthorizeStart,\n oauthAuthorizeSubmit,\n onError,\n onEvent,\n });\n\n return <IDPConsent bootstrap={bootstrap} bootstrapNotLoaded={bootstrapNotLoaded} {...idpConsentInfo}></IDPConsent>;\n};\n\nconst IDPLogoutScreenImpl = ({\n initialError,\n initialParams,\n navigate,\n}: {\n initialError: string | null;\n initialParams: OAuthLogoutParams;\n navigate?: (href: string) => void;\n}) => {\n const stytchClient = useStytch();\n const onError = useErrorCallback();\n const { oauthLogoutStart } = stytchClient.idp;\n const revokeSession = () => stytchClient.session.revoke({ forceClear: true });\n\n const { bootstrap, fromCache: bootstrapNotLoaded } = useBootstrap();\n const idpLogoutState = useLogoutState({\n initialError,\n initialParams,\n oauthLogoutStart,\n revokeSession,\n onError,\n navigate,\n });\n\n return <IDPLogout {...idpLogoutState} bootstrap={bootstrap} bootstrapNotLoaded={bootstrapNotLoaded} />;\n};\n\nexport const IDPConsentScreen = ({\n searchParams = window.location.search,\n navigate,\n}: {\n searchParams?: string;\n navigate?: (href: string) => void;\n} = {}) => {\n // Preserve the URL Params seen on first render - even if they change later\n const [{ flow, error }] = useState(parseIDPParams(searchParams));\n const { theme, displayWatermark } = usePresentation();\n\n let content;\n if (flow.type === 'Authorize') {\n content = (\n <EnsureUserIsLoggedIn>\n <IDPConsentScreenImpl initialError={error} initialParams={flow.params} />\n </EnsureUserIsLoggedIn>\n );\n } else if (flow.type === 'Logout') {\n content = <IDPLogoutScreenImpl initialError={error} initialParams={flow.params} navigate={navigate} />;\n }\n\n return (\n <MainContainer theme={theme} displayWatermark={displayWatermark}>\n {content}\n </MainContainer>\n );\n};\n\nconst EnsureUserIsLoggedIn = ({ children }: { children: ReactNode }) => {\n const { t } = useLingui();\n const user = useStytchUser();\n const onError = useErrorCallback();\n const onErrorRef = useRef(onError);\n useEffect(() => {\n onErrorRef.current = onError;\n }, [onError]);\n\n // if a trusted auth token is provided, attest it before rendering the consent screen\n const stytchClient = useStytch();\n const authParams = useTrustedAuthTokenParams();\n const [attesting, setAttesting] = useState(false);\n const [attested, setAttested] = useState(false);\n\n useEffect(() => {\n if (attesting || attested) return;\n\n const attestTrustedToken = async (authParams: AuthTokenParams | undefined): Promise<void> => {\n if (authParams?.trustedAuthToken && authParams?.tokenProfileID) {\n setAttesting(true);\n const token = authParams.trustedAuthToken;\n const profile_id = authParams.tokenProfileID;\n\n // revoke the current session before calling attest\n if (stytchClient.user.getSync()) {\n await stytchClient.session.revoke({ forceClear: true });\n }\n\n try {\n await stytchClient.session.attest({\n token,\n profile_id,\n session_duration_minutes: 60,\n });\n } catch (error) {\n onErrorRef.current(error as Error);\n } finally {\n setAttesting(false);\n setAttested(true);\n }\n }\n // set this either way to short-circuit the useEffect below\n setAttested(true);\n };\n attestTrustedToken(authParams);\n }, [authParams, attesting, attested, stytchClient]);\n\n useEffect(() => {\n if (user) return;\n onErrorRef.current(new NoCurrentSessionError());\n }, [user]);\n\n if (attesting) {\n return <LoadingScreen />;\n } else if (user) {\n return children;\n } else {\n return (\n <ErrorDisplay\n text={t({\n id: 'idpConsent.noActiveSession',\n message: 'No active session detected. Please log in to continue.',\n })}\n />\n );\n }\n};\n","import React, { useEffect } from 'react';\nimport { StytchProjectConfigurationInput } from '@stytch/core/public';\nimport { messages } from '../../messages/en';\nimport { I18nProviderWrapper } from '../components/atoms/I18nProviderWrapper';\nimport { GlobalContextProvider, DEFAULT_STATE } from './GlobalContextProvider';\nimport { IDPSDKConfig, StytchLoginConfig, DeprecatedSDKConfig } from '../../types';\nimport { readB2CInternals } from '../../utils/internal';\nimport { IDPContextProvider } from '../components/organisms/IDPContextProvider';\nimport { usePresentationWithDefault, PresentationContext } from '../components/PresentationConfig';\nimport { IDPConsentScreen } from './screens/IdentityProvider/IDPConsent';\nimport { logger, RUN_IN_DEV } from '@stytch/core';\n\nexport const IDPContainer = <TProjectConfiguration extends StytchProjectConfigurationInput>({\n client,\n presentation,\n callbacks,\n strings,\n styles,\n getIDPConsentManifest,\n authTokenParams,\n}: IDPSDKConfig<TProjectConfiguration> & DeprecatedSDKConfig) => {\n const presentationValue = usePresentationWithDefault(presentation, false, []);\n\n useEffect(() => {\n readB2CInternals(client)\n .bootstrap.getAsync()\n .then((data) => {\n readB2CInternals(client).networkClient.logEvent({\n name: 'render_idp_screen',\n details: { bootstrap: data },\n });\n });\n }, [client]);\n\n RUN_IN_DEV(() => {\n if (styles) {\n logger.error(\n 'styles is deprecated and has no effect. Use the presentation prop instead.\\n' +\n 'See https://stytch.com/docs/api-reference/consumer/frontend-sdks/react/upgrade-guide#step-by-step-guide',\n );\n }\n });\n\n return (\n <GlobalContextProvider\n client={client}\n config={{} as StytchLoginConfig}\n callbacks={callbacks}\n initialState={DEFAULT_STATE}\n >\n <IDPContextProvider consentManifestGenerator={getIDPConsentManifest} authTokenParams={authTokenParams}>\n <PresentationContext.Provider value={presentationValue}>\n <I18nProviderWrapper messages={messages} overrides={strings}>\n <IDPConsentScreen />\n </I18nProviderWrapper>\n </PresentationContext.Provider>\n </IDPContextProvider>\n </GlobalContextProvider>\n );\n};\n","import { IDPContainer } from '../../b2c/IDPContainer';\nimport { createB2CComponent } from '../bindings/createB2CComponent';\nimport { StytchProps } from './StytchLogin';\nimport { AuthTokenParams, IDPConsentManifestGenerator } from '../../../types';\n\nexport type IdentityProviderProps = Omit<StytchProps, 'config'> & {\n /**\n * Optional {@link IDPConsentManifestGenerator} to customize the consent screen.\n */\n getIDPConsentManifest?: IDPConsentManifestGenerator;\n /**\n * Optional {@link AuthTokenParams} to provide a trusted auth token to provide for attestation prior to running OAuth flow.\n */\n authTokenParams?: AuthTokenParams;\n};\n\n/**\n * The Stytch IDP component.\n * Parses OAuth Authorization params (client_id, scope, nonce, etc.) out of the page URL.\n * Requires the user to be logged in.\n * This component can only be used with a Stytch UI Client\n * passed into the StytchProvider.\n *\n * See the {@link https://stytch.com/docs/sdks online reference}\n *\n * @example\n * <IdentityProvider\n * presentation={{\n * theme: { primary: '#ff00f7' },\n * options: {},\n * }}\n * callbacks={{\n * onEvent: (event) => console.log(event)\n * }}\n * />\n */\nexport const IdentityProvider = /* @__PURE__ */ createB2CComponent('IdentityProvider', IDPContainer);\n","'use client';\n\nimport React, { ComponentType, ReactNode } from 'react';\n\nimport { Session, StytchProjectConfigurationInput, User } from '@stytch/core/public';\nimport {\n StytchProvider as StytchProviderShared,\n useStytchIsAuthorized as useStytchIsAuthorizedShared,\n useStytchSession as useStytchSessionShared,\n useStytchUser as useStytchUserShared,\n withStytchPermissions as withStytchPermissionsShared,\n withStytchSession as withStytchSessionShared,\n withStytchUser as withStytchUserShared,\n} from '@stytch/web/react/b2c';\nimport { StytchClient } from '@stytch/web/headless';\n\nexport { useStytch, withStytch } from '@stytch/web/react/b2c';\n\n/**\n * Returns the active User.\n * The Stytch SDKs are used for client-side authentication and session management.\n * Check the isInitialized property to determine if the SDK has completed initialization.\n * Check the fromCache property to determine if the user data is from persistent storage.\n * @example\n * const {user, isInitialized, fromCache} = useStytchUser();\n * if (!isInitialized) {\n * return <p>Loading...</p>;\n * }\n * return (<h1>Welcome, {user.name.first_name}</h1>);\n */\nexport const useStytchUser = useStytchUserShared as <TAssumeHydrated extends boolean = true>() => ReturnType<\n typeof useStytchUserShared<TAssumeHydrated>\n>;\n\n/**\n * Returns the active user's Stytch session.\n * The Stytch SDKs are used for client-side authentication and session management.\n * Check the isInitialized property to determine if the SDK has completed initialization.\n * Check the fromCache property to determine if the session data is from persistent storage.\n * @example\n * const {session, isInitialized, fromCache} = useStytchSession();\n * useEffect(() => {\n * if (!isInitialized) {\n * return;\n * }\n * if (!session) {\n * router.replace('/login')\n * }\n * }, [session, isInitialized]);\n */\nexport const useStytchSession = useStytchSessionShared as <TAssumeHydrated extends boolean = true>() => ReturnType<\n typeof useStytchSessionShared<TAssumeHydrated>\n>;\n\nexport const withStytchUser = withStytchUserShared as <T extends object, TAssumeHydrated extends boolean = true>(\n Component: ComponentType<\n T & { stytchUser: User | null; stytchUserIsInitialized: boolean; stytchUserIsFromCache: boolean }\n >,\n) => ReturnType<typeof withStytchUserShared<T, TAssumeHydrated>>;\n\nexport const withStytchSession = withStytchSessionShared as <T extends object, TAssumeHydrated extends boolean = true>(\n Component: ComponentType<\n T & { stytchSession: Session | null; stytchSessionIsInitialized: boolean; stytchSessionIsFromCache: boolean }\n >,\n) => ReturnType<typeof withStytchSessionShared<T, TAssumeHydrated>>;\n\nexport const useStytchIsAuthorized = useStytchIsAuthorizedShared as <TAssumeHydrated extends boolean = true>(\n resourceId: string,\n action: string,\n) => ReturnType<typeof useStytchIsAuthorizedShared<TAssumeHydrated>>;\n\nexport const withStytchPermissions = withStytchPermissionsShared as <\n Permissions extends Record<string, string>,\n T extends object,\n>(\n Component: ComponentType<T & { stytchPermissions: Record<string, Record<string, boolean>> }>,\n) => ReturnType<typeof withStytchPermissionsShared<Permissions, T>>;\n\nexport interface StytchProviderProps<\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n> {\n /**\n * A Stytch client instance, a {@link StytchClient}\n */\n stytch: StytchClient<TProjectConfiguration>;\n /**\n * When true, the provider will assume that the component will only be\n * rendered in a browser environment, either in a single-page application or\n * after completing hydration of a server-rendered application. This allows\n * cached values to be retrieved from the browser on the first render, meaning\n * that the `isInitialized` value returned from Stytch hooks will be `true`\n * starting from the first render.\n *\n * When `false`, the provider will defer initialization until after the first\n * render, and `isInitialized` will initially be `false`.\n *\n * If you encounter hydration errors relating to the use of this component,\n * set this to `false`.\n *\n * This value defaults to `true` in `@stytch/react`.\n */\n assumeHydrated?: boolean;\n children?: ReactNode;\n}\n\n/**\n * The Stytch Context Provider.\n * Wrap your application with this component in order to use Stytch everywhere in your app.\n * @example\n * const stytch = createStytchClient('public-token-<find yours in the stytch dashboard>')\n *\n * ReactDOM.render(\n * <StytchProvider stytch={stytch}>\n * <App />\n * </StytchProvider>,\n * document.getElementById('root'),\n * )\n */\nexport const StytchProvider = <\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n>({\n stytch,\n children,\n assumeHydrated = true,\n}: StytchProviderProps<TProjectConfiguration>): JSX.Element => (\n <StytchProviderShared stytch={stytch} assumeHydrated={assumeHydrated}>\n {children}\n </StytchProviderShared>\n);\n","import { createStytchClient } from '@stytch/web/headless';\n\n/**\n * @deprecated - use {@link createStytchClient} instead\n */\nexport const createStytchUIClient = createStytchClient;\n\nexport {\n StytchProvider,\n useStytch,\n useStytchSession,\n useStytchUser,\n withStytch,\n withStytchSession,\n withStytchUser,\n useStytchIsAuthorized,\n withStytchPermissions,\n} from './StytchContext';\n\nexport * from '@stytch/core/public';\nexport * from '@stytch/web/headless';\nexport * from '@stytch/web/common';\n\nexport { StytchLogin, StytchPasswordReset, StytchPasskeyRegistration, IdentityProvider } from '@stytch/web/react/b2c';\nexport { Products } from '@stytch/web';\n\nexport type { StytchProps, StytchResetPasswordProps, IdentityProviderProps } from '@stytch/web/react/b2c';\nexport type { StytchProviderProps } from './StytchContext';\nexport type {\n StytchLoginConfig,\n SDKConfig,\n ResetPasswordSDKConfig,\n IDPSDKConfig,\n AuthTokenParams,\n IDPConsentManifestGenerator,\n Strings,\n} from '@stytch/web';\n"],"names":["EmailSentType","initialUser","user","fromCache","isInitialized","initialSession","session","StytchContext","createContext","isMounted","StytchUserContext","StytchSessionContext","useIsMounted__INTERNAL","useContext","useStytchUser","invariant","noProviderError","useStytchSession","useStytch","ctx","client","withStytch","Component","WithStytch","props","React","stytch","displayName","name","withStytchUser","WithStytchUser","stytchUser","stytchUserIsInitialized","stytchUserIsFromCache","withStytchSession","WithStytchSession","stytchSession","stytchSessionIsInitialized","stytchSessionIsFromCache","useStytchIsAuthorized","resourceId","action","isAuthorized","setIsAuthorized","useAsyncState","useEffect","isStytchSSRProxy","rbac","isAuthorizedSync","then","roles","withStytchPermissions","WithStytchPermissions","permissions","setPermissions","loaded","value","allPermissions","stytchPermissions","StytchProvider","children","assumeHydrated","providerMustBeUniqueError","window","useMemo","getHydratedState","useCallback","getInfo","getInitialState","setClientState","assumeHydratedRef","useRef","updateState","oldState","mergeWithStableProps","current","onStateChange","Provider","messages","_messages","reducer","state","type","screen","formState","magicLinkState","email","otpState","cryptoState","passwordState","Error","AppScreens","Main","FloatingOneTap","PasskeyRegistrationStart","PasskeyRegistrationSuccess","PasskeyConfirmation","PasswordCreateOrLogin","PasswordResetForm","PasswordForgot","PasswordBreached","PasswordSetNew","PasswordDedupe","PasswordConfirmation","EmailConfirmation","OTPAuthenticate","OTPConfirmation","CryptoConnect","CryptoSignMessage","CryptoOtherScreen","CryptoSetupWallet","CryptoError","CryptoConfirmation","DEFAULT_STATE","OTPMethods","Email","methodId","otpDestination","walletAddress","walletOption","Wallets","Metamask","walletChallenge","resetPasswordState","token","GlobalContext","config","GlobalContextProvider","callbacks","initialState","useReducer","useGlobalContext","useGlobalReducer","useConfig","useErrorCallback","useEvent","onError","noop","useEventCallback","onEvent","useBootstrap","stytchClient","bootstrap","setBootstrap","useState","readB2CInternals","getSync","getAsync","data","hasProduct","products","product","some","p","id","useProductComponents","screenType","map","Object","assign","addProduct","includes","useIsOnlyFloatingOneTap","position","oauthOptions","providers","length","OAuthProviders","Google","one_tap","getShouldRenderFloatingOneTap","MAX_ATTEMPTS","usePromptPasskey","canAutofill","useLingui","hasPasskeys","dispatch","error","setError","startPasskeyAuth","conditionalMediation","abortController","resp","webauthn","authenticate","domain","passkeyOptions","session_duration_minutes","sessionOptions","sessionDurationMinutes","DEFAULT_SESSION_DURATION_MINUTES","conditional_mediation","is_passkey","signal","disable_input_check","enableShadowDOM","StytchEventType","PasskeyAuthenticate","e","extractErrorType","message","extractErrorMessage","AbortController","browserSupportsAutofill","i","aborted","DOMException","abort","MainScreen","options","usePresentation","mainScreenGroups","setMainScreenGroups","hasButtons","hasInput","passkeyError","productComponents","loadProductComponents","keys","Array","from","Set","filter","isTruthy","showDivider","splice","unshift","groups","walletIndex","indexOf","oauthIndex","Math","abs","index","min","Typography","variant","color","DEV","renderComponent","key","isArray","Column","gap","Divider","hideHeaderText","align","ErrorText","AppContainer","displayWatermark","theme","isOnlyFloatingOneTap","currentScreen","screenComponentMap","ScreenComponent","MainContainer","logo","Logo","appLogo","presentation","strings","styles","setDisplayWatermark","networkClient","logEvent","details","RUN_IN_DEV","logger","presentationValue","usePresentationWithDefault","PresentationContext","I18nProviderWrapper","overrides","Container","createB2CComponent","Wrapped","serverRenderError","shadow","root","mountPoint","setMountPoint","useLayoutEffect","shadowRoot","attachShadow","mode","document","createElement","appendChild","injectCssIntoNode","injectGlobalStyle","element","div","ref","createPortal","StytchLogin","GenericWalletIcon","size","DEFAULT_ICON_SIZE","svg","width","height","viewBox","xmlns","path","d","fill","PasskeyIcon","OTPButtonText","SMS","WhatsApp","OTPEmailForm","setEmail","errorMessage","setErrorMessage","isSubmitting","setIsSubmitting","stopSubmit","errorText","handleEmailSubmit","preventDefault","match","EMAIL_REGEX","otps","loginOrCreate","expiration_minutes","otpOptions","expirationMinutes","DEFAULT_OTP_EXPIRATION_MINUTES","login_template_id","loginTemplateId","signup_template_id","signupTemplateId","locale","OTPsLoginOrCreateEvent","method_id","LoginOrCreateOTP","catch","getTranslatedError","as","onSubmit","EmailInput","hideLabel","Button","loading","PhoneForm","method","phoneNumber","setPhoneNumber","country","setCountry","parsePhoneNumber","getExampleNumber","getPhoneNumberProps","clientsideServices","handlePhoneSubmit","parsedNumber","formatNumberToIncludeCountryCode","isValid","number","PhoneInput","phone","setPhone","require$$0","hasMultipleEthereumWallets","ethereum","hasMetaMask","find","wallet","isMetaMask","hasCoinbaseWallet","isCoinbaseWallet","hasOtherEthereumWallet","getMetaMaskProvider","getCoinbaseProvider","getOtherInjectedProvider","walletIcons","Phantom","Binance","Coinbase","useCryptoIcon","iconRegistry","iconName","WalletToText","GenericEthereumWallet","GenericSolanaWallet","isWalletVisible","solana","isPhantom","BinanceChain","connectWithEthereumProvider","request","address","connectWithWallet","provider","connectResp","connect","publicKey","toString","signMessageWithSolanaProvider","encodedMessage","TextEncoder","encode","signResp","params","display","signature","signMessageWithEthereumProvider","signMessageWithWallet","isSolanaWallet","solanaWallets","MAX_BUTTONS","walletMessages","CryptoWalletButtons","getCryptoIcon","oAuthOptions","cryptoButtonsOnMainScreen","onWalletStart","allDetectedWallets","renderOtherScreenButton","mainWallets","slice","otherWallet","walletsToRender","ButtonColumn","walletEnum","Icon","icon","onClick","usePasswordlessAuthenticate","emailMagicLinksOptions","sendLink","magicLinks","convertMagicLinkOptions","MagicLinkLoginOrCreateEvent","errorToast","sendCode","useEmailDomain","emailDomains","setEmailDomains","domainHint","showGoBack","emailDomain","countdown","useCountdown","goBack","LoginOrCreateEML","EmailConfirmationView","undefined","resend","jsx","getElementRef","React2","RovingFocusGroup.Root","RovingFocusGroup.Item","MagicLinkMethods","PasswordMethods","OTPTabHeaders","getTabMethods","otpMethods","hasPassword","tabMethods","add","LoginForm","productsIncludesOtp","methods","hasEmailMagicLink","hasOTPEmail","tabMethodComponents","Tabs","defaultValue","className","tabRow","aria-label","classNames","buttonClassNames","block","tab","tabIndex","MagicLinkEmailForm","handleSubmit","submittingEmail","providerInfo","messageDescriptor","Microsoft","Apple","Github","GitLab","Facebook","Discord","Salesforce","Slack","Amazon","Bitbucket","LinkedIn","Twitch","Twitter","TikTok","Snapchat","Figma","Yahoo","OAuthButton","providerType","loginRedirectUrl","signupRedirectUrl","customScopes","providerParams","onSuccess","label","onButtonClick","oauth","start","login_redirect_url","signup_redirect_url","custom_scopes","provider_params","useLastUsedOAuth","publicToken","lastUsedOAuth","safeLocalStorage","getItem","setLastUsedOAuth","setItem","OAUTH_BUTTON_HEIGHT","OneTapMountNode","slot","data-prompt_parent_id","GoogleOneTap","cancelOnTapOutside","oneTapRenderMode","getRenderedOneTapMode","shouldRenderEmbeddedOneTap","shouldRenderOneTap","pending","setPending","canDisplayOneTap","setCanDisplayOneTap","setHeight","oneTapError","setOneTapError","resizeCount","timeout","isUnmounted","useIsUnmounted","lastUsedMethod","onResize","el","clearTimeout","currentHeight","contentRect","setTimeout","getElementById","resizeObserver","ResizeObserver","observe","disconnect","attemptToLoadOneTap","oneTap","clientResult","createOneTapClient","success","reason","OneTapErrors","NoConfiguredOAuthClient","NoConfiguredSignupRedirectUrls","NoConfiguredLoginRedirectUrls","onOneTapCancelled","showError","OriginNotAllowedForClient","renderResult","render","callback","createOnSuccessHandler","loginRedirectURL","signupRedirectURL","redirectOnSuccess","style","cancel","InvalidOAuthClient","$client","err","fallbackButton","fallbackWithLastUsed","LastUsed","Boolean","ErrorMessages","OneTapProvider","willGoogleOneTapShowEmbedded","container","CircularProgress","OAuthButtons","reorderedProviders","foundLastUsed","arrayUtils","moveToFront","providerProps","cancel_on_tap_outside","button","hideBackButton","destination","selectionMethod","formattedDestination","setFormattedDestination","calculateExpiration","Date","now","parseDestination","parsedPhoneNumber","national","formatNumber","expiration","setExpiration","resendCountdown","resendOTP","otp","OTPsAuthenticate","clear","SentOTPEntry","ResendOTPButton","useMountEffect","AuthenticateFlowComplete","Confirmation","text","PasswordNewUser","passwordOptions","password","setPassword","passwordError","setPasswordError","policy","updateStrengthCheck","debounce","passwords","strengthCheck","score","feedback","valid_password","strength_policy","breached_password","common","passwordInvalid","isPasswordBreached","passwordScore","passwordWarning","warning","passwordSuggestions","suggestions","missingCharacters","luds_requirements","missing_characters","missingComplexity","missing_complexity","onPasswordChange","create","PasswordCreate","error_type","resetByEmailStart","convertPasswordResetOptions","passwordInputProps","getNewPasswordProps","disabled","PasswordInput","PasswordError","PasswordAuthenticate","onForgot","PasswordlessAuthenticate","secondaryType","resetPassword","PasswordResetByEmailStart","PasswordCreateAuthenticate","userType","secondaryAuth","useSecondaryAuthenticate","TextColumn","header","body","handle","buttonText","ResetPasswordScreen","passwordToken","resetTokenType","parsed","parseAuthenticateUrl","tokenType","loginErrorMessage","setLoginErrorMessage","isLoggingIn","setIsLoggingIn","resetByEmail","PasswordResetByEmail","handlePasswordlessLogin","finally","form","top","bottom","VerticalTransition","primary","secondary","triggered","useResetResendPasswordActions","resendResetPassword","sendMagicLink","result","EmailActionLayout","description","Trans","components","bold","b","values","ResetPassword","PasswordsEmailForm","searchManager","searchUser","SAFARI_CROSS_DEVICE_DUPLICATE_REG_ERROR_MESSAGE","CHROME_CROSS_DEVICE_DUPLICATE_REG_ERROR_MESSAGE","userState","setUserState","get","onCreatePasskey","register","PasskeyRegister","onSkip","PasskeySkip","LoadingScreen","helper","useSyncExternalStore","commonButtonProps","EditableRow","handleEdit","isEditing","isEditingRow","othersEditing","inputRef","focus","row","evt","newName","data-testid","testId","input","Input","onChange","target","actions","optimisticRegistrations","setOptimisticRegistrations","webAuthnRegistrations","registrations","webauthn_registrations","editableRowState","setEditableRowState","onSetUpANewPasskey","update","onDone","PasskeyDone","startOptimisticUpdate","prevEditableRowState","errorToStytchError","deleteReg","r","webauthn_registration_id","deleteWebauthnRegistration","updateReg","weight","existing","registration","passkeyRow","role","PasskeyButton","ConnectWallet","handleError","walletType","onConnectWallet","cryptoWallets","authenticateStart","crypto_wallet_address","crypto_wallet_type","CryptoWalletAuthenticateStart","challenge","SignMessage","onSignWallet","CryptoWalletAuthenticate","OtherCryptoWallets","rel","SetupNewWallet","MetamaskIcon","PhantomIcon","CoinbaseIcon","BinanceIcon","ButtonAnchor","href","Success","AmazonIcon","fillRule","clipRule","_styles","darkInvert","AppleIcon","BitbucketIcon","DiscordIcon","FacebookIcon","FigmaIcon","GitlabIcon","LinkedinIcon","SalesforceIcon","SnapchatIcon","TiktokIcon","TwitchIcon","XTwitterIcon","oauthIcons","amazon","apple","bitbucket","coinbase","discord","facebook","figma","github","GithubIcon","gitlab","google","GoogleIcon","linkedin","microsoft","MicrosoftIcon","salesforce","slack","SlackIcon","snapchat","tiktok","twitch","xTwitter","yahoo","YahooIcon","cryptoIcons","phantom","metamask","binance","emailIcons","gmail","GmailIcon","outlook","OutlookIcon","PhoneFormSMS","PhoneFormWhatsApp","MainWalletButtons","OneTapPositions","floating","emailMagicLinks","screens","tabs","mainScreen","icons","passkeys","passkeyRegistration","crypto","ResetPasswordContainer","rawConfig","passwordResetToken","rawToken","StytchPasswordReset","PasskeyRegistrationContainer","StytchPasskeyRegistration","IDPConsentScreenImpl","initialError","initialParams","oauthAuthorizeStart","oauthAuthorizeSubmit","idp","bootstrapNotLoaded","idpConsentInfo","useIDPState","IDPConsent","IDPLogoutScreenImpl","navigate","oauthLogoutStart","revokeSession","revoke","forceClear","idpLogoutState","useLogoutState","IDPLogout","IDPConsentScreen","searchParams","location","search","flow","parseIDPParams","content","EnsureUserIsLoggedIn","onErrorRef","authParams","useTrustedAuthTokenParams","attesting","setAttesting","attested","setAttested","attestTrustedToken","trustedAuthToken","tokenProfileID","profile_id","attest","NoCurrentSessionError","ErrorDisplay","IDPContainer","getIDPConsentManifest","authTokenParams","IDPContextProvider","consentManifestGenerator","IdentityProvider","useStytchUserShared","useStytchSessionShared","withStytchUserShared","withStytchSessionShared","useStytchIsAuthorizedShared","withStytchPermissionsShared","StytchProviderShared","createStytchUIClient","createStytchClient"],"mappings":"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","x_google_ignoreList":[16,17,22,23,24,25,26,27,28,29,30,31,32,33,34,35]}