@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,11 +1,11 @@
1
1
  import React__default from 'react';
2
2
  import { useLingui } from '../../../../../../../node_modules/@lingui/react/dist/index.mjs';
3
3
  import { useGlobalReducer, AppScreens } from '../../GlobalContextProvider.mjs';
4
- import { WalletToIcon } from '../../../../utils/crypto.mjs';
5
4
  import Column from '../../../components/atoms/Column.mjs';
6
5
  import TextColumn from '../../../components/molecules/TextColumn.mjs';
7
6
  import Button, { ButtonAnchor } from '../../../components/atoms/Button.mjs';
8
7
  import ButtonColumn from '../../../components/molecules/ButtonColumn.mjs';
8
+ import { useCryptoIcon } from '../../../../utils/crypto.mjs';
9
9
  import { Wallets } from '../../../../../../core/src/public/ui.mjs';
10
10
 
11
11
  const commonButtonProps = {
@@ -13,13 +13,14 @@ const commonButtonProps = {
13
13
  target: '_blank',
14
14
  rel: 'noreferrer'
15
15
  };
16
- const walletIcon = (wallet)=>{
17
- const Icon = WalletToIcon[wallet];
18
- return /*#__PURE__*/ React__default.createElement(Icon, null);
19
- };
20
16
  const SetupNewWallet = ()=>{
21
17
  const { i18n: $__i18n, _: $__ } = useLingui();
22
18
  const [, dispatch] = useGlobalReducer();
19
+ const getCryptoIcon = useCryptoIcon();
20
+ const MetamaskIcon = getCryptoIcon(Wallets.Metamask);
21
+ const PhantomIcon = getCryptoIcon(Wallets.Phantom);
22
+ const CoinbaseIcon = getCryptoIcon(Wallets.Coinbase);
23
+ const BinanceIcon = getCryptoIcon(Wallets.Binance);
23
24
  return /*#__PURE__*/ React__default.createElement(Column, {
24
25
  gap: 6
25
26
  }, /*#__PURE__*/ React__default.createElement(TextColumn, {
@@ -37,29 +38,29 @@ const SetupNewWallet = ()=>{
37
38
  })
38
39
  }), /*#__PURE__*/ React__default.createElement(ButtonColumn, null, /*#__PURE__*/ React__default.createElement(ButtonAnchor, {
39
40
  ...commonButtonProps,
40
- icon: walletIcon(Wallets.Metamask),
41
+ icon: /*#__PURE__*/ React__default.createElement(MetamaskIcon, null),
41
42
  href: "https://metamask.io/"
42
43
  }, $__i18n._({
43
44
  id: "crypto.wallet.metamask",
44
45
  message: "Metamask"
45
46
  })), /*#__PURE__*/ React__default.createElement(ButtonAnchor, {
46
47
  ...commonButtonProps,
47
- icon: walletIcon(Wallets.Phantom),
48
- href: "https://phantom.app/"
48
+ icon: /*#__PURE__*/ React__default.createElement(PhantomIcon, null),
49
+ href: "https://phantom.com/"
49
50
  }, $__i18n._({
50
51
  id: "crypto.wallet.phantom",
51
52
  message: "Phantom"
52
53
  })), /*#__PURE__*/ React__default.createElement(ButtonAnchor, {
53
54
  ...commonButtonProps,
54
- icon: walletIcon(Wallets.Coinbase),
55
+ icon: /*#__PURE__*/ React__default.createElement(CoinbaseIcon, null),
55
56
  href: "https://www.coinbase.com/wallet"
56
57
  }, $__i18n._({
57
58
  id: "crypto.wallet.coinbase",
58
59
  message: "Coinbase"
59
60
  })), /*#__PURE__*/ React__default.createElement(ButtonAnchor, {
60
61
  ...commonButtonProps,
61
- icon: walletIcon(Wallets.Binance),
62
- href: "https://www.bnbchain.world/en/binance-wallet"
62
+ icon: /*#__PURE__*/ React__default.createElement(BinanceIcon, null),
63
+ href: "https://web3.binance.com/en/about"
63
64
  }, $__i18n._({
64
65
  id: "crypto.wallet.binance",
65
66
  message: "Binance"
@@ -1 +1 @@
1
- {"version":3,"file":"SetupNewWallet.mjs","sources":["../../../../../../../../../../web/src/ui/b2c/screens/Crypto/SetupNewWallet.tsx"],"sourcesContent":["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"],"names":["commonButtonProps","variant","target","rel","walletIcon","wallet","Icon","WalletToIcon","React","SetupNewWallet","useLingui","dispatch","useGlobalReducer","Column","gap","TextColumn","header","body","helper","ButtonColumn","ButtonAnchor","icon","Wallets","Metamask","href","Phantom","Coinbase","Binance","Button","onClick","type","screen","AppScreens","Main"],"mappings":";;;;;;;;;;AAUA,MAAMA,iBAAAA,GAAoB;IACxBC,OAAAA,EAAS,SAAA;IACTC,MAAAA,EAAQ,QAAA;IACRC,GAAAA,EAAK;AACP,CAAA;AAEA,MAAMC,aAAa,CAACC,MAAAA,GAAAA;IAClB,MAAMC,IAAAA,GAAOC,YAAY,CAACF,MAAAA,CAAO;AACjC,IAAA,qBAAOG,cAAA,CAAA,aAAA,CAACF,IAAAA,EAAAA,IAAAA,CAAAA;AACV,CAAA;MAEaG,cAAAA,GAAiB,IAAA;AAC5B,IAAA,MAAM,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,GAAA,EAAA,GAAQC,SAAAA,EAAAA;IACd,MAAM,GAAGC,SAAS,GAAGC,gBAAAA,EAAAA;AAErB,IAAA,qBACEJ,cAAA,CAAA,aAAA,CAACK,MAAAA,EAAAA;QAAOC,GAAAA,EAAK;qBACXN,cAAA,CAAA,aAAA,CAACO,UAAAA,EAAAA;QACCC,MAAM,EAAA,OAAA,CAAA,CAAA,CAAA;;;;QACNC,IAAI,EAAA,OAAA,CAAA,CAAA,CAAA;;;;QAIJC,MAAM,EAAA,OAAA,CAAA,CAAA,CAAA;;;;AAOR,KAAA,CAAA,gBAAAV,cAAA,CAAA,aAAA,CAACW,kCACCX,cAAA,CAAA,aAAA,CAACY,YAAAA,EAAAA;AAAc,QAAA,GAAGpB,iBAAiB;QAAEqB,IAAAA,EAAMjB,UAAAA,CAAWkB,QAAQC,QAAQ,CAAA;QAAGC,IAAAA,EAAK;;;;uBAG9EhB,cAAA,CAAA,aAAA,CAACY,YAAAA,EAAAA;AAAc,QAAA,GAAGpB,iBAAiB;QAAEqB,IAAAA,EAAMjB,UAAAA,CAAWkB,QAAQG,OAAO,CAAA;QAAGD,IAAAA,EAAK;;;;uBAI7EhB,cAAA,CAAA,aAAA,CAACY,YAAAA,EAAAA;AAAc,QAAA,GAAGpB,iBAAiB;QAAEqB,IAAAA,EAAMjB,UAAAA,CAAWkB,QAAQI,QAAQ,CAAA;QAAGF,IAAAA,EAAK;;;;uBAI9EhB,cAAA,CAAA,aAAA,CAACY,YAAAA,EAAAA;AACE,QAAA,GAAGpB,iBAAiB;QACrBqB,IAAAA,EAAMjB,UAAAA,CAAWkB,QAAQK,OAAO,CAAA;QAChCH,IAAAA,EAAK;;;;uBAKPhB,cAAA,CAAA,aAAA,CAACoB,MAAAA,EAAAA;QAAO3B,OAAAA,EAAQ,SAAA;AAAU4B,QAAAA,OAAAA,EAAS,IAAMlB,QAAAA,CAAS;gBAAEmB,IAAAA,EAAM,YAAA;AAAcC,gBAAAA,MAAAA,EAAQC,WAAWC;AAAK,aAAA;;;;;AAMxG;;;;"}
1
+ {"version":3,"file":"SetupNewWallet.mjs","sources":["../../../../../../../../../../web/src/ui/b2c/screens/Crypto/SetupNewWallet.tsx"],"sourcesContent":["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"],"names":["commonButtonProps","variant","target","rel","SetupNewWallet","useLingui","dispatch","useGlobalReducer","getCryptoIcon","useCryptoIcon","MetamaskIcon","Wallets","Metamask","PhantomIcon","Phantom","CoinbaseIcon","Coinbase","BinanceIcon","Binance","React","Column","gap","TextColumn","header","body","helper","ButtonColumn","ButtonAnchor","icon","href","Button","onClick","type","screen","AppScreens","Main"],"mappings":";;;;;;;;;;AAUA,MAAMA,iBAAAA,GAAoB;IACxBC,OAAAA,EAAS,SAAA;IACTC,MAAAA,EAAQ,QAAA;IACRC,GAAAA,EAAK;AACP,CAAA;MAEaC,cAAAA,GAAiB,IAAA;AAC5B,IAAA,MAAM,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,GAAA,EAAA,GAAQC,SAAAA,EAAAA;IACd,MAAM,GAAGC,SAAS,GAAGC,gBAAAA,EAAAA;AAErB,IAAA,MAAMC,aAAAA,GAAgBC,aAAAA,EAAAA;IACtB,MAAMC,YAAAA,GAAeF,aAAAA,CAAcG,OAAAA,CAAQC,QAAQ,CAAA;IACnD,MAAMC,WAAAA,GAAcL,aAAAA,CAAcG,OAAAA,CAAQG,OAAO,CAAA;IACjD,MAAMC,YAAAA,GAAeP,aAAAA,CAAcG,OAAAA,CAAQK,QAAQ,CAAA;IACnD,MAAMC,WAAAA,GAAcT,aAAAA,CAAcG,OAAAA,CAAQO,OAAO,CAAA;AAEjD,IAAA,qBACEC,cAAA,CAAA,aAAA,CAACC,MAAAA,EAAAA;QAAOC,GAAAA,EAAK;qBACXF,cAAA,CAAA,aAAA,CAACG,UAAAA,EAAAA;QACCC,MAAM,EAAA,OAAA,CAAA,CAAA,CAAA;;;;QACNC,IAAI,EAAA,OAAA,CAAA,CAAA,CAAA;;;;QAIJC,MAAM,EAAA,OAAA,CAAA,CAAA,CAAA;;;;AAOR,KAAA,CAAA,gBAAAN,cAAA,CAAA,aAAA,CAACO,kCACCP,cAAA,CAAA,aAAA,CAACQ,YAAAA,EAAAA;AAAc,QAAA,GAAG3B,iBAAiB;AAAE4B,QAAAA,IAAAA,gBAAMT,cAAA,CAAA,aAAA,CAACT,YAAAA,EAAAA,IAAAA,CAAAA;QAAiBmB,IAAAA,EAAK;;;;uBAGlEV,cAAA,CAAA,aAAA,CAACQ,YAAAA,EAAAA;AAAc,QAAA,GAAG3B,iBAAiB;AAAE4B,QAAAA,IAAAA,gBAAMT,cAAA,CAAA,aAAA,CAACN,WAAAA,EAAAA,IAAAA,CAAAA;QAAgBgB,IAAAA,EAAK;;;;uBAIjEV,cAAA,CAAA,aAAA,CAACQ,YAAAA,EAAAA;AAAc,QAAA,GAAG3B,iBAAiB;AAAE4B,QAAAA,IAAAA,gBAAMT,cAAA,CAAA,aAAA,CAACJ,YAAAA,EAAAA,IAAAA,CAAAA;QAAiBc,IAAAA,EAAK;;;;uBAIlEV,cAAA,CAAA,aAAA,CAACQ,YAAAA,EAAAA;AAAc,QAAA,GAAG3B,iBAAiB;AAAE4B,QAAAA,IAAAA,gBAAMT,cAAA,CAAA,aAAA,CAACF,WAAAA,EAAAA,IAAAA,CAAAA;QAAgBY,IAAAA,EAAK;;;;uBAIjEV,cAAA,CAAA,aAAA,CAACW,MAAAA,EAAAA;QAAO7B,OAAAA,EAAQ,SAAA;AAAU8B,QAAAA,OAAAA,EAAS,IAAMzB,QAAAA,CAAS;gBAAE0B,IAAAA,EAAM,YAAA;AAAcC,gBAAAA,MAAAA,EAAQC,WAAWC;AAAK,aAAA;;;;;AAMxG;;;;"}
@@ -1,16 +1,13 @@
1
1
  import * as React from 'react';
2
2
  import { useLingui } from '../../../../../../../node_modules/@lingui/react/dist/index.mjs';
3
3
  import { useGlobalReducer, useConfig, AppScreens } from '../../GlobalContextProvider.mjs';
4
- import { isWalletVisible, WalletToText, WalletToIcon } from '../../../../utils/crypto.mjs';
4
+ import { useCryptoIcon, isWalletVisible, WalletToText } from '../../../../utils/crypto.mjs';
5
5
  import ButtonColumn from '../../../components/molecules/ButtonColumn.mjs';
6
6
  import Button from '../../../components/atoms/Button.mjs';
7
+ import { GenericWalletIcon } from '../../../../assets/genericWallet.mjs';
7
8
  import { Wallets } from '../../../../../../core/src/public/ui.mjs';
8
9
 
9
10
  const MAX_BUTTONS = 6;
10
- const WalletIconComponent = ({ wallet })=>{
11
- const Icon = WalletToIcon[wallet];
12
- return /*#__PURE__*/ React.createElement(Icon, null);
13
- };
14
11
  const walletMessages = {
15
12
  [Wallets.Phantom]: {
16
13
  id: "crypto.wallet.continueWithPhantom",
@@ -41,6 +38,7 @@ const CryptoWalletButtons = ({ type })=>{
41
38
  const { i18n: $__i18n, _: $__ } = useLingui();
42
39
  const [state, dispatch] = useGlobalReducer();
43
40
  const config = useConfig();
41
+ const getCryptoIcon = useCryptoIcon();
44
42
  const oAuthOptions = config.oauthOptions?.providers.length ?? 0;
45
43
  // Crypto Buttons on screen = Maximum Buttons - OAuth Buttons - 1 (Other crypto or set up new wallet)
46
44
  const cryptoButtonsOnMainScreen = MAX_BUTTONS - oAuthOptions - 1;
@@ -62,18 +60,18 @@ const CryptoWalletButtons = ({ type })=>{
62
60
  const mainWallets = allDetectedWallets.slice(0, cryptoButtonsOnMainScreen);
63
61
  const otherWallet = allDetectedWallets.slice(cryptoButtonsOnMainScreen);
64
62
  const walletsToRender = type === 'main' ? mainWallets : otherWallet;
65
- return /*#__PURE__*/ React.createElement(ButtonColumn, null, walletsToRender.map((wallet)=>/*#__PURE__*/ React.createElement(Button, {
63
+ return /*#__PURE__*/ React.createElement(ButtonColumn, null, walletsToRender.map((wallet)=>{
64
+ const walletEnum = Wallets[wallet];
65
+ const Icon = getCryptoIcon(walletEnum);
66
+ return /*#__PURE__*/ React.createElement(Button, {
66
67
  key: wallet,
67
68
  variant: "outline",
68
- icon: /*#__PURE__*/ React.createElement(WalletIconComponent, {
69
- wallet: Wallets[wallet]
70
- }),
71
- onClick: ()=>onWalletStart(Wallets[wallet])
72
- }, type === 'main' ? $__i18n._(walletMessages[Wallets[wallet]]) : $__i18n._(WalletToText[Wallets[wallet]]))), renderOtherScreenButton && type === 'main' ? /*#__PURE__*/ React.createElement(Button, {
69
+ icon: /*#__PURE__*/ React.createElement(Icon, null),
70
+ onClick: ()=>onWalletStart(walletEnum)
71
+ }, type === 'main' ? $__i18n._(walletMessages[walletEnum]) : $__i18n._(WalletToText[walletEnum]));
72
+ }), renderOtherScreenButton && type === 'main' ? /*#__PURE__*/ React.createElement(Button, {
73
73
  variant: "outline",
74
- icon: /*#__PURE__*/ React.createElement(WalletIconComponent, {
75
- wallet: Wallets.GenericEthereumWallet
76
- }),
74
+ icon: /*#__PURE__*/ React.createElement(GenericWalletIcon, null),
77
75
  onClick: ()=>dispatch({
78
76
  type: 'transition',
79
77
  screen: AppScreens.CryptoOtherScreen
@@ -1 +1 @@
1
- {"version":3,"file":"WalletButtons.mjs","sources":["../../../../../../../../../../web/src/ui/b2c/screens/Crypto/WalletButtons.tsx"],"sourcesContent":["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"],"names":["MAX_BUTTONS","WalletIconComponent","wallet","Icon","WalletToIcon","walletMessages","Wallets","Phantom","Binance","Coinbase","Metamask","GenericEthereumWallet","GenericSolanaWallet","CryptoWalletButtons","type","useLingui","state","dispatch","useGlobalReducer","config","useConfig","oAuthOptions","oauthOptions","providers","length","cryptoButtonsOnMainScreen","onWalletStart","cryptoState","formState","walletOption","screen","AppScreens","CryptoConnect","allDetectedWallets","Object","keys","filter","isWalletVisible","renderOtherScreenButton","mainWallets","slice","otherWallet","walletsToRender","ButtonColumn","map","Button","key","variant","icon","onClick","WalletToText","CryptoOtherScreen","CryptoSetupWallet"],"mappings":"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"}
1
+ {"version":3,"file":"WalletButtons.mjs","sources":["../../../../../../../../../../web/src/ui/b2c/screens/Crypto/WalletButtons.tsx"],"sourcesContent":["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"],"names":["MAX_BUTTONS","walletMessages","Wallets","Phantom","Binance","Coinbase","Metamask","GenericEthereumWallet","GenericSolanaWallet","CryptoWalletButtons","type","useLingui","state","dispatch","useGlobalReducer","config","useConfig","getCryptoIcon","useCryptoIcon","oAuthOptions","oauthOptions","providers","length","cryptoButtonsOnMainScreen","onWalletStart","wallet","cryptoState","formState","walletOption","screen","AppScreens","CryptoConnect","allDetectedWallets","Object","keys","filter","isWalletVisible","renderOtherScreenButton","mainWallets","slice","otherWallet","walletsToRender","ButtonColumn","map","walletEnum","Icon","Button","key","variant","icon","onClick","WalletToText","GenericWalletIcon","CryptoOtherScreen","CryptoSetupWallet"],"mappings":"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"}
@@ -42,10 +42,14 @@ const PasswordlessAuthenticate = ({ secondaryType })=>{
42
42
  useMountEffect(()=>{
43
43
  switch(secondaryType){
44
44
  case 'eml':
45
- sendLink();
45
+ sendLink().catch(()=>{
46
+ // Swallow error to avoid unhandled promise errors, sendLink() will already show error toast
47
+ });
46
48
  return;
47
49
  case 'otp':
48
- sendCode();
50
+ sendCode().catch(()=>{
51
+ // Swallow error to avoid unhandled promise errors, sendLink() will already show error toast
52
+ });
49
53
  return;
50
54
  default:
51
55
  stytchClient.passwords.resetByEmailStart(convertPasswordResetOptions(email, passwordOptions)).then((data)=>{
@@ -1 +1 @@
1
- {"version":3,"file":"PasswordlessAuthenticate.mjs","sources":["../../../../../../../../../../web/src/ui/b2c/screens/Secondary/PasswordlessAuthenticate.tsx"],"sourcesContent":["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"],"names":["PasswordlessAuthenticate","secondaryType","useLingui","stytchClient","useStytch","config","useConfig","state","dispatch","useGlobalReducer","onEvent","useEventCallback","onError","useErrorCallback","errorMessage","setErrorMessage","useState","sendLink","sendCode","usePasswordlessAuthenticate","passwordOptions","email","formState","passwordState","resetPassword","passwords","resetByEmailStart","convertPasswordResetOptions","then","data","type","StytchEventType","PasswordResetByEmailStart","screen","AppScreens","PasswordSetNew","catch","e","getTranslatedError","useMountEffect","React","EmailConfirmation","showGoBack","OTPAuthenticate","hideBackButton","Divider","Column","gap","Button","onClick","variant","ErrorText"],"mappings":"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"}
1
+ {"version":3,"file":"PasswordlessAuthenticate.mjs","sources":["../../../../../../../../../../web/src/ui/b2c/screens/Secondary/PasswordlessAuthenticate.tsx"],"sourcesContent":["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"],"names":["PasswordlessAuthenticate","secondaryType","useLingui","stytchClient","useStytch","config","useConfig","state","dispatch","useGlobalReducer","onEvent","useEventCallback","onError","useErrorCallback","errorMessage","setErrorMessage","useState","sendLink","sendCode","usePasswordlessAuthenticate","passwordOptions","email","formState","passwordState","resetPassword","passwords","resetByEmailStart","convertPasswordResetOptions","then","data","type","StytchEventType","PasswordResetByEmailStart","screen","AppScreens","PasswordSetNew","catch","e","getTranslatedError","useMountEffect","React","EmailConfirmation","showGoBack","OTPAuthenticate","hideBackButton","Divider","Column","gap","Button","onClick","variant","ErrorText"],"mappings":"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"}
@@ -1,10 +1,14 @@
1
+ import { useLingui } from '../../../../../../../node_modules/@lingui/react/dist/index.mjs';
1
2
  import { useState } from 'react';
2
3
  import { useStytch, useConfig, useGlobalReducer, useEventCallback, useErrorCallback } from '../../GlobalContextProvider.mjs';
3
4
  import { convertMagicLinkOptions } from '../../../../utils/index.mjs';
5
+ import { errorToast } from '../../../components/atoms/Toast.mjs';
6
+ import { getTranslatedError } from '../../../../utils/getTranslatedError.mjs';
4
7
  import { DEFAULT_OTP_EXPIRATION_MINUTES } from '../../../../../../core/src/constants.mjs';
5
8
  import { StytchEventType, OTPMethods } from '../../../../../../core/src/public/ui.mjs';
6
9
 
7
10
  function usePasswordlessAuthenticate() {
11
+ const { i18n: $__i18n, _: $__ } = useLingui();
8
12
  const stytchClient = useStytch();
9
13
  const { emailMagicLinksOptions, otpOptions } = useConfig();
10
14
  const [state, dispatch] = useGlobalReducer();
@@ -29,6 +33,9 @@ function usePasswordlessAuthenticate() {
29
33
  });
30
34
  } catch (e) {
31
35
  onError(e);
36
+ errorToast({
37
+ message: getTranslatedError(e, $__)
38
+ });
32
39
  throw e;
33
40
  } finally{
34
41
  setIsSubmitting(false);
@@ -55,6 +62,9 @@ function usePasswordlessAuthenticate() {
55
62
  });
56
63
  } catch (e) {
57
64
  onError(e);
65
+ errorToast({
66
+ message: getTranslatedError(e, $__)
67
+ });
58
68
  throw e;
59
69
  } finally{
60
70
  setIsSubmitting(false);
@@ -1 +1 @@
1
- {"version":3,"file":"usePasswordlessAuthenticate.mjs","sources":["../../../../../../../../../../web/src/ui/b2c/screens/Secondary/usePasswordlessAuthenticate.ts"],"sourcesContent":["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"],"names":["usePasswordlessAuthenticate","stytchClient","useStytch","emailMagicLinksOptions","otpOptions","useConfig","state","dispatch","useGlobalReducer","onEvent","useEventCallback","onError","useErrorCallback","isSubmitting","setIsSubmitting","useState","email","formState","passwordState","sendLink","data","magicLinks","loginOrCreate","convertMagicLinkOptions","type","StytchEventType","MagicLinkLoginOrCreateEvent","e","sendCode","otps","expiration_minutes","expirationMinutes","DEFAULT_OTP_EXPIRATION_MINUTES","locale","OTPsLoginOrCreateEvent","otpState","OTPMethods","Email","methodId","method_id","otpDestination"],"mappings":";;;;;;AAYO,SAASA,2BAAAA,GAAAA;AACd,IAAA,MAAMC,YAAAA,GAAeC,SAAAA,EAAAA;AACrB,IAAA,MAAM,EAAEC,sBAAsB,EAAEC,UAAU,EAAE,GAAGC,SAAAA,EAAAA;IAC/C,MAAM,CAACC,KAAAA,EAAOC,QAAAA,CAAS,GAAGC,gBAAAA,EAAAA;AAC1B,IAAA,MAAMC,OAAAA,GAAUC,gBAAAA,EAAAA;AAChB,IAAA,MAAMC,OAAAA,GAAUC,gBAAAA,EAAAA;AAEhB,IAAA,MAAM,CAACC,YAAAA,EAAcC,eAAAA,CAAgB,GAAGC,QAAAA,CAAS,KAAA,CAAA;AAEjD,IAAA,MAAMC,QAAQV,KAAAA,CAAMW,SAAS,CAACC,aAAa,CAACF,KAAK;AAEjD,IAAA,MAAMG,QAAAA,GAAW,UAAA;QACfL,eAAAA,CAAgB,IAAA,CAAA;QAEhB,IAAI;YACF,MAAMM,IAAAA,GAAO,MAAMnB,YAAAA,CAAaoB,UAAU,CAACL,KAAK,CAACM,aAAa,CAC5DN,KAAAA,EACAO,uBAAAA,CAAwBpB,sBAAAA,CAAAA,CAAAA;YAE1BM,OAAAA,CAAQ;AAAEe,gBAAAA,IAAAA,EAAMC,gBAAgBC,2BAA2B;gBAAEN,IAAAA,EAAM;AAAE,oBAAA,GAAGA,IAAI;AAAEJ,oBAAAA;AAAM;AAAE,aAAA,CAAA;YACtFT,QAAAA,CAAS;gBAAEiB,IAAAA,EAAM,sBAAA;gBAAwBR,KAAAA,EAAOA;AAAM,aAAA,CAAA;AACxD,QAAA,CAAA,CAAE,OAAOW,CAAAA,EAAG;YACVhB,OAAAA,CAAQgB,CAAAA,CAAAA;YACR,MAAMA,CAAAA;QACR,CAAA,QAAU;YACRb,eAAAA,CAAgB,KAAA,CAAA;AAClB,QAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAMc,QAAAA,GAAW,UAAA;QACfd,eAAAA,CAAgB,IAAA,CAAA;QAEhB,IAAI;YACF,MAAMM,IAAAA,GAAO,MAAMnB,YAAAA,CAAa4B,IAAI,CAACb,KAAK,CAACM,aAAa,CAACN,KAAAA,EAAO;AAC9Dc,gBAAAA,kBAAAA,EAAoB1B,YAAY2B,iBAAAA,IAAqBC,8BAAAA;AACrDC,gBAAAA,MAAAA,EAAQ7B,UAAAA,EAAY6B;AACtB,aAAA,CAAA;YACAxB,OAAAA,CAAQ;AAAEe,gBAAAA,IAAAA,EAAMC,gBAAgBS,sBAAsB;AAAEd,gBAAAA;AAAK,aAAA,CAAA;YAC7Db,QAAAA,CAAS;gBACPiB,IAAAA,EAAM,kBAAA;gBACNW,QAAAA,EAAU;AACRX,oBAAAA,IAAAA,EAAMY,WAAWC,KAAK;AACtBC,oBAAAA,QAAAA,EAAUlB,KAAKmB,SAAS;oBACxBC,cAAAA,EAAgBxB;AAClB;AACF,aAAA,CAAA;AACF,QAAA,CAAA,CAAE,OAAOW,CAAAA,EAAG;YACVhB,OAAAA,CAAQgB,CAAAA,CAAAA;YACR,MAAMA,CAAAA;QACR,CAAA,QAAU;YACRb,eAAAA,CAAgB,KAAA,CAAA;AAClB,QAAA;AACF,IAAA,CAAA;IAEA,OAAO;AACLK,QAAAA,QAAAA;AACAS,QAAAA,QAAAA;AACAf,QAAAA;AACF,KAAA;AACF;;;;"}
1
+ {"version":3,"file":"usePasswordlessAuthenticate.mjs","sources":["../../../../../../../../../../web/src/ui/b2c/screens/Secondary/usePasswordlessAuthenticate.ts"],"sourcesContent":["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"],"names":["usePasswordlessAuthenticate","useLingui","stytchClient","useStytch","emailMagicLinksOptions","otpOptions","useConfig","state","dispatch","useGlobalReducer","onEvent","useEventCallback","onError","useErrorCallback","isSubmitting","setIsSubmitting","useState","email","formState","passwordState","sendLink","data","magicLinks","loginOrCreate","convertMagicLinkOptions","type","StytchEventType","MagicLinkLoginOrCreateEvent","e","errorToast","message","getTranslatedError","sendCode","otps","expiration_minutes","expirationMinutes","DEFAULT_OTP_EXPIRATION_MINUTES","locale","OTPsLoginOrCreateEvent","otpState","OTPMethods","Email","methodId","method_id","otpDestination"],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ import '../../../../../node_modules/chroma-js/index.mjs';
2
+ import chroma from '../../../../../node_modules/chroma-js/src/chroma.mjs';
3
+
4
+ /* eslint-disable lingui/no-unlocalized-strings */ function rgba(color) {
5
+ if (color.alpha() === 1) return `rgb(${color.rgb().join(',')})`;
6
+ return `rgba(${color.rgba().join(',')})`;
7
+ }
8
+ /**
9
+ * Takes a theme and dynamically generate the styles that uses color-mix,
10
+ * as a fallback for browsers that do not support color-mix()
11
+ */ function generateColorFallback(theme) {
12
+ // Don't use chroma.colorMix since chroma.js treats transparent as rgba(0, 0, 0, 0)
13
+ // which means our color is mixed with black rather than the original color
14
+ // with alpha 0, which is what browsers so instead
15
+ return {
16
+ // --tab-background: color-mix(in oklab, var(--accent) 80%, transparent);
17
+ 'tab-background': rgba(chroma(theme.accent).alpha(0.8)),
18
+ // --primary-button-hover: color-mix(in oklab, var(--primary) 90%, transparent);
19
+ 'primary-button-hover': rgba(chroma(theme.primary).alpha(0.9)),
20
+ // --secondary-button-hover: color-mix(in oklab, var(--secondary) 80%, transparent);
21
+ 'secondary-button-hover': rgba(chroma(theme.secondary).alpha(0.8)),
22
+ // --destructive-button-hover: color-mix(in oklab, var(--destructive) 80%, transparent);
23
+ 'destructive-button-hover': rgba(chroma(theme.destructive).alpha(0.8)),
24
+ // --divider-color: color-mix(in oklab, var(--border) 50%, transparent);
25
+ 'divider-color': rgba(chroma(theme.border).alpha(0.5)),
26
+ // --focus-ring-shadow: 0 0 0 3px color-mix(in oklab, var(--ring) 50%, transparent);
27
+ 'focus-ring-shadow': `0 0 0 3px ${rgba(chroma(theme.ring).alpha(0.5))}`
28
+ };
29
+ }
30
+ const colors = [
31
+ 'background',
32
+ 'foreground',
33
+ 'primary',
34
+ 'primary-foreground',
35
+ 'secondary',
36
+ 'secondary-foreground',
37
+ 'muted',
38
+ 'muted-foreground',
39
+ 'accent',
40
+ 'accent-foreground',
41
+ 'border',
42
+ 'input',
43
+ 'ring',
44
+ 'destructive',
45
+ 'warning',
46
+ 'success'
47
+ ];
48
+ function addColorFallback(theme) {
49
+ const updatedTheme = {
50
+ ...theme,
51
+ ...generateColorFallback(theme)
52
+ };
53
+ // RGB fallbacks for all Theme colors that use oklch, if the customer's browsers
54
+ // don't support them
55
+ for (const property of colors){
56
+ if (!chroma.valid(theme[property])) continue;
57
+ updatedTheme[property] = rgba(chroma(theme[property]));
58
+ }
59
+ return updatedTheme;
60
+ }
61
+
62
+ export { addColorFallback, generateColorFallback };
63
+ //# sourceMappingURL=generateColorFallback.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateColorFallback.mjs","sources":["../../../../../../../../web/src/ui/compat/generateColorFallback.ts"],"sourcesContent":["import chroma from 'chroma-js';\n\nimport type { ColorMixFallback, Theme } from '../components/themes/ThemeConfig';\n\n/* eslint-disable lingui/no-unlocalized-strings */\n\nfunction rgba(color: chroma.Color) {\n if (color.alpha() === 1) return `rgb(${color.rgb().join(',')})`;\n return `rgba(${color.rgba().join(',')})`;\n}\n\n/**\n * Takes a theme and dynamically generate the styles that uses color-mix,\n * as a fallback for browsers that do not support color-mix()\n */\nexport function generateColorFallback(theme: Theme): ColorMixFallback {\n // Don't use chroma.colorMix since chroma.js treats transparent as rgba(0, 0, 0, 0)\n // which means our color is mixed with black rather than the original color\n // with alpha 0, which is what browsers so instead\n return {\n // --tab-background: color-mix(in oklab, var(--accent) 80%, transparent);\n 'tab-background': rgba(chroma(theme.accent).alpha(0.8)),\n // --primary-button-hover: color-mix(in oklab, var(--primary) 90%, transparent);\n 'primary-button-hover': rgba(chroma(theme.primary).alpha(0.9)),\n // --secondary-button-hover: color-mix(in oklab, var(--secondary) 80%, transparent);\n 'secondary-button-hover': rgba(chroma(theme.secondary).alpha(0.8)),\n // --destructive-button-hover: color-mix(in oklab, var(--destructive) 80%, transparent);\n 'destructive-button-hover': rgba(chroma(theme.destructive).alpha(0.8)),\n // --divider-color: color-mix(in oklab, var(--border) 50%, transparent);\n 'divider-color': rgba(chroma(theme.border).alpha(0.5)),\n // --focus-ring-shadow: 0 0 0 3px color-mix(in oklab, var(--ring) 50%, transparent);\n 'focus-ring-shadow': `0 0 0 3px ${rgba(chroma(theme.ring).alpha(0.5))}`,\n };\n}\n\nconst colors = [\n 'background',\n 'foreground',\n 'primary',\n 'primary-foreground',\n 'secondary',\n 'secondary-foreground',\n 'muted',\n 'muted-foreground',\n 'accent',\n 'accent-foreground',\n 'border',\n 'input',\n 'ring',\n 'destructive',\n 'warning',\n 'success',\n] as const satisfies (keyof Theme)[];\n\nexport function addColorFallback(theme: Theme): Theme {\n const updatedTheme = { ...theme, ...generateColorFallback(theme) };\n\n // RGB fallbacks for all Theme colors that use oklch, if the customer's browsers\n // don't support them\n for (const property of colors) {\n if (!chroma.valid(theme[property])) continue;\n updatedTheme[property] = rgba(chroma(theme[property]!));\n }\n\n return updatedTheme;\n}\n"],"names":["rgba","color","alpha","rgb","join","generateColorFallback","theme","chroma","accent","primary","secondary","destructive","border","ring","colors","addColorFallback","updatedTheme","property","valid"],"mappings":";;;AAIA,mDAEA,SAASA,IAAAA,CAAKC,KAAmB,EAAA;AAC/B,IAAA,IAAIA,KAAAA,CAAMC,KAAK,EAAA,KAAO,CAAA,EAAG,OAAO,CAAC,IAAI,EAAED,KAAAA,CAAME,GAAG,EAAA,CAAGC,IAAI,CAAC,GAAA,CAAA,CAAK,CAAC,CAAC;IAC/D,OAAO,CAAC,KAAK,EAAEH,KAAAA,CAAMD,IAAI,GAAGI,IAAI,CAAC,GAAA,CAAA,CAAK,CAAC,CAAC;AAC1C;AAEA;;;IAIO,SAASC,qBAAAA,CAAsBC,KAAY,EAAA;;;;IAIhD,OAAO;;AAEL,QAAA,gBAAA,EAAkBN,KAAKO,MAAAA,CAAOD,KAAAA,CAAME,MAAM,CAAA,CAAEN,KAAK,CAAC,GAAA,CAAA,CAAA;;AAElD,QAAA,sBAAA,EAAwBF,KAAKO,MAAAA,CAAOD,KAAAA,CAAMG,OAAO,CAAA,CAAEP,KAAK,CAAC,GAAA,CAAA,CAAA;;AAEzD,QAAA,wBAAA,EAA0BF,KAAKO,MAAAA,CAAOD,KAAAA,CAAMI,SAAS,CAAA,CAAER,KAAK,CAAC,GAAA,CAAA,CAAA;;AAE7D,QAAA,0BAAA,EAA4BF,KAAKO,MAAAA,CAAOD,KAAAA,CAAMK,WAAW,CAAA,CAAET,KAAK,CAAC,GAAA,CAAA,CAAA;;AAEjE,QAAA,eAAA,EAAiBF,KAAKO,MAAAA,CAAOD,KAAAA,CAAMM,MAAM,CAAA,CAAEV,KAAK,CAAC,GAAA,CAAA,CAAA;;QAEjD,mBAAA,EAAqB,CAAC,UAAU,EAAEF,IAAAA,CAAKO,MAAAA,CAAOD,MAAMO,IAAI,CAAA,CAAEX,KAAK,CAAC,GAAA,CAAA,CAAA,CAAA;AAClE,KAAA;AACF;AAEA,MAAMY,MAAAA,GAAS;AACb,IAAA,YAAA;AACA,IAAA,YAAA;AACA,IAAA,SAAA;AACA,IAAA,oBAAA;AACA,IAAA,WAAA;AACA,IAAA,sBAAA;AACA,IAAA,OAAA;AACA,IAAA,kBAAA;AACA,IAAA,QAAA;AACA,IAAA,mBAAA;AACA,IAAA,QAAA;AACA,IAAA,OAAA;AACA,IAAA,MAAA;AACA,IAAA,aAAA;AACA,IAAA,SAAA;AACA,IAAA;AACD,CAAA;AAEM,SAASC,iBAAiBT,KAAY,EAAA;AAC3C,IAAA,MAAMU,YAAAA,GAAe;AAAE,QAAA,GAAGV,KAAK;AAAE,QAAA,GAAGD,sBAAsBC,KAAAA;AAAO,KAAA;;;IAIjE,KAAK,MAAMW,YAAYH,MAAAA,CAAQ;AAC7B,QAAA,IAAI,CAACP,MAAAA,CAAOW,KAAK,CAACZ,KAAK,CAACW,SAAS,CAAA,EAAG;AACpCD,QAAAA,YAAY,CAACC,QAAAA,CAAS,GAAGjB,KAAKO,MAAAA,CAAOD,KAAK,CAACW,QAAAA,CAAS,CAAA,CAAA;AACtD,IAAA;IAEA,OAAOD,YAAAA;AACT;;;;"}
@@ -0,0 +1,119 @@
1
+ /* eslint-disable lingui/no-unlocalized-strings */ /**
2
+ * Maps a legacy StyleConfig to the new Theme format.
3
+ *
4
+ * This is a best-effort mapping - some StyleConfig properties don't have
5
+ * direct equivalents in Theme, and some Theme properties don't have
6
+ * StyleConfig equivalents.
7
+ *
8
+ * StyleConfig properties that don't have good mappings to Theme:
9
+ * - inputs.placeholderColor - No equivalent (could potentially map to muted-foreground)
10
+ * - inputs.textColor - Mapped to foreground as approximation, but is input-specific
11
+ * - buttons.primary.borderColor - No specific mapping (could use border but loses specificity)
12
+ * - buttons.primary.borderRadius - Mapped to button-radius but loses primary-specific control
13
+ * - buttons.secondary.borderColor - No specific mapping (could use border but loses specificity)
14
+ * - buttons.secondary.borderRadius - Mapped to button-radius but loses secondary-specific control
15
+ * - buttons.disabled.* - No equivalents (disabled state styling not in Theme)
16
+ *
17
+ * Theme properties that don't have StyleConfig equivalents:
18
+ * - 'transition-duration' - defaulted to 0 instead of 0.15s in our new default theme
19
+ * - 'font-family-mono' - defaults to theme default which is system UI monospace
20
+ * - 'text-base' - defaults to 1rem which is close to the old font sizes
21
+ * - spacing - defaults to new theme default which is close but not equivalent to old spacing
22
+ * - shadow, 'shadow-button', 'shadow-input' - no default in new theme
23
+ * - foreground - Approximated from inputs.textColor but not exact
24
+ * - muted, 'muted-foreground'
25
+ * - 'accent-foreground'
26
+ * - ring - previously defaults to OS default focus outline color
27
+ */ function styleToTheme(styleConfig, { silent } = {}) {
28
+ const theme = {};
29
+ const options = {};
30
+ const { colors, container, inputs, hideHeaderText, buttons, logo, fontFamily, ...outerEmpty } = styleConfig;
31
+ // presentation.theme mapping
32
+ // ------------------------------------------------
33
+ theme['font-family'] = fontFamily;
34
+ if (colors) {
35
+ const { primary, secondary, success, warning, accent, error, ...expectEmpty } = colors;
36
+ Object.assign(theme, {
37
+ primary,
38
+ secondary,
39
+ success,
40
+ warning,
41
+ accent,
42
+ destructive: error
43
+ });
44
+ }
45
+ if (container) {
46
+ const { backgroundColor, borderColor, width, borderRadius, ...expectEmpty } = container;
47
+ Object.assign(theme, {
48
+ background: backgroundColor,
49
+ border: borderColor,
50
+ 'container-width': width,
51
+ // 1/4 because the new base is quite small and most components use a 2x or 4x multiplier
52
+ 'rounded-base': updateLength(borderRadius, 0.25)
53
+ });
54
+ }
55
+ if (buttons) {
56
+ const { primary, secondary, disabled, ...expectEmpty } = buttons;
57
+ // Set background and text colors
58
+ Object.assign(theme, {
59
+ primary: primary?.backgroundColor,
60
+ 'primary-foreground': primary?.textColor,
61
+ secondary: secondary?.backgroundColor,
62
+ 'secondary-foreground': secondary?.textColor
63
+ });
64
+ // Set border radius
65
+ if (primary?.borderRadius || secondary?.borderRadius) {
66
+ // Conflicts between primary and secondary border radius is handled above
67
+ const baseRadius = updateLength(primary?.borderRadius, 0.5) ?? updateLength(secondary?.borderRadius, 0.5);
68
+ if (theme['rounded-base']) {
69
+ if (theme['rounded-base'] !== baseRadius) {
70
+ theme['button-radius'] = primary?.borderRadius;
71
+ }
72
+ } else {
73
+ theme['rounded-base'] = baseRadius;
74
+ }
75
+ }
76
+ }
77
+ if (inputs) {
78
+ const { backgroundColor, textColor, placeholderColor, borderColor, borderRadius, ...expectEmpty } = inputs;
79
+ Object.assign(theme, {
80
+ foreground: textColor,
81
+ input: borderColor,
82
+ 'muted-foreground': placeholderColor
83
+ });
84
+ // Set border radius
85
+ if (theme['rounded-base']) {
86
+ if (theme['rounded-base'] !== borderRadius) {
87
+ theme['input-radius'] = borderRadius;
88
+ }
89
+ } else {
90
+ theme['rounded-base'] = borderRadius;
91
+ }
92
+ }
93
+ // presentation.options mapping
94
+ // ------------------------------------------------
95
+ options.hideHeaderText = hideHeaderText;
96
+ if (logo?.logoImageUrl) {
97
+ options.logo = {
98
+ url: logo.logoImageUrl,
99
+ alt: ''
100
+ };
101
+ }
102
+ return {
103
+ theme: removeEmptyValues(theme),
104
+ options: removeEmptyValues(options)
105
+ };
106
+ }
107
+ function removeEmptyValues(obj) {
108
+ return Object.fromEntries(Object.entries(obj).filter(([, value])=>value != null && value !== ''));
109
+ }
110
+ function updateLength(length, factor) {
111
+ if (!length) return length;
112
+ // Loose check that this is a numeric and not keyword value
113
+ const value = parseFloat(length);
114
+ if (Number.isNaN(value)) return length;
115
+ return `calc(${length} * ${factor})`;
116
+ }
117
+
118
+ export { styleToTheme };
119
+ //# sourceMappingURL=styleToTheme.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styleToTheme.mjs","sources":["../../../../../../../../web/src/ui/compat/styleToTheme.ts"],"sourcesContent":["import type { StyleConfig } from '@stytch/core/public';\nimport type { Theme } from '../components/themes/ThemeConfig';\nimport type { PresentationOptions } from '../components/PresentationConfig';\nimport { logger, RUN_IN_DEV } from '@stytch/core';\n\n/* eslint-disable lingui/no-unlocalized-strings */\n\n/**\n * Maps a legacy StyleConfig to the new Theme format.\n *\n * This is a best-effort mapping - some StyleConfig properties don't have\n * direct equivalents in Theme, and some Theme properties don't have\n * StyleConfig equivalents.\n *\n * StyleConfig properties that don't have good mappings to Theme:\n * - inputs.placeholderColor - No equivalent (could potentially map to muted-foreground)\n * - inputs.textColor - Mapped to foreground as approximation, but is input-specific\n * - buttons.primary.borderColor - No specific mapping (could use border but loses specificity)\n * - buttons.primary.borderRadius - Mapped to button-radius but loses primary-specific control\n * - buttons.secondary.borderColor - No specific mapping (could use border but loses specificity)\n * - buttons.secondary.borderRadius - Mapped to button-radius but loses secondary-specific control\n * - buttons.disabled.* - No equivalents (disabled state styling not in Theme)\n *\n * Theme properties that don't have StyleConfig equivalents:\n * - 'transition-duration' - defaulted to 0 instead of 0.15s in our new default theme\n * - 'font-family-mono' - defaults to theme default which is system UI monospace\n * - 'text-base' - defaults to 1rem which is close to the old font sizes\n * - spacing - defaults to new theme default which is close but not equivalent to old spacing\n * - shadow, 'shadow-button', 'shadow-input' - no default in new theme\n * - foreground - Approximated from inputs.textColor but not exact\n * - muted, 'muted-foreground'\n * - 'accent-foreground'\n * - ring - previously defaults to OS default focus outline color\n */\nexport function styleToTheme(\n styleConfig: StyleConfig,\n { silent }: { silent?: boolean } = {},\n): {\n theme: Partial<Theme>;\n options: Partial<PresentationOptions>;\n} {\n const warn = silent\n ? () => {\n // noop\n }\n : logger.warn;\n const error = silent\n ? () => {\n // noop\n }\n : logger.error;\n\n const theme: Partial<Theme> = {};\n const options: Partial<PresentationOptions> = {};\n\n const { colors, container, inputs, hideHeaderText, buttons, logo, fontFamily, ...outerEmpty } = styleConfig;\n\n // presentation.theme mapping\n // ------------------------------------------------\n RUN_IN_DEV(() => {\n warn(\n \"styleToTheme: We recommend setting theme['color-scheme'] to either 'light' or 'dark' explicitly \" +\n 'depending on whether this is a light or dark theme. This enables icons to automatically automatically ' +\n 'apply contrasting colors.',\n );\n\n if (Object.keys(outerEmpty).length > 0) warn('styleToTheme: Unrecognized style properties', outerEmpty);\n });\n\n theme['font-family'] = fontFamily;\n\n if (colors) {\n const { primary, secondary, success, warning, accent, error, ...expectEmpty } = colors;\n RUN_IN_DEV(() => {\n if (Object.keys(expectEmpty).length > 0) warn('styleToTheme: Unrecognized style.colors properties', expectEmpty);\n });\n\n Object.assign(theme, {\n primary,\n secondary,\n success,\n warning,\n accent,\n destructive: error,\n } satisfies Partial<Theme>);\n }\n\n if (container) {\n const { backgroundColor, borderColor, width, borderRadius, ...expectEmpty } = container;\n\n RUN_IN_DEV(() => {\n if (Object.keys(expectEmpty).length > 0)\n warn('styleToTheme: Unrecognized style.container properties', expectEmpty);\n });\n\n Object.assign(theme, {\n background: backgroundColor,\n border: borderColor,\n 'container-width': width,\n // 1/4 because the new base is quite small and most components use a 2x or 4x multiplier\n 'rounded-base': updateLength(borderRadius, 0.25),\n } satisfies Partial<Theme>);\n }\n\n if (buttons) {\n const { primary, secondary, disabled, ...expectEmpty } = buttons;\n\n RUN_IN_DEV(() => {\n if (Object.keys(expectEmpty).length > 0) warn('styleToTheme: Unrecognized style.buttons properties', expectEmpty);\n\n if (disabled && Object.keys(disabled).length > 0)\n warn('styleToTheme: buttons.disabled is no longer supported', { disabled });\n\n if (primary?.borderColor && primary?.backgroundColor && primary.borderColor !== primary.backgroundColor)\n error(\n \"styleToTheme: primary button's border color is now always equal to background color; \" +\n 'having distinct colors is no longer supported',\n {\n borderColor: primary.borderColor,\n backgroundColor: primary.backgroundColor,\n },\n );\n\n if (secondary?.borderColor && secondary.textColor && secondary.borderColor !== secondary.textColor)\n error(\"styleToTheme: secondary button's border color is now always equal to text color\", {\n borderColor: secondary.borderColor,\n textColor: secondary.textColor,\n });\n\n if (primary?.borderRadius !== secondary?.borderRadius)\n error('styleToTheme: All buttons must use the same border-radius', {\n primaryRadius: primary?.borderRadius,\n secondaryRadius: secondary?.borderRadius,\n });\n });\n\n // Set background and text colors\n Object.assign(theme, {\n primary: primary?.backgroundColor,\n 'primary-foreground': primary?.textColor,\n\n secondary: secondary?.backgroundColor,\n 'secondary-foreground': secondary?.textColor,\n } satisfies Partial<Theme>);\n\n // Set border radius\n if (primary?.borderRadius || secondary?.borderRadius) {\n // Conflicts between primary and secondary border radius is handled above\n const baseRadius = updateLength(primary?.borderRadius, 0.5) ?? updateLength(secondary?.borderRadius, 0.5);\n\n if (theme['rounded-base']) {\n if (theme['rounded-base'] !== baseRadius) {\n theme['button-radius'] = primary?.borderRadius;\n }\n } else {\n theme['rounded-base'] = baseRadius;\n }\n }\n }\n\n if (inputs) {\n const { backgroundColor, textColor, placeholderColor, borderColor, borderRadius, ...expectEmpty } = inputs;\n RUN_IN_DEV(() => {\n if (Object.keys(expectEmpty).length > 0) warn('styleToTheme: Unrecognized style.buttons properties', expectEmpty);\n\n if (backgroundColor && theme.background && theme.background !== backgroundColor)\n error('styleToTheme: Input now always use the container background', {\n inputBackground: backgroundColor,\n containerBackground: theme.background,\n });\n });\n\n Object.assign(theme, {\n foreground: textColor,\n input: borderColor,\n 'muted-foreground': placeholderColor,\n } satisfies Partial<Theme>);\n\n // Set border radius\n if (theme['rounded-base']) {\n if (theme['rounded-base'] !== borderRadius) {\n theme['input-radius'] = borderRadius;\n }\n } else {\n theme['rounded-base'] = borderRadius;\n }\n }\n\n // presentation.options mapping\n // ------------------------------------------------\n\n options.hideHeaderText = hideHeaderText;\n if (logo?.logoImageUrl) {\n options.logo = {\n url: logo.logoImageUrl,\n alt: '',\n };\n\n RUN_IN_DEV(() => {\n logger.warn('styleToTheme: Please set options.logo.alt for the logo alt text for accessibility');\n });\n }\n\n return { theme: removeEmptyValues(theme), options: removeEmptyValues(options) };\n}\n\nfunction removeEmptyValues<T extends Record<string, unknown>>(obj: T): T {\n return Object.fromEntries(Object.entries(obj).filter(([, value]) => value != null && value !== '')) as T;\n}\n\nfunction updateLength(length: string | undefined, factor: number): string | undefined {\n if (!length) return length;\n\n // Loose check that this is a numeric and not keyword value\n const value = parseFloat(length);\n if (Number.isNaN(value)) return length;\n\n return `calc(${length} * ${factor})`;\n}\n"],"names":["styleToTheme","styleConfig","silent","theme","options","colors","container","inputs","hideHeaderText","buttons","logo","fontFamily","outerEmpty","primary","secondary","success","warning","accent","error","expectEmpty","Object","assign","destructive","backgroundColor","borderColor","width","borderRadius","background","border","updateLength","disabled","textColor","baseRadius","placeholderColor","foreground","input","logoImageUrl","url","alt","removeEmptyValues","obj","fromEntries","entries","filter","value","length","factor","parseFloat","Number","isNaN"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PresentationConfig.mjs","sources":["../../../../../../../../web/src/ui/components/PresentationConfig.ts"],"sourcesContent":["import { defaultTheme } from './themes/themes';\nimport { createContext, useContext, useMemo } from 'react';\nimport { PresentationConfig } from '../../types';\nimport { Theme } from './themes/ThemeConfig';\nimport { useMediaQuery } from '../hooks/useMediaQuery';\nimport { IconRegistry } from './IconRegistry';\nimport { IconNames } from '../b2c/components/Icons';\nimport { logger } from '@stytch/core';\n\nexport type PresentationOptions = {\n /**\n * When this value is false, the title and description text will not show in the SDK.\n */\n hideHeaderText: boolean;\n\n /**\n * Optional suffix for <input> id attribute so input IDs are unique.\n */\n inputIdSuffix?: string;\n\n /**\n * The configuration object for your custom logo.\n */\n logo?: {\n /**\n * The URL of your custom logo.\n */\n url: string;\n\n /**\n * Alt text for the logo. This would usually be the name of the website or your company,\n * unless this is already repeated nearby in which case this should be left empty.\n */\n alt: string;\n };\n\n /**\n * Override our icons. Currently, this only supports logos, such as those that appear in Oauth buttons.\n * This should be an object where the key is the icon name and the value is a React component\n * (not React element) with a size prop and the rest spread onto the root element.\n *\n * Note that custom logos not imported from our packages is not yet available in @stytch/vanilla-js.\n * We are looking at provide alternatives in the future.\n *\n * @example\n *\n * // Using a solid black or white icon\n * import { whiteIcons } from '@stytch/react';\n *\n * const presentation = {\n * options: {\n * icons: {\n * outlook: whiteIcons.outlook,\n * },\n * },\n * };\n *\n * // Using a custom icon\n * const presentation = {\n * icons: {\n * outlook: ({ size, ...props }) => (\n * <svg width={size} height={size} {...props}>...</svg>\n * ),\n * },\n * };\n */\n icons?: IconRegistry<string>;\n};\n\nconst defaultOptions: PresentationOptions = {\n hideHeaderText: false,\n};\n\n/**\n * Internal type -\n * @see {PresentationConfig} is the public one\n */\nexport type Presentation = {\n theme: Theme;\n options: PresentationOptions;\n\n // Internal properties\n displayWatermark: boolean;\n iconRegistry: IconRegistry<string>;\n};\n\nexport function usePresentationWithDefault(\n maybeConfig: PresentationConfig | undefined,\n displayWatermark: boolean,\n products: { id: string; icons?: Partial<IconRegistry<IconNames>> }[],\n productsName?: string,\n): Presentation {\n const { theme, options } = maybeConfig ?? {};\n\n if (process.env.NODE_ENV !== 'production') {\n const stringProducts = products.filter((p) => typeof p === 'string');\n if (stringProducts.length > 0) {\n logger.error(\n `Please add an import for ${productsName} and update config.products to\\n` +\n 'products: [' +\n products.map((p) => `${productsName}.${typeof p === 'string' ? p : p.id}`).join(', ') +\n ']',\n );\n\n throw new Error(\"'config.products' should not include strings anymore\");\n }\n }\n\n // Switch theme automatically depending on color scheme\n const isDynamic = isDynamicTheme(theme);\n const darkMode = useMediaQuery(isDynamic ? '(prefers-color-scheme: dark)' : undefined);\n\n let effectiveTheme: Partial<Theme> | undefined;\n if (isDynamic) {\n effectiveTheme = darkMode ? theme[1] : theme[0];\n } else {\n effectiveTheme = theme;\n }\n\n // Memoize the icon registry so it only need to be constructed once\n const iconRegistry = useMemo(() => {\n const registry: IconRegistry<string> = {};\n for (const product of products) {\n Object.assign(registry, product.icons);\n }\n Object.assign(registry, options?.icons);\n return registry;\n }, [products, options]);\n\n return {\n theme: {\n ...defaultTheme,\n ...effectiveTheme,\n },\n options: {\n ...defaultOptions,\n ...options,\n },\n displayWatermark,\n iconRegistry,\n };\n}\n\nexport function isDynamicTheme(\n theme: PresentationConfig['theme'],\n): theme is readonly [light: Partial<Theme>, dark: Partial<Theme>] {\n return Array.isArray(theme);\n}\n\nexport const PresentationContext = createContext<Presentation>(undefined!);\nexport const usePresentation = () => useContext(PresentationContext);\n"],"names":["defaultOptions","hideHeaderText","usePresentationWithDefault","maybeConfig","displayWatermark","products","productsName","theme","options","isDynamic","isDynamicTheme","darkMode","useMediaQuery","undefined","effectiveTheme","iconRegistry","useMemo","registry","product","Object","assign","icons","defaultTheme","Array","isArray","PresentationContext","createContext","usePresentation","useContext"],"mappings":";;;;AAqEA,MAAMA,cAAAA,GAAsC;IAC1CC,cAAAA,EAAgB;AAClB,CAAA;AAeO,SAASC,2BACdC,WAA2C,EAC3CC,gBAAyB,EACzBC,QAAoE,EACpEC,YAAqB,EAAA;AAErB,IAAA,MAAM,EAAEC,KAAK,EAAEC,OAAO,EAAE,GAAGL,eAAe,EAAC;;AAiB3C,IAAA,MAAMM,YAAYC,cAAAA,CAAeH,KAAAA,CAAAA;IACjC,MAAMI,QAAAA,GAAWC,aAAAA,CAAcH,SAAAA,GAAY,8BAAA,GAAiCI,SAAAA,CAAAA;IAE5E,IAAIC,cAAAA;AACJ,IAAA,IAAIL,SAAAA,EAAW;AACbK,QAAAA,cAAAA,GAAiBH,WAAWJ,KAAK,CAAC,EAAE,GAAGA,KAAK,CAAC,CAAA,CAAE;IACjD,CAAA,MAAO;QACLO,cAAAA,GAAiBP,KAAAA;AACnB,IAAA;;AAGA,IAAA,MAAMQ,eAAeC,OAAAA,CAAQ,IAAA;AAC3B,QAAA,MAAMC,WAAiC,EAAC;QACxC,KAAK,MAAMC,WAAWb,QAAAA,CAAU;AAC9Bc,YAAAA,MAAAA,CAAOC,MAAM,CAACH,QAAAA,EAAUC,OAAAA,CAAQG,KAAK,CAAA;AACvC,QAAA;QACAF,MAAAA,CAAOC,MAAM,CAACH,QAAAA,EAAUT,OAAAA,EAASa,KAAAA,CAAAA;QACjC,OAAOJ,QAAAA;IACT,CAAA,EAAG;AAACZ,QAAAA,QAAAA;AAAUG,QAAAA;AAAQ,KAAA,CAAA;IAEtB,OAAO;QACLD,KAAAA,EAAO;AACL,YAAA,GAAGe,YAAY;AACf,YAAA,GAAGR;AACL,SAAA;QACAN,OAAAA,EAAS;AACP,YAAA,GAAGR,cAAc;AACjB,YAAA,GAAGQ;AACL,SAAA;AACAJ,QAAAA,gBAAAA;AACAW,QAAAA;AACF,KAAA;AACF;AAEO,SAASL,eACdH,KAAkC,EAAA;IAElC,OAAOgB,KAAAA,CAAMC,OAAO,CAACjB,KAAAA,CAAAA;AACvB;AAEO,MAAMkB,mBAAAA,GAAsBC,aAAAA,CAA4Bb,SAAAA;AACxD,MAAMc,eAAAA,GAAkB,IAAMC,UAAAA,CAAWH,mBAAAA;;;;"}
1
+ {"version":3,"file":"PresentationConfig.mjs","sources":["../../../../../../../../web/src/ui/components/PresentationConfig.ts"],"sourcesContent":["import { defaultTheme } from './themes/themes';\nimport { createContext, useContext, useMemo } from 'react';\nimport { PresentationConfig } from '../../types';\nimport { Theme } from './themes/ThemeConfig';\nimport { useMediaQuery } from '../hooks/useMediaQuery';\nimport { IconRegistry } from './IconRegistry';\nimport { IconNames } from '../b2c/components/Icons';\nimport { logger, RUN_IN_DEV } from '@stytch/core';\n\nexport type PresentationOptions = {\n /**\n * When this value is false, the title and description text will not show in the SDK.\n */\n hideHeaderText: boolean;\n\n /**\n * Optional suffix for <input> id attribute so input IDs are unique.\n */\n inputIdSuffix?: string;\n\n /**\n * The configuration object for your custom logo.\n */\n logo?: {\n /**\n * The URL of your custom logo.\n */\n url: string;\n\n /**\n * Alt text for the logo. This would usually be the name of the website or your company,\n * unless this is already repeated nearby in which case this should be left empty.\n */\n alt: string;\n };\n\n /**\n * Override our icons. Currently, this only supports logos, such as those that appear in Oauth buttons.\n * This should be an object where the key is the icon name and the value is a React component\n * (not React element) with a size prop and the rest spread onto the root element.\n *\n * Note that custom logos not imported from our packages is not yet available in @stytch/vanilla-js.\n * We are looking at provide alternatives in the future.\n *\n * @example\n *\n * // Using a solid black or white icon\n * import { whiteIcons } from '@stytch/react';\n *\n * const presentation = {\n * options: {\n * icons: {\n * outlook: whiteIcons.outlook,\n * },\n * },\n * };\n *\n * // Using a custom icon\n * const presentation = {\n * icons: {\n * outlook: ({ size, ...props }) => (\n * <svg width={size} height={size} {...props}>...</svg>\n * ),\n * },\n * };\n */\n icons?: IconRegistry<string>;\n};\n\nconst defaultOptions: PresentationOptions = {\n hideHeaderText: false,\n};\n\n/**\n * Internal type -\n * @see {PresentationConfig} is the public one\n */\nexport type Presentation = {\n theme: Theme;\n options: PresentationOptions;\n\n // Internal properties\n displayWatermark: boolean;\n iconRegistry: IconRegistry<string>;\n};\n\nexport function usePresentationWithDefault(\n maybeConfig: PresentationConfig | undefined,\n displayWatermark: boolean,\n products: { id: string; icons?: Partial<IconRegistry<IconNames>> }[],\n productsName?: string,\n): Presentation {\n const { theme, options } = maybeConfig ?? {};\n\n RUN_IN_DEV(() => {\n const stringProducts = products.filter((p) => typeof p === 'string');\n if (stringProducts.length > 0) {\n logger.error(\n `Please add an import for ${productsName} and update config.products to\\n` +\n 'products: [' +\n products.map((p) => `${productsName}.${typeof p === 'string' ? p : p.id}`).join(', ') +\n ']',\n );\n\n throw new Error(\"'config.products' should not include strings anymore\");\n }\n });\n\n // Switch theme automatically depending on color scheme\n const isDynamic = isDynamicTheme(theme);\n const darkMode = useMediaQuery(isDynamic ? '(prefers-color-scheme: dark)' : undefined);\n\n let effectiveTheme: Partial<Theme> | undefined;\n if (isDynamic) {\n effectiveTheme = darkMode ? theme[1] : theme[0];\n } else {\n effectiveTheme = theme;\n }\n\n // Memoize the icon registry so it only need to be constructed once\n const iconRegistry = useMemo(() => {\n const registry: IconRegistry<string> = {};\n for (const product of products) {\n Object.assign(registry, product.icons);\n }\n Object.assign(registry, options?.icons);\n return registry;\n }, [products, options]);\n\n return {\n theme: {\n ...defaultTheme,\n ...effectiveTheme,\n },\n options: {\n ...defaultOptions,\n ...options,\n },\n displayWatermark,\n iconRegistry,\n };\n}\n\nexport function isDynamicTheme(\n theme: PresentationConfig['theme'],\n): theme is readonly [light: Partial<Theme>, dark: Partial<Theme>] {\n return Array.isArray(theme);\n}\n\nexport const PresentationContext = createContext<Presentation>(undefined!);\nexport const usePresentation = () => useContext(PresentationContext);\n"],"names":["defaultOptions","hideHeaderText","usePresentationWithDefault","maybeConfig","displayWatermark","products","productsName","theme","options","isDynamic","isDynamicTheme","darkMode","useMediaQuery","undefined","effectiveTheme","iconRegistry","useMemo","registry","product","Object","assign","icons","defaultTheme","Array","isArray","PresentationContext","createContext","usePresentation","useContext"],"mappings":";;;;AAqEA,MAAMA,cAAAA,GAAsC;IAC1CC,cAAAA,EAAgB;AAClB,CAAA;AAeO,SAASC,2BACdC,WAA2C,EAC3CC,gBAAyB,EACzBC,QAAoE,EACpEC,YAAqB,EAAA;AAErB,IAAA,MAAM,EAAEC,KAAK,EAAEC,OAAO,EAAE,GAAGL,eAAe,EAAC;;AAiB3C,IAAA,MAAMM,YAAYC,cAAAA,CAAeH,KAAAA,CAAAA;IACjC,MAAMI,QAAAA,GAAWC,aAAAA,CAAcH,SAAAA,GAAY,8BAAA,GAAiCI,SAAAA,CAAAA;IAE5E,IAAIC,cAAAA;AACJ,IAAA,IAAIL,SAAAA,EAAW;AACbK,QAAAA,cAAAA,GAAiBH,WAAWJ,KAAK,CAAC,EAAE,GAAGA,KAAK,CAAC,CAAA,CAAE;KACjD,MAAO;QACLO,cAAAA,GAAiBP,KAAAA;AACnB,IAAA;;AAGA,IAAA,MAAMQ,eAAeC,OAAAA,CAAQ,IAAA;AAC3B,QAAA,MAAMC,WAAiC,EAAC;QACxC,KAAK,MAAMC,WAAWb,QAAAA,CAAU;AAC9Bc,YAAAA,MAAAA,CAAOC,MAAM,CAACH,QAAAA,EAAUC,OAAAA,CAAQG,KAAK,CAAA;AACvC,QAAA;QACAF,MAAAA,CAAOC,MAAM,CAACH,QAAAA,EAAUT,OAAAA,EAASa,KAAAA,CAAAA;QACjC,OAAOJ,QAAAA;KACT,EAAG;AAACZ,QAAAA,QAAAA;AAAUG,QAAAA;AAAQ,KAAA,CAAA;IAEtB,OAAO;QACLD,KAAAA,EAAO;AACL,YAAA,GAAGe,YAAY;AACf,YAAA,GAAGR;AACL,SAAA;QACAN,OAAAA,EAAS;AACP,YAAA,GAAGR,cAAc;AACjB,YAAA,GAAGQ;AACL,SAAA;AACAJ,QAAAA,gBAAAA;AACAW,QAAAA;AACF,KAAA;AACF;AAEO,SAASL,eACdH,KAAkC,EAAA;IAElC,OAAOgB,KAAAA,CAAMC,OAAO,CAACjB,KAAAA,CAAAA;AACvB;MAEakB,mBAAAA,GAAsBC,aAAAA,CAA4Bb,SAAAA;MAClDc,eAAAA,GAAkB,IAAMC,UAAAA,CAAWH,mBAAAA;;;;"}
@@ -1,8 +1,8 @@
1
1
  import { collectCss } from '../../../../../../internal/style-injector/src/index.mjs';
2
2
 
3
- var css = ".Typography_module_typography__d307cb57{font-family:var(--st-font-family)}.Typography_module_header__d307cb57{color:var(--st-foreground);font-size:var(--st-text-2xl);font-weight:var(--st-font-weight-semibold);line-height:var(--st-line-height-2xl)}.Typography_module_body__d307cb57{color:var(--st-foreground);font-size:var(--st-text-base)}.Typography_module_body__d307cb57,.Typography_module_helper__d307cb57{font-weight:var(--st-font-weight-normal);line-height:var(--st-line-height-base)}.Typography_module_helper__d307cb57{color:var(--st-muted-foreground);font-size:var(--st-text-xs)}.Typography_module_start__d307cb57{text-align:start}.Typography_module_center__d307cb57{text-align:center}.Typography_module_end__d307cb57{text-align:end}.Typography_module_foreground__d307cb57{color:var(--st-foreground)}.Typography_module_muted__d307cb57{color:var(--st-muted-foreground)}.Typography_module_destructive__d307cb57{color:var(--st-destructive)}.Typography_module_warning__d307cb57{color:var(--st-warning)}.Typography_module_success__d307cb57{color:var(--st-success)}.Typography_module_regular__d307cb57{font-weight:var(--st-font-weight-normal)}.Typography_module_medium__d307cb57{font-weight:var(--st-font-weight-medium)}.Typography_module_semibold__d307cb57{font-weight:var(--st-font-weight-semibold)}.Typography_module_bold__d307cb57{font-weight:var(--st-font-weight-bold)}.Typography_module_defaultFont__d307cb57{font-family:var(--st-font-family)}.Typography_module_monoFont__d307cb57{font-family:var(--st-font-family-mono)}";
3
+ var css = ".Typography_module_typography__74817c74{font-family:var(--st-font-family)}.Typography_module_header__74817c74{color:var(--st-foreground);font-family:var(--st-header-font);font-size:var(--st-text-2xl);font-weight:var(--st-font-weight-semibold);line-height:var(--st-line-height-2xl)}.Typography_module_body__74817c74{color:var(--st-foreground);font-size:var(--st-text-base)}.Typography_module_body__74817c74,.Typography_module_helper__74817c74{font-weight:var(--st-font-weight-normal);line-height:var(--st-line-height-base)}.Typography_module_helper__74817c74{color:var(--st-muted-foreground);font-size:var(--st-text-xs)}.Typography_module_start__74817c74{text-align:start}.Typography_module_center__74817c74{text-align:center}.Typography_module_end__74817c74{text-align:end}.Typography_module_foreground__74817c74{color:var(--st-foreground)}.Typography_module_muted__74817c74{color:var(--st-muted-foreground)}.Typography_module_destructive__74817c74{color:var(--st-destructive)}.Typography_module_warning__74817c74{color:var(--st-warning)}.Typography_module_success__74817c74{color:var(--st-success)}.Typography_module_regular__74817c74{font-weight:var(--st-font-weight-normal)}.Typography_module_medium__74817c74{font-weight:var(--st-font-weight-medium)}.Typography_module_semibold__74817c74{font-weight:var(--st-font-weight-semibold)}.Typography_module_bold__74817c74{font-weight:var(--st-font-weight-bold)}.Typography_module_defaultFont__74817c74{font-family:var(--st-font-family)}.Typography_module_monoFont__74817c74{font-family:var(--st-font-family-mono)}";
4
4
  collectCss(css);
5
- var modules_1d7499fc = {"typography":"Typography_module_typography__d307cb57","header":"Typography_module_header__d307cb57","body":"Typography_module_body__d307cb57","helper":"Typography_module_helper__d307cb57","start":"Typography_module_start__d307cb57","center":"Typography_module_center__d307cb57","end":"Typography_module_end__d307cb57","foreground":"Typography_module_foreground__d307cb57","muted":"Typography_module_muted__d307cb57","destructive":"Typography_module_destructive__d307cb57","warning":"Typography_module_warning__d307cb57","success":"Typography_module_success__d307cb57","regular":"Typography_module_regular__d307cb57","medium":"Typography_module_medium__d307cb57","semibold":"Typography_module_semibold__d307cb57","bold":"Typography_module_bold__d307cb57","defaultFont":"Typography_module_defaultFont__d307cb57","monoFont":"Typography_module_monoFont__d307cb57"};
5
+ var modules_1d7499fc = {"typography":"Typography_module_typography__74817c74","header":"Typography_module_header__74817c74","body":"Typography_module_body__74817c74","helper":"Typography_module_helper__74817c74","start":"Typography_module_start__74817c74","center":"Typography_module_center__74817c74","end":"Typography_module_end__74817c74","foreground":"Typography_module_foreground__74817c74","muted":"Typography_module_muted__74817c74","destructive":"Typography_module_destructive__74817c74","warning":"Typography_module_warning__74817c74","success":"Typography_module_success__74817c74","regular":"Typography_module_regular__74817c74","medium":"Typography_module_medium__74817c74","semibold":"Typography_module_semibold__74817c74","bold":"Typography_module_bold__74817c74","defaultFont":"Typography_module_defaultFont__74817c74","monoFont":"Typography_module_monoFont__74817c74"};
6
6
 
7
7
  export { css, modules_1d7499fc as default };
8
8
  //# sourceMappingURL=Typography.module.css.mjs.map