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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (580) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/cjs/StytchSSRProxy-Bz6LNYdq.js.map +1 -1
  3. package/dist/cjs/adminPortal/index.cjs +1 -1
  4. package/dist/cjs/b2b/index.cjs +14 -13
  5. package/dist/cjs/b2b/index.cjs.map +1 -1
  6. package/dist/cjs/compat.cjs +3647 -0
  7. package/dist/cjs/compat.cjs.map +1 -0
  8. package/dist/cjs/{index-Ni_dyEsz.js → index-BIjXBvf_.js} +2 -2
  9. package/dist/cjs/index-BIjXBvf_.js.map +1 -0
  10. package/dist/cjs/index.cjs +521 -520
  11. package/dist/cjs/index.cjs.map +1 -1
  12. package/dist/cjs/{shadcn-B8TEzQMT.js → shadcn-Z4AvHriT.js} +247 -233
  13. package/dist/cjs/shadcn-Z4AvHriT.js.map +1 -0
  14. package/dist/cjs-dev/StytchSSRProxy-d553KgcY.js +438 -0
  15. package/dist/cjs-dev/StytchSSRProxy-d553KgcY.js.map +1 -0
  16. package/dist/cjs-dev/adminPortal/index.cjs +54 -53
  17. package/dist/cjs-dev/adminPortal/index.cjs.map +1 -1
  18. package/dist/cjs-dev/b2b/index.cjs +85 -72
  19. package/dist/cjs-dev/b2b/index.cjs.map +1 -1
  20. package/dist/cjs-dev/b2b/index.headless.cjs +94 -92
  21. package/dist/cjs-dev/b2b/index.headless.cjs.map +1 -1
  22. package/dist/cjs-dev/compat.cjs +3694 -0
  23. package/dist/cjs-dev/compat.cjs.map +1 -0
  24. package/dist/cjs-dev/{StytchSSRProxy-CxXsyme4.js → dev-DaCGDI6V.js} +60 -426
  25. package/dist/cjs-dev/dev-DaCGDI6V.js.map +1 -0
  26. package/dist/cjs-dev/{idpHelpers-Cf8Qq1B4.js → idpHelpers-DOYYSxsX.js} +60 -141
  27. package/dist/cjs-dev/idpHelpers-DOYYSxsX.js.map +1 -0
  28. package/dist/cjs-dev/{index-DdK3Jt4u.js → index-rquGmIlv.js} +4 -4
  29. package/dist/cjs-dev/index-rquGmIlv.js.map +1 -0
  30. package/dist/cjs-dev/index.cjs +828 -805
  31. package/dist/cjs-dev/index.cjs.map +1 -1
  32. package/dist/cjs-dev/index.headless.cjs +76 -74
  33. package/dist/cjs-dev/index.headless.cjs.map +1 -1
  34. package/dist/cjs-dev/logger-CvOATP4R.js +28 -0
  35. package/dist/cjs-dev/logger-CvOATP4R.js.map +1 -0
  36. package/dist/cjs-dev/{passwordManagerDisableAutofillProps-D70WyvIu.js → passwordManagerDisableAutofillProps-CgiK2M_U.js} +2 -2
  37. package/dist/cjs-dev/{passwordManagerDisableAutofillProps-D70WyvIu.js.map → passwordManagerDisableAutofillProps-CgiK2M_U.js.map} +1 -1
  38. package/dist/cjs-dev/{shadcn-C4w3DtKK.js → shadcn-DnNfms7-.js} +261 -245
  39. package/dist/cjs-dev/shadcn-DnNfms7-.js.map +1 -0
  40. package/dist/esm/b2b/StytchB2BContext.mjs +5 -5
  41. package/dist/esm/b2b/StytchB2BContext.mjs.map +1 -1
  42. package/dist/esm/compat.mjs +3 -0
  43. package/dist/esm/compat.mjs.map +1 -0
  44. package/dist/esm/node_modules/chroma-js/index.mjs +85 -0
  45. package/dist/esm/node_modules/chroma-js/index.mjs.map +1 -0
  46. package/dist/esm/node_modules/chroma-js/src/Color.mjs +53 -0
  47. package/dist/esm/node_modules/chroma-js/src/Color.mjs.map +1 -0
  48. package/dist/esm/node_modules/chroma-js/src/chroma.mjs +11 -0
  49. package/dist/esm/node_modules/chroma-js/src/chroma.mjs.map +1 -0
  50. package/dist/esm/node_modules/chroma-js/src/colors/colorbrewer.mjs +82 -0
  51. package/dist/esm/node_modules/chroma-js/src/colors/colorbrewer.mjs.map +1 -0
  52. package/dist/esm/node_modules/chroma-js/src/colors/w3cx11.mjs +165 -0
  53. package/dist/esm/node_modules/chroma-js/src/colors/w3cx11.mjs.map +1 -0
  54. package/dist/esm/node_modules/chroma-js/src/generator/average.mjs +92 -0
  55. package/dist/esm/node_modules/chroma-js/src/generator/average.mjs.map +1 -0
  56. package/dist/esm/node_modules/chroma-js/src/generator/bezier.mjs +89 -0
  57. package/dist/esm/node_modules/chroma-js/src/generator/bezier.mjs.map +1 -0
  58. package/dist/esm/node_modules/chroma-js/src/generator/blend.mjs +58 -0
  59. package/dist/esm/node_modules/chroma-js/src/generator/blend.mjs.map +1 -0
  60. package/dist/esm/node_modules/chroma-js/src/generator/cubehelix.mjs +93 -0
  61. package/dist/esm/node_modules/chroma-js/src/generator/cubehelix.mjs.map +1 -0
  62. package/dist/esm/node_modules/chroma-js/src/generator/mix.mjs +22 -0
  63. package/dist/esm/node_modules/chroma-js/src/generator/mix.mjs.map +1 -0
  64. package/dist/esm/node_modules/chroma-js/src/generator/random.mjs +16 -0
  65. package/dist/esm/node_modules/chroma-js/src/generator/random.mjs.map +1 -0
  66. package/dist/esm/node_modules/chroma-js/src/generator/scale.mjs +398 -0
  67. package/dist/esm/node_modules/chroma-js/src/generator/scale.mjs.map +1 -0
  68. package/dist/esm/node_modules/chroma-js/src/interpolator/_hsx.mjs +62 -0
  69. package/dist/esm/node_modules/chroma-js/src/interpolator/_hsx.mjs.map +1 -0
  70. package/dist/esm/node_modules/chroma-js/src/interpolator/hcg.mjs +13 -0
  71. package/dist/esm/node_modules/chroma-js/src/interpolator/hcg.mjs.map +1 -0
  72. package/dist/esm/node_modules/chroma-js/src/interpolator/hsi.mjs +13 -0
  73. package/dist/esm/node_modules/chroma-js/src/interpolator/hsi.mjs.map +1 -0
  74. package/dist/esm/node_modules/chroma-js/src/interpolator/hsl.mjs +13 -0
  75. package/dist/esm/node_modules/chroma-js/src/interpolator/hsl.mjs.map +1 -0
  76. package/dist/esm/node_modules/chroma-js/src/interpolator/hsv.mjs +13 -0
  77. package/dist/esm/node_modules/chroma-js/src/interpolator/hsv.mjs.map +1 -0
  78. package/dist/esm/node_modules/chroma-js/src/interpolator/index.mjs +4 -0
  79. package/dist/esm/node_modules/chroma-js/src/interpolator/index.mjs.map +1 -0
  80. package/dist/esm/node_modules/chroma-js/src/interpolator/lab.mjs +20 -0
  81. package/dist/esm/node_modules/chroma-js/src/interpolator/lab.mjs.map +1 -0
  82. package/dist/esm/node_modules/chroma-js/src/interpolator/lch.mjs +14 -0
  83. package/dist/esm/node_modules/chroma-js/src/interpolator/lch.mjs.map +1 -0
  84. package/dist/esm/node_modules/chroma-js/src/interpolator/lrgb.mjs +21 -0
  85. package/dist/esm/node_modules/chroma-js/src/interpolator/lrgb.mjs.map +1 -0
  86. package/dist/esm/node_modules/chroma-js/src/interpolator/num.mjs +15 -0
  87. package/dist/esm/node_modules/chroma-js/src/interpolator/num.mjs.map +1 -0
  88. package/dist/esm/node_modules/chroma-js/src/interpolator/oklab.mjs +20 -0
  89. package/dist/esm/node_modules/chroma-js/src/interpolator/oklab.mjs.map +1 -0
  90. package/dist/esm/node_modules/chroma-js/src/interpolator/oklch.mjs +13 -0
  91. package/dist/esm/node_modules/chroma-js/src/interpolator/oklch.mjs.map +1 -0
  92. package/dist/esm/node_modules/chroma-js/src/interpolator/rgb.mjs +19 -0
  93. package/dist/esm/node_modules/chroma-js/src/interpolator/rgb.mjs.map +1 -0
  94. package/dist/esm/node_modules/chroma-js/src/io/cmyk/cmyk2rgb.mjs +18 -0
  95. package/dist/esm/node_modules/chroma-js/src/io/cmyk/cmyk2rgb.mjs.map +1 -0
  96. package/dist/esm/node_modules/chroma-js/src/io/cmyk/index.mjs +29 -0
  97. package/dist/esm/node_modules/chroma-js/src/io/cmyk/index.mjs.map +1 -0
  98. package/dist/esm/node_modules/chroma-js/src/io/cmyk/rgb2cmyk.mjs +20 -0
  99. package/dist/esm/node_modules/chroma-js/src/io/cmyk/rgb2cmyk.mjs.map +1 -0
  100. package/dist/esm/node_modules/chroma-js/src/io/css/css2rgb.mjs +239 -0
  101. package/dist/esm/node_modules/chroma-js/src/io/css/css2rgb.mjs.map +1 -0
  102. package/dist/esm/node_modules/chroma-js/src/io/css/hsl2css.mjs +29 -0
  103. package/dist/esm/node_modules/chroma-js/src/io/css/hsl2css.mjs.map +1 -0
  104. package/dist/esm/node_modules/chroma-js/src/io/css/index.mjs +27 -0
  105. package/dist/esm/node_modules/chroma-js/src/io/css/index.mjs.map +1 -0
  106. package/dist/esm/node_modules/chroma-js/src/io/css/lab2css.mjs +27 -0
  107. package/dist/esm/node_modules/chroma-js/src/io/css/lab2css.mjs.map +1 -0
  108. package/dist/esm/node_modules/chroma-js/src/io/css/lch2css.mjs +27 -0
  109. package/dist/esm/node_modules/chroma-js/src/io/css/lch2css.mjs.map +1 -0
  110. package/dist/esm/node_modules/chroma-js/src/io/css/oklab2css.mjs +18 -0
  111. package/dist/esm/node_modules/chroma-js/src/io/css/oklab2css.mjs.map +1 -0
  112. package/dist/esm/node_modules/chroma-js/src/io/css/oklch2css.mjs +18 -0
  113. package/dist/esm/node_modules/chroma-js/src/io/css/oklch2css.mjs.map +1 -0
  114. package/dist/esm/node_modules/chroma-js/src/io/css/rgb2css.mjs +65 -0
  115. package/dist/esm/node_modules/chroma-js/src/io/css/rgb2css.mjs.map +1 -0
  116. package/dist/esm/node_modules/chroma-js/src/io/gl/index.mjs +24 -0
  117. package/dist/esm/node_modules/chroma-js/src/io/gl/index.mjs.map +1 -0
  118. package/dist/esm/node_modules/chroma-js/src/io/hcg/hcg2rgb.mjs +58 -0
  119. package/dist/esm/node_modules/chroma-js/src/io/hcg/hcg2rgb.mjs.map +1 -0
  120. package/dist/esm/node_modules/chroma-js/src/io/hcg/index.mjs +29 -0
  121. package/dist/esm/node_modules/chroma-js/src/io/hcg/index.mjs.map +1 -0
  122. package/dist/esm/node_modules/chroma-js/src/io/hcg/rgb2hcg.mjs +25 -0
  123. package/dist/esm/node_modules/chroma-js/src/io/hcg/rgb2hcg.mjs.map +1 -0
  124. package/dist/esm/node_modules/chroma-js/src/io/hex/hex2rgb.mjs +57 -0
  125. package/dist/esm/node_modules/chroma-js/src/io/hex/hex2rgb.mjs.map +1 -0
  126. package/dist/esm/node_modules/chroma-js/src/io/hex/index.mjs +30 -0
  127. package/dist/esm/node_modules/chroma-js/src/io/hex/index.mjs.map +1 -0
  128. package/dist/esm/node_modules/chroma-js/src/io/hex/rgb2hex.mjs +33 -0
  129. package/dist/esm/node_modules/chroma-js/src/io/hex/rgb2hex.mjs.map +1 -0
  130. package/dist/esm/node_modules/chroma-js/src/io/hsi/hsi2rgb.mjs +49 -0
  131. package/dist/esm/node_modules/chroma-js/src/io/hsi/hsi2rgb.mjs.map +1 -0
  132. package/dist/esm/node_modules/chroma-js/src/io/hsi/index.mjs +29 -0
  133. package/dist/esm/node_modules/chroma-js/src/io/hsi/index.mjs.map +1 -0
  134. package/dist/esm/node_modules/chroma-js/src/io/hsi/rgb2hsi.mjs +34 -0
  135. package/dist/esm/node_modules/chroma-js/src/io/hsi/rgb2hsi.mjs.map +1 -0
  136. package/dist/esm/node_modules/chroma-js/src/io/hsl/hsl2rgb.mjs +37 -0
  137. package/dist/esm/node_modules/chroma-js/src/io/hsl/hsl2rgb.mjs.map +1 -0
  138. package/dist/esm/node_modules/chroma-js/src/io/hsl/index.mjs +29 -0
  139. package/dist/esm/node_modules/chroma-js/src/io/hsl/index.mjs.map +1 -0
  140. package/dist/esm/node_modules/chroma-js/src/io/hsl/rgb2hsl.mjs +47 -0
  141. package/dist/esm/node_modules/chroma-js/src/io/hsl/rgb2hsl.mjs.map +1 -0
  142. package/dist/esm/node_modules/chroma-js/src/io/hsv/hsv2rgb.mjs +50 -0
  143. package/dist/esm/node_modules/chroma-js/src/io/hsv/hsv2rgb.mjs.map +1 -0
  144. package/dist/esm/node_modules/chroma-js/src/io/hsv/index.mjs +29 -0
  145. package/dist/esm/node_modules/chroma-js/src/io/hsv/index.mjs.map +1 -0
  146. package/dist/esm/node_modules/chroma-js/src/io/hsv/rgb2hsv.mjs +35 -0
  147. package/dist/esm/node_modules/chroma-js/src/io/hsv/rgb2hsv.mjs.map +1 -0
  148. package/dist/esm/node_modules/chroma-js/src/io/input.mjs +7 -0
  149. package/dist/esm/node_modules/chroma-js/src/io/input.mjs.map +1 -0
  150. package/dist/esm/node_modules/chroma-js/src/io/lab/index.mjs +30 -0
  151. package/dist/esm/node_modules/chroma-js/src/io/lab/index.mjs.map +1 -0
  152. package/dist/esm/node_modules/chroma-js/src/io/lab/lab-constants.mjs +116 -0
  153. package/dist/esm/node_modules/chroma-js/src/io/lab/lab-constants.mjs.map +1 -0
  154. package/dist/esm/node_modules/chroma-js/src/io/lab/lab2rgb.mjs +102 -0
  155. package/dist/esm/node_modules/chroma-js/src/io/lab/lab2rgb.mjs.map +1 -0
  156. package/dist/esm/node_modules/chroma-js/src/io/lab/rgb2lab.mjs +68 -0
  157. package/dist/esm/node_modules/chroma-js/src/io/lab/rgb2lab.mjs.map +1 -0
  158. package/dist/esm/node_modules/chroma-js/src/io/lch/hcl2rgb.mjs +11 -0
  159. package/dist/esm/node_modules/chroma-js/src/io/lch/hcl2rgb.mjs.map +1 -0
  160. package/dist/esm/node_modules/chroma-js/src/io/lch/index.mjs +38 -0
  161. package/dist/esm/node_modules/chroma-js/src/io/lch/index.mjs.map +1 -0
  162. package/dist/esm/node_modules/chroma-js/src/io/lch/lab2lch.mjs +15 -0
  163. package/dist/esm/node_modules/chroma-js/src/io/lch/lab2lch.mjs.map +1 -0
  164. package/dist/esm/node_modules/chroma-js/src/io/lch/lch2lab.mjs +21 -0
  165. package/dist/esm/node_modules/chroma-js/src/io/lch/lch2lab.mjs.map +1 -0
  166. package/dist/esm/node_modules/chroma-js/src/io/lch/lch2rgb.mjs +15 -0
  167. package/dist/esm/node_modules/chroma-js/src/io/lch/lch2rgb.mjs.map +1 -0
  168. package/dist/esm/node_modules/chroma-js/src/io/lch/rgb2lch.mjs +14 -0
  169. package/dist/esm/node_modules/chroma-js/src/io/lch/rgb2lch.mjs.map +1 -0
  170. package/dist/esm/node_modules/chroma-js/src/io/named/index.mjs +30 -0
  171. package/dist/esm/node_modules/chroma-js/src/io/named/index.mjs.map +1 -0
  172. package/dist/esm/node_modules/chroma-js/src/io/num/index.mjs +33 -0
  173. package/dist/esm/node_modules/chroma-js/src/io/num/index.mjs.map +1 -0
  174. package/dist/esm/node_modules/chroma-js/src/io/num/num2rgb.mjs +14 -0
  175. package/dist/esm/node_modules/chroma-js/src/io/num/num2rgb.mjs.map +1 -0
  176. package/dist/esm/node_modules/chroma-js/src/io/num/rgb2num.mjs +10 -0
  177. package/dist/esm/node_modules/chroma-js/src/io/num/rgb2num.mjs.map +1 -0
  178. package/dist/esm/node_modules/chroma-js/src/io/oklab/index.mjs +29 -0
  179. package/dist/esm/node_modules/chroma-js/src/io/oklab/index.mjs.map +1 -0
  180. package/dist/esm/node_modules/chroma-js/src/io/oklab/oklab2rgb.mjs +36 -0
  181. package/dist/esm/node_modules/chroma-js/src/io/oklab/oklab2rgb.mjs.map +1 -0
  182. package/dist/esm/node_modules/chroma-js/src/io/oklab/rgb2oklab.mjs +39 -0
  183. package/dist/esm/node_modules/chroma-js/src/io/oklab/rgb2oklab.mjs.map +1 -0
  184. package/dist/esm/node_modules/chroma-js/src/io/oklch/index.mjs +29 -0
  185. package/dist/esm/node_modules/chroma-js/src/io/oklch/index.mjs.map +1 -0
  186. package/dist/esm/node_modules/chroma-js/src/io/oklch/oklch2rgb.mjs +15 -0
  187. package/dist/esm/node_modules/chroma-js/src/io/oklch/oklch2rgb.mjs.map +1 -0
  188. package/dist/esm/node_modules/chroma-js/src/io/oklch/rgb2oklch.mjs +14 -0
  189. package/dist/esm/node_modules/chroma-js/src/io/oklch/rgb2oklch.mjs.map +1 -0
  190. package/dist/esm/node_modules/chroma-js/src/io/rgb/index.mjs +47 -0
  191. package/dist/esm/node_modules/chroma-js/src/io/rgb/index.mjs.map +1 -0
  192. package/dist/esm/node_modules/chroma-js/src/io/temp/index.mjs +23 -0
  193. package/dist/esm/node_modules/chroma-js/src/io/temp/index.mjs.map +1 -0
  194. package/dist/esm/node_modules/chroma-js/src/io/temp/rgb2temperature.mjs +33 -0
  195. package/dist/esm/node_modules/chroma-js/src/io/temp/rgb2temperature.mjs.map +1 -0
  196. package/dist/esm/node_modules/chroma-js/src/io/temp/temperature2rgb.mjs +40 -0
  197. package/dist/esm/node_modules/chroma-js/src/io/temp/temperature2rgb.mjs.map +1 -0
  198. package/dist/esm/node_modules/chroma-js/src/ops/alpha.mjs +14 -0
  199. package/dist/esm/node_modules/chroma-js/src/ops/alpha.mjs.map +1 -0
  200. package/dist/esm/node_modules/chroma-js/src/ops/clipped.mjs +6 -0
  201. package/dist/esm/node_modules/chroma-js/src/ops/clipped.mjs.map +1 -0
  202. package/dist/esm/node_modules/chroma-js/src/ops/darken.mjs +18 -0
  203. package/dist/esm/node_modules/chroma-js/src/ops/darken.mjs.map +1 -0
  204. package/dist/esm/node_modules/chroma-js/src/ops/get.mjs +14 -0
  205. package/dist/esm/node_modules/chroma-js/src/ops/get.mjs.map +1 -0
  206. package/dist/esm/node_modules/chroma-js/src/ops/luminance.mjs +56 -0
  207. package/dist/esm/node_modules/chroma-js/src/ops/luminance.mjs.map +1 -0
  208. package/dist/esm/node_modules/chroma-js/src/ops/mix.mjs +11 -0
  209. package/dist/esm/node_modules/chroma-js/src/ops/mix.mjs.map +1 -0
  210. package/dist/esm/node_modules/chroma-js/src/ops/premultiply.mjs +13 -0
  211. package/dist/esm/node_modules/chroma-js/src/ops/premultiply.mjs.map +1 -0
  212. package/dist/esm/node_modules/chroma-js/src/ops/saturate.mjs +16 -0
  213. package/dist/esm/node_modules/chroma-js/src/ops/saturate.mjs.map +1 -0
  214. package/dist/esm/node_modules/chroma-js/src/ops/set.mjs +44 -0
  215. package/dist/esm/node_modules/chroma-js/src/ops/set.mjs.map +1 -0
  216. package/dist/esm/node_modules/chroma-js/src/ops/shade.mjs +12 -0
  217. package/dist/esm/node_modules/chroma-js/src/ops/shade.mjs.map +1 -0
  218. package/dist/esm/node_modules/chroma-js/src/utils/analyze.mjs +194 -0
  219. package/dist/esm/node_modules/chroma-js/src/utils/analyze.mjs.map +1 -0
  220. package/dist/esm/node_modules/chroma-js/src/utils/clip_rgb.mjs +18 -0
  221. package/dist/esm/node_modules/chroma-js/src/utils/clip_rgb.mjs.map +1 -0
  222. package/dist/esm/node_modules/chroma-js/src/utils/contrast.mjs +15 -0
  223. package/dist/esm/node_modules/chroma-js/src/utils/contrast.mjs.map +1 -0
  224. package/dist/esm/node_modules/chroma-js/src/utils/contrastAPCA.mjs +71 -0
  225. package/dist/esm/node_modules/chroma-js/src/utils/contrastAPCA.mjs.map +1 -0
  226. package/dist/esm/node_modules/chroma-js/src/utils/delta-e.mjs +66 -0
  227. package/dist/esm/node_modules/chroma-js/src/utils/delta-e.mjs.map +1 -0
  228. package/dist/esm/node_modules/chroma-js/src/utils/distance.mjs +20 -0
  229. package/dist/esm/node_modules/chroma-js/src/utils/distance.mjs.map +1 -0
  230. package/dist/esm/node_modules/chroma-js/src/utils/index.mjs +24 -0
  231. package/dist/esm/node_modules/chroma-js/src/utils/index.mjs.map +1 -0
  232. package/dist/esm/node_modules/chroma-js/src/utils/last.mjs +11 -0
  233. package/dist/esm/node_modules/chroma-js/src/utils/last.mjs.map +1 -0
  234. package/dist/esm/node_modules/chroma-js/src/utils/limit.mjs +8 -0
  235. package/dist/esm/node_modules/chroma-js/src/utils/limit.mjs.map +1 -0
  236. package/dist/esm/node_modules/chroma-js/src/utils/multiply-matrices.mjs +39 -0
  237. package/dist/esm/node_modules/chroma-js/src/utils/multiply-matrices.mjs.map +1 -0
  238. package/dist/esm/node_modules/chroma-js/src/utils/scales.mjs +19 -0
  239. package/dist/esm/node_modules/chroma-js/src/utils/scales.mjs.map +1 -0
  240. package/dist/esm/node_modules/chroma-js/src/utils/type.mjs +21 -0
  241. package/dist/esm/node_modules/chroma-js/src/utils/type.mjs.map +1 -0
  242. package/dist/esm/node_modules/chroma-js/src/utils/unpack.mjs +20 -0
  243. package/dist/esm/node_modules/chroma-js/src/utils/unpack.mjs.map +1 -0
  244. package/dist/esm/node_modules/chroma-js/src/utils/valid.mjs +14 -0
  245. package/dist/esm/node_modules/chroma-js/src/utils/valid.mjs.map +1 -0
  246. package/dist/esm/node_modules/chroma-js/src/version.mjs +5 -0
  247. package/dist/esm/node_modules/chroma-js/src/version.mjs.map +1 -0
  248. package/dist/esm/packages/core/src/public/b2b/ui.mjs.map +1 -1
  249. package/dist/esm/packages/web/src/ui/b2b/App.mjs +2 -2
  250. package/dist/esm/packages/web/src/ui/b2b/App.mjs.map +1 -1
  251. package/dist/esm/packages/web/src/ui/b2b/components/Icons.mjs +3 -1
  252. package/dist/esm/packages/web/src/ui/b2b/components/Icons.mjs.map +1 -1
  253. package/dist/esm/packages/web/src/ui/b2c/AppContainer.mjs +1 -1
  254. package/dist/esm/packages/web/src/ui/b2c/AppContainer.mjs.map +1 -1
  255. package/dist/esm/packages/web/src/ui/b2c/IDPContainer.mjs +1 -1
  256. package/dist/esm/packages/web/src/ui/b2c/IDPContainer.mjs.map +1 -1
  257. package/dist/esm/packages/web/src/ui/b2c/PasskeyRegistrationContainer.mjs +1 -1
  258. package/dist/esm/packages/web/src/ui/b2c/PasskeyRegistrationContainer.mjs.map +1 -1
  259. package/dist/esm/packages/web/src/ui/b2c/ResetPasswordContainer.mjs +1 -1
  260. package/dist/esm/packages/web/src/ui/b2c/ResetPasswordContainer.mjs.map +1 -1
  261. package/dist/esm/packages/web/src/ui/b2c/screens/Crypto/SetupNewWallet.mjs +12 -11
  262. package/dist/esm/packages/web/src/ui/b2c/screens/Crypto/SetupNewWallet.mjs.map +1 -1
  263. package/dist/esm/packages/web/src/ui/b2c/screens/Crypto/WalletButtons.mjs +12 -14
  264. package/dist/esm/packages/web/src/ui/b2c/screens/Crypto/WalletButtons.mjs.map +1 -1
  265. package/dist/esm/packages/web/src/ui/b2c/screens/Secondary/PasswordlessAuthenticate.mjs +6 -2
  266. package/dist/esm/packages/web/src/ui/b2c/screens/Secondary/PasswordlessAuthenticate.mjs.map +1 -1
  267. package/dist/esm/packages/web/src/ui/b2c/screens/Secondary/usePasswordlessAuthenticate.mjs +10 -0
  268. package/dist/esm/packages/web/src/ui/b2c/screens/Secondary/usePasswordlessAuthenticate.mjs.map +1 -1
  269. package/dist/esm/packages/web/src/ui/compat/generateColorFallback.mjs +63 -0
  270. package/dist/esm/packages/web/src/ui/compat/generateColorFallback.mjs.map +1 -0
  271. package/dist/esm/packages/web/src/ui/compat/styleToTheme.mjs +119 -0
  272. package/dist/esm/packages/web/src/ui/compat/styleToTheme.mjs.map +1 -0
  273. package/dist/esm/packages/web/src/ui/components/PresentationConfig.mjs.map +1 -1
  274. package/dist/esm/packages/web/src/ui/components/atoms/Typography.module.css.mjs +2 -2
  275. package/dist/esm/packages/web/src/ui/react/b2b/B2BIdentityProvider.mjs +1 -1
  276. package/dist/esm/packages/web/src/ui/react/b2b/B2BIdentityProvider.mjs.map +1 -1
  277. package/dist/esm/packages/web/src/ui/react/b2b/Stytch.mjs +1 -1
  278. package/dist/esm/packages/web/src/ui/react/b2b/Stytch.mjs.map +1 -1
  279. package/dist/esm/packages/web/src/ui/react/b2b/StytchB2BContext.mjs +1 -1
  280. package/dist/esm/packages/web/src/ui/react/b2b/StytchB2BContext.mjs.map +1 -1
  281. package/dist/esm/packages/web/src/ui/react/b2c/IdentityProvider.mjs +1 -1
  282. package/dist/esm/packages/web/src/ui/react/b2c/IdentityProvider.mjs.map +1 -1
  283. package/dist/esm/packages/web/src/ui/react/b2c/StytchContext.mjs +1 -1
  284. package/dist/esm/packages/web/src/ui/react/b2c/StytchContext.mjs.map +1 -1
  285. package/dist/esm/packages/web/src/ui/react/b2c/StytchLogin.mjs +1 -1
  286. package/dist/esm/packages/web/src/ui/react/b2c/StytchLogin.mjs.map +1 -1
  287. package/dist/esm/packages/web/src/ui/react/b2c/StytchPasskeyRegistration.mjs +1 -1
  288. package/dist/esm/packages/web/src/ui/react/b2c/StytchPasskeyRegistration.mjs.map +1 -1
  289. package/dist/esm/packages/web/src/ui/react/b2c/StytchPasswordReset.mjs +1 -1
  290. package/dist/esm/packages/web/src/ui/react/b2c/StytchPasswordReset.mjs.map +1 -1
  291. package/dist/esm/packages/web/src/ui/react/utils/errors.mjs.map +1 -1
  292. package/dist/esm/packages/web/src/utils/crypto.mjs +15 -14
  293. package/dist/esm/packages/web/src/utils/crypto.mjs.map +1 -1
  294. package/dist/esm/packages/web/src/utils/oauthProviderType.mjs +1 -1
  295. package/dist/esm/packages/web/src/utils/oauthProviderType.mjs.map +1 -1
  296. package/dist/esm-dev/_virtual/index3.mjs +5 -3
  297. package/dist/esm-dev/_virtual/index3.mjs.map +1 -1
  298. package/dist/esm-dev/_virtual/index4.mjs +3 -5
  299. package/dist/esm-dev/_virtual/index4.mjs.map +1 -1
  300. package/dist/esm-dev/b2b/StytchB2BContext.mjs +5 -5
  301. package/dist/esm-dev/b2b/StytchB2BContext.mjs.map +1 -1
  302. package/dist/esm-dev/compat.mjs +3 -0
  303. package/dist/esm-dev/compat.mjs.map +1 -0
  304. package/dist/esm-dev/node_modules/chroma-js/index.mjs +85 -0
  305. package/dist/esm-dev/node_modules/chroma-js/index.mjs.map +1 -0
  306. package/dist/esm-dev/node_modules/chroma-js/src/Color.mjs +53 -0
  307. package/dist/esm-dev/node_modules/chroma-js/src/Color.mjs.map +1 -0
  308. package/dist/esm-dev/node_modules/chroma-js/src/chroma.mjs +11 -0
  309. package/dist/esm-dev/node_modules/chroma-js/src/chroma.mjs.map +1 -0
  310. package/dist/esm-dev/node_modules/chroma-js/src/colors/colorbrewer.mjs +82 -0
  311. package/dist/esm-dev/node_modules/chroma-js/src/colors/colorbrewer.mjs.map +1 -0
  312. package/dist/esm-dev/node_modules/chroma-js/src/colors/w3cx11.mjs +165 -0
  313. package/dist/esm-dev/node_modules/chroma-js/src/colors/w3cx11.mjs.map +1 -0
  314. package/dist/esm-dev/node_modules/chroma-js/src/generator/average.mjs +92 -0
  315. package/dist/esm-dev/node_modules/chroma-js/src/generator/average.mjs.map +1 -0
  316. package/dist/esm-dev/node_modules/chroma-js/src/generator/bezier.mjs +89 -0
  317. package/dist/esm-dev/node_modules/chroma-js/src/generator/bezier.mjs.map +1 -0
  318. package/dist/esm-dev/node_modules/chroma-js/src/generator/blend.mjs +58 -0
  319. package/dist/esm-dev/node_modules/chroma-js/src/generator/blend.mjs.map +1 -0
  320. package/dist/esm-dev/node_modules/chroma-js/src/generator/cubehelix.mjs +93 -0
  321. package/dist/esm-dev/node_modules/chroma-js/src/generator/cubehelix.mjs.map +1 -0
  322. package/dist/esm-dev/node_modules/chroma-js/src/generator/mix.mjs +22 -0
  323. package/dist/esm-dev/node_modules/chroma-js/src/generator/mix.mjs.map +1 -0
  324. package/dist/esm-dev/node_modules/chroma-js/src/generator/random.mjs +16 -0
  325. package/dist/esm-dev/node_modules/chroma-js/src/generator/random.mjs.map +1 -0
  326. package/dist/esm-dev/node_modules/chroma-js/src/generator/scale.mjs +398 -0
  327. package/dist/esm-dev/node_modules/chroma-js/src/generator/scale.mjs.map +1 -0
  328. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/_hsx.mjs +62 -0
  329. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/_hsx.mjs.map +1 -0
  330. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/hcg.mjs +13 -0
  331. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/hcg.mjs.map +1 -0
  332. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/hsi.mjs +13 -0
  333. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/hsi.mjs.map +1 -0
  334. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/hsl.mjs +13 -0
  335. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/hsl.mjs.map +1 -0
  336. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/hsv.mjs +13 -0
  337. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/hsv.mjs.map +1 -0
  338. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/index.mjs +4 -0
  339. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/index.mjs.map +1 -0
  340. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/lab.mjs +20 -0
  341. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/lab.mjs.map +1 -0
  342. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/lch.mjs +14 -0
  343. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/lch.mjs.map +1 -0
  344. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/lrgb.mjs +21 -0
  345. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/lrgb.mjs.map +1 -0
  346. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/num.mjs +15 -0
  347. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/num.mjs.map +1 -0
  348. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/oklab.mjs +20 -0
  349. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/oklab.mjs.map +1 -0
  350. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/oklch.mjs +13 -0
  351. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/oklch.mjs.map +1 -0
  352. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/rgb.mjs +19 -0
  353. package/dist/esm-dev/node_modules/chroma-js/src/interpolator/rgb.mjs.map +1 -0
  354. package/dist/esm-dev/node_modules/chroma-js/src/io/cmyk/cmyk2rgb.mjs +18 -0
  355. package/dist/esm-dev/node_modules/chroma-js/src/io/cmyk/cmyk2rgb.mjs.map +1 -0
  356. package/dist/esm-dev/node_modules/chroma-js/src/io/cmyk/index.mjs +29 -0
  357. package/dist/esm-dev/node_modules/chroma-js/src/io/cmyk/index.mjs.map +1 -0
  358. package/dist/esm-dev/node_modules/chroma-js/src/io/cmyk/rgb2cmyk.mjs +20 -0
  359. package/dist/esm-dev/node_modules/chroma-js/src/io/cmyk/rgb2cmyk.mjs.map +1 -0
  360. package/dist/esm-dev/node_modules/chroma-js/src/io/css/css2rgb.mjs +239 -0
  361. package/dist/esm-dev/node_modules/chroma-js/src/io/css/css2rgb.mjs.map +1 -0
  362. package/dist/esm-dev/node_modules/chroma-js/src/io/css/hsl2css.mjs +29 -0
  363. package/dist/esm-dev/node_modules/chroma-js/src/io/css/hsl2css.mjs.map +1 -0
  364. package/dist/esm-dev/node_modules/chroma-js/src/io/css/index.mjs +27 -0
  365. package/dist/esm-dev/node_modules/chroma-js/src/io/css/index.mjs.map +1 -0
  366. package/dist/esm-dev/node_modules/chroma-js/src/io/css/lab2css.mjs +27 -0
  367. package/dist/esm-dev/node_modules/chroma-js/src/io/css/lab2css.mjs.map +1 -0
  368. package/dist/esm-dev/node_modules/chroma-js/src/io/css/lch2css.mjs +27 -0
  369. package/dist/esm-dev/node_modules/chroma-js/src/io/css/lch2css.mjs.map +1 -0
  370. package/dist/esm-dev/node_modules/chroma-js/src/io/css/oklab2css.mjs +18 -0
  371. package/dist/esm-dev/node_modules/chroma-js/src/io/css/oklab2css.mjs.map +1 -0
  372. package/dist/esm-dev/node_modules/chroma-js/src/io/css/oklch2css.mjs +18 -0
  373. package/dist/esm-dev/node_modules/chroma-js/src/io/css/oklch2css.mjs.map +1 -0
  374. package/dist/esm-dev/node_modules/chroma-js/src/io/css/rgb2css.mjs +65 -0
  375. package/dist/esm-dev/node_modules/chroma-js/src/io/css/rgb2css.mjs.map +1 -0
  376. package/dist/esm-dev/node_modules/chroma-js/src/io/gl/index.mjs +24 -0
  377. package/dist/esm-dev/node_modules/chroma-js/src/io/gl/index.mjs.map +1 -0
  378. package/dist/esm-dev/node_modules/chroma-js/src/io/hcg/hcg2rgb.mjs +58 -0
  379. package/dist/esm-dev/node_modules/chroma-js/src/io/hcg/hcg2rgb.mjs.map +1 -0
  380. package/dist/esm-dev/node_modules/chroma-js/src/io/hcg/index.mjs +29 -0
  381. package/dist/esm-dev/node_modules/chroma-js/src/io/hcg/index.mjs.map +1 -0
  382. package/dist/esm-dev/node_modules/chroma-js/src/io/hcg/rgb2hcg.mjs +25 -0
  383. package/dist/esm-dev/node_modules/chroma-js/src/io/hcg/rgb2hcg.mjs.map +1 -0
  384. package/dist/esm-dev/node_modules/chroma-js/src/io/hex/hex2rgb.mjs +57 -0
  385. package/dist/esm-dev/node_modules/chroma-js/src/io/hex/hex2rgb.mjs.map +1 -0
  386. package/dist/esm-dev/node_modules/chroma-js/src/io/hex/index.mjs +30 -0
  387. package/dist/esm-dev/node_modules/chroma-js/src/io/hex/index.mjs.map +1 -0
  388. package/dist/esm-dev/node_modules/chroma-js/src/io/hex/rgb2hex.mjs +33 -0
  389. package/dist/esm-dev/node_modules/chroma-js/src/io/hex/rgb2hex.mjs.map +1 -0
  390. package/dist/esm-dev/node_modules/chroma-js/src/io/hsi/hsi2rgb.mjs +49 -0
  391. package/dist/esm-dev/node_modules/chroma-js/src/io/hsi/hsi2rgb.mjs.map +1 -0
  392. package/dist/esm-dev/node_modules/chroma-js/src/io/hsi/index.mjs +29 -0
  393. package/dist/esm-dev/node_modules/chroma-js/src/io/hsi/index.mjs.map +1 -0
  394. package/dist/esm-dev/node_modules/chroma-js/src/io/hsi/rgb2hsi.mjs +34 -0
  395. package/dist/esm-dev/node_modules/chroma-js/src/io/hsi/rgb2hsi.mjs.map +1 -0
  396. package/dist/esm-dev/node_modules/chroma-js/src/io/hsl/hsl2rgb.mjs +37 -0
  397. package/dist/esm-dev/node_modules/chroma-js/src/io/hsl/hsl2rgb.mjs.map +1 -0
  398. package/dist/esm-dev/node_modules/chroma-js/src/io/hsl/index.mjs +29 -0
  399. package/dist/esm-dev/node_modules/chroma-js/src/io/hsl/index.mjs.map +1 -0
  400. package/dist/esm-dev/node_modules/chroma-js/src/io/hsl/rgb2hsl.mjs +47 -0
  401. package/dist/esm-dev/node_modules/chroma-js/src/io/hsl/rgb2hsl.mjs.map +1 -0
  402. package/dist/esm-dev/node_modules/chroma-js/src/io/hsv/hsv2rgb.mjs +50 -0
  403. package/dist/esm-dev/node_modules/chroma-js/src/io/hsv/hsv2rgb.mjs.map +1 -0
  404. package/dist/esm-dev/node_modules/chroma-js/src/io/hsv/index.mjs +29 -0
  405. package/dist/esm-dev/node_modules/chroma-js/src/io/hsv/index.mjs.map +1 -0
  406. package/dist/esm-dev/node_modules/chroma-js/src/io/hsv/rgb2hsv.mjs +35 -0
  407. package/dist/esm-dev/node_modules/chroma-js/src/io/hsv/rgb2hsv.mjs.map +1 -0
  408. package/dist/esm-dev/node_modules/chroma-js/src/io/input.mjs +7 -0
  409. package/dist/esm-dev/node_modules/chroma-js/src/io/input.mjs.map +1 -0
  410. package/dist/esm-dev/node_modules/chroma-js/src/io/lab/index.mjs +30 -0
  411. package/dist/esm-dev/node_modules/chroma-js/src/io/lab/index.mjs.map +1 -0
  412. package/dist/esm-dev/node_modules/chroma-js/src/io/lab/lab-constants.mjs +116 -0
  413. package/dist/esm-dev/node_modules/chroma-js/src/io/lab/lab-constants.mjs.map +1 -0
  414. package/dist/esm-dev/node_modules/chroma-js/src/io/lab/lab2rgb.mjs +102 -0
  415. package/dist/esm-dev/node_modules/chroma-js/src/io/lab/lab2rgb.mjs.map +1 -0
  416. package/dist/esm-dev/node_modules/chroma-js/src/io/lab/rgb2lab.mjs +68 -0
  417. package/dist/esm-dev/node_modules/chroma-js/src/io/lab/rgb2lab.mjs.map +1 -0
  418. package/dist/esm-dev/node_modules/chroma-js/src/io/lch/hcl2rgb.mjs +11 -0
  419. package/dist/esm-dev/node_modules/chroma-js/src/io/lch/hcl2rgb.mjs.map +1 -0
  420. package/dist/esm-dev/node_modules/chroma-js/src/io/lch/index.mjs +38 -0
  421. package/dist/esm-dev/node_modules/chroma-js/src/io/lch/index.mjs.map +1 -0
  422. package/dist/esm-dev/node_modules/chroma-js/src/io/lch/lab2lch.mjs +15 -0
  423. package/dist/esm-dev/node_modules/chroma-js/src/io/lch/lab2lch.mjs.map +1 -0
  424. package/dist/esm-dev/node_modules/chroma-js/src/io/lch/lch2lab.mjs +21 -0
  425. package/dist/esm-dev/node_modules/chroma-js/src/io/lch/lch2lab.mjs.map +1 -0
  426. package/dist/esm-dev/node_modules/chroma-js/src/io/lch/lch2rgb.mjs +15 -0
  427. package/dist/esm-dev/node_modules/chroma-js/src/io/lch/lch2rgb.mjs.map +1 -0
  428. package/dist/esm-dev/node_modules/chroma-js/src/io/lch/rgb2lch.mjs +14 -0
  429. package/dist/esm-dev/node_modules/chroma-js/src/io/lch/rgb2lch.mjs.map +1 -0
  430. package/dist/esm-dev/node_modules/chroma-js/src/io/named/index.mjs +30 -0
  431. package/dist/esm-dev/node_modules/chroma-js/src/io/named/index.mjs.map +1 -0
  432. package/dist/esm-dev/node_modules/chroma-js/src/io/num/index.mjs +33 -0
  433. package/dist/esm-dev/node_modules/chroma-js/src/io/num/index.mjs.map +1 -0
  434. package/dist/esm-dev/node_modules/chroma-js/src/io/num/num2rgb.mjs +14 -0
  435. package/dist/esm-dev/node_modules/chroma-js/src/io/num/num2rgb.mjs.map +1 -0
  436. package/dist/esm-dev/node_modules/chroma-js/src/io/num/rgb2num.mjs +10 -0
  437. package/dist/esm-dev/node_modules/chroma-js/src/io/num/rgb2num.mjs.map +1 -0
  438. package/dist/esm-dev/node_modules/chroma-js/src/io/oklab/index.mjs +29 -0
  439. package/dist/esm-dev/node_modules/chroma-js/src/io/oklab/index.mjs.map +1 -0
  440. package/dist/esm-dev/node_modules/chroma-js/src/io/oklab/oklab2rgb.mjs +36 -0
  441. package/dist/esm-dev/node_modules/chroma-js/src/io/oklab/oklab2rgb.mjs.map +1 -0
  442. package/dist/esm-dev/node_modules/chroma-js/src/io/oklab/rgb2oklab.mjs +39 -0
  443. package/dist/esm-dev/node_modules/chroma-js/src/io/oklab/rgb2oklab.mjs.map +1 -0
  444. package/dist/esm-dev/node_modules/chroma-js/src/io/oklch/index.mjs +29 -0
  445. package/dist/esm-dev/node_modules/chroma-js/src/io/oklch/index.mjs.map +1 -0
  446. package/dist/esm-dev/node_modules/chroma-js/src/io/oklch/oklch2rgb.mjs +15 -0
  447. package/dist/esm-dev/node_modules/chroma-js/src/io/oklch/oklch2rgb.mjs.map +1 -0
  448. package/dist/esm-dev/node_modules/chroma-js/src/io/oklch/rgb2oklch.mjs +14 -0
  449. package/dist/esm-dev/node_modules/chroma-js/src/io/oklch/rgb2oklch.mjs.map +1 -0
  450. package/dist/esm-dev/node_modules/chroma-js/src/io/rgb/index.mjs +47 -0
  451. package/dist/esm-dev/node_modules/chroma-js/src/io/rgb/index.mjs.map +1 -0
  452. package/dist/esm-dev/node_modules/chroma-js/src/io/temp/index.mjs +23 -0
  453. package/dist/esm-dev/node_modules/chroma-js/src/io/temp/index.mjs.map +1 -0
  454. package/dist/esm-dev/node_modules/chroma-js/src/io/temp/rgb2temperature.mjs +33 -0
  455. package/dist/esm-dev/node_modules/chroma-js/src/io/temp/rgb2temperature.mjs.map +1 -0
  456. package/dist/esm-dev/node_modules/chroma-js/src/io/temp/temperature2rgb.mjs +40 -0
  457. package/dist/esm-dev/node_modules/chroma-js/src/io/temp/temperature2rgb.mjs.map +1 -0
  458. package/dist/esm-dev/node_modules/chroma-js/src/ops/alpha.mjs +14 -0
  459. package/dist/esm-dev/node_modules/chroma-js/src/ops/alpha.mjs.map +1 -0
  460. package/dist/esm-dev/node_modules/chroma-js/src/ops/clipped.mjs +6 -0
  461. package/dist/esm-dev/node_modules/chroma-js/src/ops/clipped.mjs.map +1 -0
  462. package/dist/esm-dev/node_modules/chroma-js/src/ops/darken.mjs +18 -0
  463. package/dist/esm-dev/node_modules/chroma-js/src/ops/darken.mjs.map +1 -0
  464. package/dist/esm-dev/node_modules/chroma-js/src/ops/get.mjs +14 -0
  465. package/dist/esm-dev/node_modules/chroma-js/src/ops/get.mjs.map +1 -0
  466. package/dist/esm-dev/node_modules/chroma-js/src/ops/luminance.mjs +56 -0
  467. package/dist/esm-dev/node_modules/chroma-js/src/ops/luminance.mjs.map +1 -0
  468. package/dist/esm-dev/node_modules/chroma-js/src/ops/mix.mjs +11 -0
  469. package/dist/esm-dev/node_modules/chroma-js/src/ops/mix.mjs.map +1 -0
  470. package/dist/esm-dev/node_modules/chroma-js/src/ops/premultiply.mjs +13 -0
  471. package/dist/esm-dev/node_modules/chroma-js/src/ops/premultiply.mjs.map +1 -0
  472. package/dist/esm-dev/node_modules/chroma-js/src/ops/saturate.mjs +16 -0
  473. package/dist/esm-dev/node_modules/chroma-js/src/ops/saturate.mjs.map +1 -0
  474. package/dist/esm-dev/node_modules/chroma-js/src/ops/set.mjs +44 -0
  475. package/dist/esm-dev/node_modules/chroma-js/src/ops/set.mjs.map +1 -0
  476. package/dist/esm-dev/node_modules/chroma-js/src/ops/shade.mjs +12 -0
  477. package/dist/esm-dev/node_modules/chroma-js/src/ops/shade.mjs.map +1 -0
  478. package/dist/esm-dev/node_modules/chroma-js/src/utils/analyze.mjs +194 -0
  479. package/dist/esm-dev/node_modules/chroma-js/src/utils/analyze.mjs.map +1 -0
  480. package/dist/esm-dev/node_modules/chroma-js/src/utils/clip_rgb.mjs +18 -0
  481. package/dist/esm-dev/node_modules/chroma-js/src/utils/clip_rgb.mjs.map +1 -0
  482. package/dist/esm-dev/node_modules/chroma-js/src/utils/contrast.mjs +15 -0
  483. package/dist/esm-dev/node_modules/chroma-js/src/utils/contrast.mjs.map +1 -0
  484. package/dist/esm-dev/node_modules/chroma-js/src/utils/contrastAPCA.mjs +71 -0
  485. package/dist/esm-dev/node_modules/chroma-js/src/utils/contrastAPCA.mjs.map +1 -0
  486. package/dist/esm-dev/node_modules/chroma-js/src/utils/delta-e.mjs +66 -0
  487. package/dist/esm-dev/node_modules/chroma-js/src/utils/delta-e.mjs.map +1 -0
  488. package/dist/esm-dev/node_modules/chroma-js/src/utils/distance.mjs +20 -0
  489. package/dist/esm-dev/node_modules/chroma-js/src/utils/distance.mjs.map +1 -0
  490. package/dist/esm-dev/node_modules/chroma-js/src/utils/index.mjs +24 -0
  491. package/dist/esm-dev/node_modules/chroma-js/src/utils/index.mjs.map +1 -0
  492. package/dist/esm-dev/node_modules/chroma-js/src/utils/last.mjs +11 -0
  493. package/dist/esm-dev/node_modules/chroma-js/src/utils/last.mjs.map +1 -0
  494. package/dist/esm-dev/node_modules/chroma-js/src/utils/limit.mjs +8 -0
  495. package/dist/esm-dev/node_modules/chroma-js/src/utils/limit.mjs.map +1 -0
  496. package/dist/esm-dev/node_modules/chroma-js/src/utils/multiply-matrices.mjs +39 -0
  497. package/dist/esm-dev/node_modules/chroma-js/src/utils/multiply-matrices.mjs.map +1 -0
  498. package/dist/esm-dev/node_modules/chroma-js/src/utils/scales.mjs +19 -0
  499. package/dist/esm-dev/node_modules/chroma-js/src/utils/scales.mjs.map +1 -0
  500. package/dist/esm-dev/node_modules/chroma-js/src/utils/type.mjs +21 -0
  501. package/dist/esm-dev/node_modules/chroma-js/src/utils/type.mjs.map +1 -0
  502. package/dist/esm-dev/node_modules/chroma-js/src/utils/unpack.mjs +20 -0
  503. package/dist/esm-dev/node_modules/chroma-js/src/utils/unpack.mjs.map +1 -0
  504. package/dist/esm-dev/node_modules/chroma-js/src/utils/valid.mjs +14 -0
  505. package/dist/esm-dev/node_modules/chroma-js/src/utils/valid.mjs.map +1 -0
  506. package/dist/esm-dev/node_modules/chroma-js/src/version.mjs +5 -0
  507. package/dist/esm-dev/node_modules/chroma-js/src/version.mjs.map +1 -0
  508. package/dist/esm-dev/packages/core/src/public/b2b/ui.mjs.map +1 -1
  509. package/dist/esm-dev/packages/core/src/utils/dev.mjs +7 -1
  510. package/dist/esm-dev/packages/core/src/utils/dev.mjs.map +1 -1
  511. package/dist/esm-dev/packages/web/src/adminPortal/utils/theme.mjs +1 -1
  512. package/dist/esm-dev/packages/web/src/ui/b2b/App.mjs +14 -2
  513. package/dist/esm-dev/packages/web/src/ui/b2b/App.mjs.map +1 -1
  514. package/dist/esm-dev/packages/web/src/ui/b2b/components/Icons.mjs +3 -1
  515. package/dist/esm-dev/packages/web/src/ui/b2b/components/Icons.mjs.map +1 -1
  516. package/dist/esm-dev/packages/web/src/ui/b2c/AppContainer.mjs +8 -1
  517. package/dist/esm-dev/packages/web/src/ui/b2c/AppContainer.mjs.map +1 -1
  518. package/dist/esm-dev/packages/web/src/ui/b2c/IDPContainer.mjs +8 -1
  519. package/dist/esm-dev/packages/web/src/ui/b2c/IDPContainer.mjs.map +1 -1
  520. package/dist/esm-dev/packages/web/src/ui/b2c/PasskeyRegistrationContainer.mjs +8 -1
  521. package/dist/esm-dev/packages/web/src/ui/b2c/PasskeyRegistrationContainer.mjs.map +1 -1
  522. package/dist/esm-dev/packages/web/src/ui/b2c/ResetPasswordContainer.mjs +8 -1
  523. package/dist/esm-dev/packages/web/src/ui/b2c/ResetPasswordContainer.mjs.map +1 -1
  524. package/dist/esm-dev/packages/web/src/ui/b2c/screens/Crypto/SetupNewWallet.mjs +12 -11
  525. package/dist/esm-dev/packages/web/src/ui/b2c/screens/Crypto/SetupNewWallet.mjs.map +1 -1
  526. package/dist/esm-dev/packages/web/src/ui/b2c/screens/Crypto/WalletButtons.mjs +12 -14
  527. package/dist/esm-dev/packages/web/src/ui/b2c/screens/Crypto/WalletButtons.mjs.map +1 -1
  528. package/dist/esm-dev/packages/web/src/ui/b2c/screens/Secondary/PasswordlessAuthenticate.mjs +6 -2
  529. package/dist/esm-dev/packages/web/src/ui/b2c/screens/Secondary/PasswordlessAuthenticate.mjs.map +1 -1
  530. package/dist/esm-dev/packages/web/src/ui/b2c/screens/Secondary/usePasswordlessAuthenticate.mjs +10 -0
  531. package/dist/esm-dev/packages/web/src/ui/b2c/screens/Secondary/usePasswordlessAuthenticate.mjs.map +1 -1
  532. package/dist/esm-dev/packages/web/src/ui/compat/generateColorFallback.mjs +63 -0
  533. package/dist/esm-dev/packages/web/src/ui/compat/generateColorFallback.mjs.map +1 -0
  534. package/dist/esm-dev/packages/web/src/ui/compat/styleToTheme.mjs +166 -0
  535. package/dist/esm-dev/packages/web/src/ui/compat/styleToTheme.mjs.map +1 -0
  536. package/dist/esm-dev/packages/web/src/ui/components/PresentationConfig.mjs +3 -2
  537. package/dist/esm-dev/packages/web/src/ui/components/PresentationConfig.mjs.map +1 -1
  538. package/dist/esm-dev/packages/web/src/ui/components/atoms/Typography.module.css.mjs +2 -2
  539. package/dist/esm-dev/packages/web/src/ui/react/b2b/B2BIdentityProvider.mjs +1 -1
  540. package/dist/esm-dev/packages/web/src/ui/react/b2b/B2BIdentityProvider.mjs.map +1 -1
  541. package/dist/esm-dev/packages/web/src/ui/react/b2b/Stytch.mjs +1 -1
  542. package/dist/esm-dev/packages/web/src/ui/react/b2b/Stytch.mjs.map +1 -1
  543. package/dist/esm-dev/packages/web/src/ui/react/b2b/StytchB2BContext.mjs +1 -1
  544. package/dist/esm-dev/packages/web/src/ui/react/b2b/StytchB2BContext.mjs.map +1 -1
  545. package/dist/esm-dev/packages/web/src/ui/react/b2c/IdentityProvider.mjs +1 -1
  546. package/dist/esm-dev/packages/web/src/ui/react/b2c/IdentityProvider.mjs.map +1 -1
  547. package/dist/esm-dev/packages/web/src/ui/react/b2c/StytchContext.mjs +1 -1
  548. package/dist/esm-dev/packages/web/src/ui/react/b2c/StytchContext.mjs.map +1 -1
  549. package/dist/esm-dev/packages/web/src/ui/react/b2c/StytchLogin.mjs +1 -1
  550. package/dist/esm-dev/packages/web/src/ui/react/b2c/StytchLogin.mjs.map +1 -1
  551. package/dist/esm-dev/packages/web/src/ui/react/b2c/StytchPasskeyRegistration.mjs +1 -1
  552. package/dist/esm-dev/packages/web/src/ui/react/b2c/StytchPasskeyRegistration.mjs.map +1 -1
  553. package/dist/esm-dev/packages/web/src/ui/react/b2c/StytchPasswordReset.mjs +1 -1
  554. package/dist/esm-dev/packages/web/src/ui/react/b2c/StytchPasswordReset.mjs.map +1 -1
  555. package/dist/esm-dev/packages/web/src/ui/react/utils/errors.mjs +8 -4
  556. package/dist/esm-dev/packages/web/src/ui/react/utils/errors.mjs.map +1 -1
  557. package/dist/esm-dev/packages/web/src/utils/crypto.mjs +15 -14
  558. package/dist/esm-dev/packages/web/src/utils/crypto.mjs.map +1 -1
  559. package/dist/esm-dev/packages/web/src/utils/oauthProviderType.mjs +1 -1
  560. package/dist/esm-dev/packages/web/src/utils/oauthProviderType.mjs.map +1 -1
  561. package/dist/types/PresentationConfig-CcNEXkjS.d.ts +172 -0
  562. package/dist/types/{StytchB2BClient-C_7NUKZh.d.ts → StytchB2BClient-D16e_lp1.d.ts} +2 -1
  563. package/dist/types/{StytchClient-Ccvk8Nj1.d.ts → StytchClient-BwQdJzdj.d.ts} +2 -1
  564. package/dist/types/adminPortal/index.d.ts +5 -3
  565. package/dist/types/b2b/index.d.ts +27 -16
  566. package/dist/types/b2b/index.headless.d.ts +5 -4
  567. package/dist/types/compat.d.ts +46 -0
  568. package/dist/types/createAuthUrlHandler-R1kNNQD_.d.ts +2406 -0
  569. package/dist/types/{idpHelpers-aCVwNrDk.d.ts → idpHelpers-BQP76WgZ.d.ts} +1 -1
  570. package/dist/types/index.d.ts +36 -13
  571. package/dist/types/index.headless.d.ts +5 -4
  572. package/dist/types/{shadcn-0e4fkV5Z.d.ts → shadcn-B04UXoBD.d.ts} +10 -169
  573. package/dist/types/{createAuthUrlHandler-BJRA2PHG.d.ts → ui-B7IvSGQf.d.ts} +1123 -3525
  574. package/package.json +1 -1
  575. package/dist/cjs/index-Ni_dyEsz.js.map +0 -1
  576. package/dist/cjs/shadcn-B8TEzQMT.js.map +0 -1
  577. package/dist/cjs-dev/StytchSSRProxy-CxXsyme4.js.map +0 -1
  578. package/dist/cjs-dev/idpHelpers-Cf8Qq1B4.js.map +0 -1
  579. package/dist/cjs-dev/index-DdK3Jt4u.js.map +0 -1
  580. package/dist/cjs-dev/shadcn-C4w3DtKK.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"StytchContext.mjs","sources":["../../../../../../../../../web/src/ui/react/b2c/StytchContext.tsx"],"sourcesContent":["'use client';\n\nimport React, {\n ComponentType,\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n} from 'react';\nimport { mergeWithStableProps } from '@stytch/js-utils';\nimport { PermissionsMap, Session, StytchProjectConfigurationInput, User } from '@stytch/core/public';\nimport { useAsyncState } from '../utils/async';\nimport { noProviderError, providerMustBeUniqueError } from '../utils/errors';\nimport { invariant } from '../utils/invariant';\nimport { isStytchSSRProxy } from '../bindings/StytchSSRProxy';\nimport { StytchClient } from '../../../StytchClient';\n\n// There's no user facing strings in this file\n/* eslint-disable lingui/no-unlocalized-strings */\n\ntype StytchContext<TProjectConfiguration extends StytchProjectConfigurationInput> =\n | {\n isMounted: false;\n }\n | {\n isMounted: true;\n client: StytchClient<TProjectConfiguration>;\n };\n\ntype SWRUserUninitialized = {\n /**\n * Either the active {@link User} object, or null if the user is not logged in.\n */\n user: null;\n /**\n * If true, indicates that the value returned is from the application cache and a state refresh is in progress.\n */\n fromCache: false;\n /**\n * If true, indicates that the SDK has completed initialization.\n */\n isInitialized: false;\n};\n\ntype SWRUserInitialized = {\n /**\n * Either the active {@link User} object, or null if the user is not logged in.\n */\n user: User | null;\n /**\n * If true, indicates that the value returned is from the application cache and a state refresh is in progress.\n */\n fromCache: boolean;\n /**\n * If true, indicates that the SDK has completed initialization.\n */\n isInitialized: true;\n};\n\ntype SWRUser<TAlwaysInitialized extends boolean = boolean> = TAlwaysInitialized extends true\n ? SWRUserInitialized\n : SWRUserInitialized | SWRUserUninitialized;\n\nconst initialUser: SWRUserUninitialized = {\n user: null,\n fromCache: false,\n isInitialized: false,\n};\n\ntype SWRSessionUninitialized = {\n /**\n * Either the active {@link Session} object, or null if the user is not logged in.\n */\n session: null;\n /**\n * If true, indicates that the value returned is from the application cache and a state refresh is in progress.\n */\n fromCache: false;\n /**\n * If true, indicates that the SDK has completed initialization.\n */\n isInitialized: false;\n};\n\ntype SWRSessionInitialized = {\n /**\n * Either the active {@link Session} object, or null if the user is not logged in.\n */\n session: Session | null;\n /**\n * If true, indicates that the value returned is from the application cache and a state refresh is in progress.\n */\n fromCache: boolean;\n /**\n * If true, indicates that the SDK has completed initialization.\n */\n isInitialized: true;\n};\n\ntype SWRSession<TAlwaysInitialized extends boolean = boolean> = TAlwaysInitialized extends true\n ? SWRSessionInitialized\n : SWRSessionInitialized | SWRSessionUninitialized;\n\nconst initialSession: SWRSessionUninitialized = {\n session: null,\n fromCache: false,\n isInitialized: false,\n};\n\nconst StytchContext = createContext<StytchContext<StytchProjectConfigurationInput>>({ isMounted: false });\nconst StytchUserContext = createContext<SWRUser>(initialUser);\nconst StytchSessionContext = createContext<SWRSession>(initialSession);\n\nexport const useIsMounted__INTERNAL = (): boolean => useContext(StytchContext).isMounted;\n\n/**\n * Returns the active User.\n * The Stytch SDKs are used for client-side authentication and session management.\n * Check the isInitialized property to determine if the SDK has completed initialization.\n * Check the fromCache property to determine if the user data is from persistent storage.\n * @example\n * const {user, isInitialized, fromCache} = useStytchUser();\n * if (!isInitialized) {\n * return <p>Loading...</p>;\n * }\n * return (<h1>Welcome, {user.name.first_name}</h1>);\n */\nexport const useStytchUser = <TAssumeHydrated extends boolean = false>(): SWRUser<TAssumeHydrated> => {\n invariant(useIsMounted__INTERNAL(), noProviderError('useStytchUser'));\n return useContext(StytchUserContext) as SWRUser<TAssumeHydrated>;\n};\n\n/**\n * Returns the active user's Stytch session.\n * The Stytch SDKs are used for client-side authentication and session management.\n * Check the isInitialized property to determine if the SDK has completed initialization.\n * Check the fromCache property to determine if the session data is from persistent storage.\n * @example\n * const {session, isInitialized, fromCache} = useStytchSession();\n * useEffect(() => {\n * if (!isInitialized) {\n * return;\n * }\n * if (!session) {\n * router.replace('/login')\n * }\n * }, [session, isInitialized]);\n */\nexport const useStytchSession = <TAssumeHydrated extends boolean = false>(): SWRSession<TAssumeHydrated> => {\n invariant(useIsMounted__INTERNAL(), noProviderError('useStytchSession'));\n return useContext(StytchSessionContext) as SWRSession<TAssumeHydrated>;\n};\n\n/**\n * Returns the Stytch client stored in the Stytch context.\n *\n * @example\n * const stytch = useStytch();\n * useEffect(() => {\n * stytch.magicLinks.authenticate('...')\n * }, [stytch]);\n */\nexport const useStytch = <\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n>(): StytchClient<TProjectConfiguration> => {\n const ctx = useContext(StytchContext);\n invariant(ctx.isMounted, noProviderError('useStytch'));\n return ctx.client as StytchClient<TProjectConfiguration>;\n};\n\nexport const withStytch = <\n T extends object,\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n>(\n Component: ComponentType<T & { stytch: StytchClient<TProjectConfiguration> }>,\n): ComponentType<T> => {\n const WithStytch: ComponentType<T> = (props) => {\n invariant(useIsMounted__INTERNAL(), noProviderError('withStytch'));\n return <Component {...props} stytch={useStytch()} />;\n };\n WithStytch.displayName = `withStytch(${Component.displayName || Component.name || 'Component'})`;\n return WithStytch;\n};\n\nexport const withStytchUser = <T extends object, TAssumeHydrated extends boolean = false>(\n Component: ComponentType<\n T & { stytchUser: User | null; stytchUserIsInitialized: boolean; stytchUserIsFromCache: boolean }\n >,\n): ComponentType<T> => {\n const WithStytchUser: ComponentType<T> = (props) => {\n invariant(useIsMounted__INTERNAL(), noProviderError('withStytchUser'));\n const { user, isInitialized, fromCache } = useStytchUser<TAssumeHydrated>();\n return (\n <Component\n {...props}\n stytchUser={user}\n stytchUserIsInitialized={isInitialized}\n stytchUserIsFromCache={fromCache}\n />\n );\n };\n WithStytchUser.displayName = `withStytchUser(${Component.displayName || Component.name || 'Component'})`;\n return WithStytchUser;\n};\n\nexport const withStytchSession = <T extends object, TAssumeHydrated extends boolean = false>(\n Component: ComponentType<\n T & { stytchSession: Session | null; stytchSessionIsInitialized: boolean; stytchSessionIsFromCache: boolean }\n >,\n): ComponentType<T> => {\n const WithStytchSession: ComponentType<T> = (props) => {\n invariant(useIsMounted__INTERNAL(), noProviderError('withStytchSession'));\n const { session, isInitialized, fromCache } = useStytchSession<TAssumeHydrated>();\n return (\n <Component\n {...props}\n stytchSession={session}\n stytchSessionIsInitialized={isInitialized}\n stytchSessionIsFromCache={fromCache}\n />\n );\n };\n WithStytchSession.displayName = `withStytchSession(${Component.displayName || Component.name || 'Component'})`;\n return WithStytchSession;\n};\n\ntype SWRIsAuthorizedUninitialized = {\n /**\n * Whether the logged-in user is allowed to perform the specified action on the specified resource.\n */\n isAuthorized: false;\n /**\n * If true, indicates that the value returned is from the application cache and a state refresh is in progress.\n */\n fromCache: false;\n /**\n * If true, indicates that the SDK has completed initialization.\n */\n isInitialized: false;\n};\n\ntype SWRIsAuthorizedInitialized = {\n /**\n * Whether the logged-in user is allowed to perform the specified action on the specified resource.\n */\n isAuthorized: boolean;\n /**\n * If true, indicates that the value returned is from the application cache and a state refresh is in progress.\n */\n fromCache: boolean;\n /**\n * If true, indicates that the SDK has completed initialization.\n */\n isInitialized: boolean;\n};\n\ntype SWRIsAuthorized<TAlwaysInitialized extends boolean> = TAlwaysInitialized extends true\n ? SWRIsAuthorizedInitialized\n : SWRIsAuthorizedInitialized | SWRIsAuthorizedUninitialized;\n\n/**\n * Determines whether the logged-in user is allowed to perform the specified action on the specified resource.\n * Returns `true` if the user can perform the action, `false` otherwise.\n *\n * If the user is not logged in, this method will always return false.\n * If the resource or action provided are not valid for the configured RBAC policy, this method will return false.\n *\n * Remember - authorization checks for sensitive actions should always occur on the backend as well.\n * @example\n * const { isAuthorized } = useStytchIsAuthorized<Permissions>('documents', 'edit');\n * return <button disabled={!isAuthorized}>Edit</button>\n */\nexport const useStytchIsAuthorized = <TAssumeHydrated extends boolean = false>(\n resourceId: string,\n action: string,\n): SWRIsAuthorized<TAssumeHydrated> => {\n invariant(useIsMounted__INTERNAL(), noProviderError('useStytchIsAuthorized', 'StytchProvider'));\n const client = useStytch();\n const { user } = useStytchUser();\n const [isAuthorized, setIsAuthorized] = useAsyncState<SWRIsAuthorized<boolean>>({\n isInitialized: false,\n fromCache: false,\n isAuthorized: false,\n });\n\n useEffect(() => {\n if (isStytchSSRProxy(client)) {\n return;\n }\n\n setIsAuthorized({\n isInitialized: true,\n fromCache: true,\n isAuthorized: client.rbac.isAuthorizedSync(resourceId, action),\n });\n }, [action, client, resourceId, setIsAuthorized]);\n\n useEffect(() => {\n if (isStytchSSRProxy(client)) {\n return;\n }\n client.rbac.isAuthorized(resourceId, action).then((isAuthorized) => {\n setIsAuthorized({ isAuthorized, fromCache: false, isInitialized: true });\n });\n }, [client, user?.roles, resourceId, action, setIsAuthorized]);\n\n return isAuthorized;\n};\n\ntype permissionsLoaded<Permissions extends Record<string, string>> =\n | {\n loaded: false;\n value: null;\n }\n | {\n loaded: true;\n value: PermissionsMap<Permissions>;\n };\n\n/**\n * Wrap your component with this HOC in order to receive the permissions for the logged-in user.\n * Evaluates all permissions granted to the logged-in user.\n * Returns a Record<RoleId, Record<Action, boolean>> response indicating the user's permissions.\n * Each boolean will be `true` if the user can perform the action, `false` otherwise.\n *\n * If the user is not logged in, all values will be false.\n *\n * Remember - authorization checks for sensitive actions should always occur on the backend as well.\n * @example\n * type Permissions = {\n * document: 'create' | 'read' | 'write\n * image: 'create' | 'read'\n * }\n *\n * const MyComponent = (props) => {\n * const canEditDocuments = props.stytchPermissions.document.edit;\n * const canReadImages = props.stytchPermissions.image.read;\n * }\n * return withStytchPermissions<Permissions>(MyComponent)\n */\nexport const withStytchPermissions = <Permissions extends Record<string, string>, T extends object>(\n Component: ComponentType<T & { stytchPermissions: PermissionsMap<Permissions> }>,\n): ComponentType<T> => {\n const WithStytchPermissions: ComponentType<T> = (props) => {\n invariant(useIsMounted__INTERNAL(), noProviderError('useRBACPermissions', 'StytchProvider'));\n const client = useStytch();\n const { user } = useStytchUser();\n const [permissions, setPermissions] = useAsyncState<permissionsLoaded<Permissions>>({ loaded: false, value: null });\n\n useEffect(() => {\n client.rbac.allPermissions<Permissions>().then((permissions) => {\n setPermissions({ loaded: true, value: permissions });\n });\n }, [client, user?.roles, setPermissions]);\n\n if (!permissions.loaded) {\n return null;\n }\n return <Component {...props} stytchPermissions={permissions.value} />;\n };\n WithStytchPermissions.displayName = `withStytchPermissions(${\n Component.displayName || Component.name || 'Component'\n })`;\n return WithStytchPermissions;\n};\n\nexport interface StytchProviderProps<\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n> {\n /**\n * A Stytch client instance, created using either {@link createStytchHeadlessClient} or {@link createStytchClient}\n */\n stytch: StytchClient<TProjectConfiguration>;\n /**\n * When true, the provider will assume that the component will only be\n * rendered in a browser environment, either in a single-page application or\n * after completing hydration of a server-rendered application. This allows\n * cached values to be retrieved from the browser on the first render, meaning\n * that the `isInitialized` value returned from Stytch hooks will be `true`\n * starting from the first render.\n *\n * When `false`, the provider will defer initialization until after the first\n * render, and `isInitialized` will initially be `false`.\n *\n * This value defaults to `false` in `@stytch/nextjs`.\n */\n assumeHydrated?: boolean;\n children?: ReactNode;\n}\n\n/**\n * The Stytch Context Provider.\n * Wrap your application with this component in order to use Stytch everywhere in your app.\n * @example\n * const stytch = createStytchClient('public-token-<find yours in the stytch dashboard>')\n *\n * return (\n * <StytchProvider stytch={stytch}>\n * <App />\n * </StytchProvider>\n * )\n */\nexport const StytchProvider = <\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n>({\n stytch,\n children,\n assumeHydrated = false,\n}: StytchProviderProps<TProjectConfiguration>) => {\n invariant(!useIsMounted__INTERNAL(), providerMustBeUniqueError);\n invariant(\n !assumeHydrated || typeof window !== 'undefined',\n 'The `assumeHydrated` prop must be set to `false` when using StytchProvider in a server environment.',\n );\n\n const ctx = useMemo(() => ({ client: stytch, isMounted: true }), [stytch]);\n\n type ClientState<TAlwaysInitialized extends boolean> = {\n session: SWRSession<TAlwaysInitialized>;\n user: SWRUser<TAlwaysInitialized>;\n };\n\n const getHydratedState = useCallback(() => {\n return {\n session: { ...stytch.session.getInfo(), isInitialized: true },\n user: { ...stytch.user.getInfo(), isInitialized: true },\n } satisfies ClientState<true>;\n }, [stytch]);\n\n const getInitialState = () => {\n return {\n session: initialSession,\n user: initialUser,\n } satisfies ClientState<false>;\n };\n\n const [{ user, session }, setClientState] = useAsyncState<ClientState<boolean>>(() =>\n assumeHydrated ? getHydratedState() : (getInitialState() as ClientState<boolean>),\n );\n\n // Store the initial value of `assumeHydrated` in a ref, because it is\n // logically only relevant for the first render\n const assumeHydratedRef = useRef(assumeHydrated);\n useEffect(() => {\n if (isStytchSSRProxy(stytch)) {\n return;\n }\n\n const updateState = () => {\n setClientState((oldState) => mergeWithStableProps(oldState, getHydratedState()));\n };\n\n if (!assumeHydratedRef.current) {\n updateState();\n }\n\n return stytch.onStateChange(updateState);\n }, [getHydratedState, setClientState, stytch]);\n\n return (\n <StytchContext.Provider value={ctx}>\n <StytchUserContext.Provider value={user}>\n <StytchSessionContext.Provider value={session}>{children}</StytchSessionContext.Provider>\n </StytchUserContext.Provider>\n </StytchContext.Provider>\n );\n};\n"],"names":["initialUser","user","fromCache","isInitialized","initialSession","session","StytchContext","createContext","isMounted","StytchUserContext","StytchSessionContext","useIsMounted__INTERNAL","useContext","useStytchUser","invariant","noProviderError","useStytchSession","useStytch","ctx","client","withStytch","Component","WithStytch","props","React","stytch","displayName","name","withStytchUser","WithStytchUser","stytchUser","stytchUserIsInitialized","stytchUserIsFromCache","withStytchSession","WithStytchSession","stytchSession","stytchSessionIsInitialized","stytchSessionIsFromCache","useStytchIsAuthorized","resourceId","action","isAuthorized","setIsAuthorized","useAsyncState","useEffect","isStytchSSRProxy","rbac","isAuthorizedSync","then","roles","withStytchPermissions","WithStytchPermissions","permissions","setPermissions","loaded","value","allPermissions","stytchPermissions","StytchProvider","children","assumeHydrated","providerMustBeUniqueError","window","useMemo","getHydratedState","useCallback","getInfo","getInitialState","setClientState","assumeHydratedRef","useRef","updateState","oldState","mergeWithStableProps","current","onStateChange","Provider"],"mappings":";;;;;;;AAkEA,MAAMA,WAAAA,GAAoC;IACxCC,IAAAA,EAAM,IAAA;IACNC,SAAAA,EAAW,KAAA;IACXC,aAAAA,EAAe;AACjB,CAAA;AAoCA,MAAMC,cAAAA,GAA0C;IAC9CC,OAAAA,EAAS,IAAA;IACTH,SAAAA,EAAW,KAAA;IACXC,aAAAA,EAAe;AACjB,CAAA;AAEA,MAAMG,8BAAgBC,aAAAA,CAA8D;IAAEC,SAAAA,EAAW;AAAM,CAAA,CAAA;AACvG,MAAMC,kCAAoBF,aAAAA,CAAuBP,WAAAA,CAAAA;AACjD,MAAMU,qCAAuBH,aAAAA,CAA0BH,cAAAA,CAAAA;MAE1CO,sBAAAA,GAAyB,IAAeC,UAAAA,CAAWN,aAAAA,CAAAA,CAAeE;AAE/E;;;;;;;;;;;UAYaK,aAAAA,GAAgB,IAAA;AAC3BC,IAAAA,SAAAA,CAAUH,0BAA0BI,eAAAA,CAAgB,eAAA,CAAA,CAAA;AACpD,IAAA,OAAOH,UAAAA,CAAWH,iBAAAA,CAAAA;AACpB;AAEA;;;;;;;;;;;;;;;UAgBaO,gBAAAA,GAAmB,IAAA;AAC9BF,IAAAA,SAAAA,CAAUH,0BAA0BI,eAAAA,CAAgB,kBAAA,CAAA,CAAA;AACpD,IAAA,OAAOH,UAAAA,CAAWF,oBAAAA,CAAAA;AACpB;AAEA;;;;;;;;UASaO,SAAAA,GAAY,IAAA;AAGvB,IAAA,MAAMC,MAAMN,UAAAA,CAAWN,aAAAA,CAAAA;IACvBQ,SAAAA,CAAUI,GAAAA,CAAIV,SAAS,EAAEO,eAAAA,CAAgB,WAAA,CAAA,CAAA;AACzC,IAAA,OAAOG,IAAIC,MAAM;AACnB;AAEO,MAAMC,aAAa,CAIxBC,SAAAA,GAAAA;AAEA,IAAA,MAAMC,aAA+B,CAACC,KAAAA,GAAAA;AACpCT,QAAAA,SAAAA,CAAUH,0BAA0BI,eAAAA,CAAgB,YAAA,CAAA,CAAA;AACpD,QAAA,qBAAOS,cAAA,CAAA,aAAA,CAACH,SAAAA,EAAAA;AAAW,YAAA,GAAGE,KAAK;YAAEE,MAAAA,EAAQR,SAAAA;;AACvC,IAAA,CAAA;AACAK,IAAAA,UAAAA,CAAWI,WAAW,GAAG,CAAC,WAAW,EAAEL,SAAAA,CAAUK,WAAW,IAAIL,SAAAA,CAAUM,IAAI,IAAI,WAAA,CAAY,CAAC,CAAC;IAChG,OAAOL,UAAAA;AACT;AAEO,MAAMM,iBAAiB,CAC5BP,SAAAA,GAAAA;AAIA,IAAA,MAAMQ,iBAAmC,CAACN,KAAAA,GAAAA;AACxCT,QAAAA,SAAAA,CAAUH,0BAA0BI,eAAAA,CAAgB,gBAAA,CAAA,CAAA;AACpD,QAAA,MAAM,EAAEd,IAAI,EAAEE,aAAa,EAAED,SAAS,EAAE,GAAGW,aAAAA,EAAAA;AAC3C,QAAA,qBACEW,cAAA,CAAA,aAAA,CAACH,SAAAA,EAAAA;AACE,YAAA,GAAGE,KAAK;YACTO,UAAAA,EAAY7B,IAAAA;YACZ8B,uBAAAA,EAAyB5B,aAAAA;YACzB6B,qBAAAA,EAAuB9B;;AAG7B,IAAA,CAAA;AACA2B,IAAAA,cAAAA,CAAeH,WAAW,GAAG,CAAC,eAAe,EAAEL,SAAAA,CAAUK,WAAW,IAAIL,SAAAA,CAAUM,IAAI,IAAI,WAAA,CAAY,CAAC,CAAC;IACxG,OAAOE,cAAAA;AACT;AAEO,MAAMI,oBAAoB,CAC/BZ,SAAAA,GAAAA;AAIA,IAAA,MAAMa,oBAAsC,CAACX,KAAAA,GAAAA;AAC3CT,QAAAA,SAAAA,CAAUH,0BAA0BI,eAAAA,CAAgB,mBAAA,CAAA,CAAA;AACpD,QAAA,MAAM,EAAEV,OAAO,EAAEF,aAAa,EAAED,SAAS,EAAE,GAAGc,gBAAAA,EAAAA;AAC9C,QAAA,qBACEQ,cAAA,CAAA,aAAA,CAACH,SAAAA,EAAAA;AACE,YAAA,GAAGE,KAAK;YACTY,aAAAA,EAAe9B,OAAAA;YACf+B,0BAAAA,EAA4BjC,aAAAA;YAC5BkC,wBAAAA,EAA0BnC;;AAGhC,IAAA,CAAA;AACAgC,IAAAA,iBAAAA,CAAkBR,WAAW,GAAG,CAAC,kBAAkB,EAAEL,SAAAA,CAAUK,WAAW,IAAIL,SAAAA,CAAUM,IAAI,IAAI,WAAA,CAAY,CAAC,CAAC;IAC9G,OAAOO,iBAAAA;AACT;AAoCA;;;;;;;;;;;AAWC,IACM,MAAMI,qBAAAA,GAAwB,CACnCC,UAAAA,EACAC,MAAAA,GAAAA;IAEA1B,SAAAA,CAAUH,sBAAAA,EAAAA,EAA0BI,gBAAgB,uBAAA,EAAyB,gBAAA,CAAA,CAAA;AAC7E,IAAA,MAAMI,MAAAA,GAASF,SAAAA,EAAAA;IACf,MAAM,EAAEhB,IAAI,EAAE,GAAGY,aAAAA,EAAAA;AACjB,IAAA,MAAM,CAAC4B,YAAAA,EAAcC,eAAAA,CAAgB,GAAGC,aAAAA,CAAwC;QAC9ExC,aAAAA,EAAe,KAAA;QACfD,SAAAA,EAAW,KAAA;QACXuC,YAAAA,EAAc;AAChB,KAAA,CAAA;IAEAG,SAAAA,CAAU,IAAA;AACR,QAAA,IAAIC,iBAAiB1B,MAAAA,CAAAA,EAAS;AAC5B,YAAA;AACF,QAAA;QAEAuB,eAAAA,CAAgB;YACdvC,aAAAA,EAAe,IAAA;YACfD,SAAAA,EAAW,IAAA;AACXuC,YAAAA,YAAAA,EAActB,MAAAA,CAAO2B,IAAI,CAACC,gBAAgB,CAACR,UAAAA,EAAYC,MAAAA;AACzD,SAAA,CAAA;IACF,CAAA,EAAG;AAACA,QAAAA,MAAAA;AAAQrB,QAAAA,MAAAA;AAAQoB,QAAAA,UAAAA;AAAYG,QAAAA;AAAgB,KAAA,CAAA;IAEhDE,SAAAA,CAAU,IAAA;AACR,QAAA,IAAIC,iBAAiB1B,MAAAA,CAAAA,EAAS;AAC5B,YAAA;AACF,QAAA;QACAA,MAAAA,CAAO2B,IAAI,CAACL,YAAY,CAACF,YAAYC,MAAAA,CAAAA,CAAQQ,IAAI,CAAC,CAACP,YAAAA,GAAAA;YACjDC,eAAAA,CAAgB;AAAED,gBAAAA,YAAAA;gBAAcvC,SAAAA,EAAW,KAAA;gBAAOC,aAAAA,EAAe;AAAK,aAAA,CAAA;AACxE,QAAA,CAAA,CAAA;IACF,CAAA,EAAG;AAACgB,QAAAA,MAAAA;QAAQlB,IAAAA,EAAMgD,KAAAA;AAAOV,QAAAA,UAAAA;AAAYC,QAAAA,MAAAA;AAAQE,QAAAA;AAAgB,KAAA,CAAA;IAE7D,OAAOD,YAAAA;AACT;AAYA;;;;;;;;;;;;;;;;;;;;IAqBO,MAAMS,qBAAAA,GAAwB,CACnC7B,SAAAA,GAAAA;AAEA,IAAA,MAAM8B,wBAA0C,CAAC5B,KAAAA,GAAAA;QAC/CT,SAAAA,CAAUH,sBAAAA,EAAAA,EAA0BI,gBAAgB,oBAAA,EAAsB,gBAAA,CAAA,CAAA;AAC1E,QAAA,MAAMI,MAAAA,GAASF,SAAAA,EAAAA;QACf,MAAM,EAAEhB,IAAI,EAAE,GAAGY,aAAAA,EAAAA;AACjB,QAAA,MAAM,CAACuC,WAAAA,EAAaC,cAAAA,CAAe,GAAGV,aAAAA,CAA8C;YAAEW,MAAAA,EAAQ,KAAA;YAAOC,KAAAA,EAAO;AAAK,SAAA,CAAA;QAEjHX,SAAAA,CAAU,IAAA;AACRzB,YAAAA,MAAAA,CAAO2B,IAAI,CAACU,cAAc,EAAA,CAAgBR,IAAI,CAAC,CAACI,WAAAA,GAAAA;gBAC9CC,cAAAA,CAAe;oBAAEC,MAAAA,EAAQ,IAAA;oBAAMC,KAAAA,EAAOH;AAAY,iBAAA,CAAA;AACpD,YAAA,CAAA,CAAA;QACF,CAAA,EAAG;AAACjC,YAAAA,MAAAA;YAAQlB,IAAAA,EAAMgD,KAAAA;AAAOI,YAAAA;AAAe,SAAA,CAAA;QAExC,IAAI,CAACD,WAAAA,CAAYE,MAAM,EAAE;YACvB,OAAO,IAAA;AACT,QAAA;AACA,QAAA,qBAAO9B,cAAA,CAAA,aAAA,CAACH,SAAAA,EAAAA;AAAW,YAAA,GAAGE,KAAK;AAAEkC,YAAAA,iBAAAA,EAAmBL,YAAYG;;AAC9D,IAAA,CAAA;AACAJ,IAAAA,qBAAAA,CAAsBzB,WAAW,GAAG,CAAC,sBAAsB,EACzDL,SAAAA,CAAUK,WAAW,IAAIL,SAAAA,CAAUM,IAAI,IAAI,WAAA,CAC5C,CAAC,CAAC;IACH,OAAOwB,qBAAAA;AACT;AA0BA;;;;;;;;;;;IAYO,MAAMO,cAAAA,GAAiB,CAE5B,EACAjC,MAAM,EACNkC,QAAQ,EACRC,cAAAA,GAAiB,KAAK,EACqB,GAAA;AAC3C9C,IAAAA,SAAAA,CAAU,CAACH,sBAAAA,EAAAA,EAA0BkD,yBAAAA,CAAAA;AACrC/C,IAAAA,SAAAA,CACE,CAAC8C,cAAAA,IAAkB,OAAOE,MAAAA,KAAW,WAAA,EACrC,qGAAA,CAAA;IAGF,MAAM5C,GAAAA,GAAM6C,OAAAA,CAAQ,KAAO;YAAE5C,MAAAA,EAAQM,MAAAA;YAAQjB,SAAAA,EAAW;AAAK,SAAA,CAAA,EAAI;AAACiB,QAAAA;AAAO,KAAA,CAAA;AAOzE,IAAA,MAAMuC,mBAAmBC,WAAAA,CAAY,IAAA;QACnC,OAAO;YACL5D,OAAAA,EAAS;AAAE,gBAAA,GAAGoB,MAAAA,CAAOpB,OAAO,CAAC6D,OAAO,EAAE;gBAAE/D,aAAAA,EAAe;AAAK,aAAA;YAC5DF,IAAAA,EAAM;AAAE,gBAAA,GAAGwB,MAAAA,CAAOxB,IAAI,CAACiE,OAAO,EAAE;gBAAE/D,aAAAA,EAAe;AAAK;AACxD,SAAA;IACF,CAAA,EAAG;AAACsB,QAAAA;AAAO,KAAA,CAAA;AAEX,IAAA,MAAM0C,eAAAA,GAAkB,IAAA;QACtB,OAAO;YACL9D,OAAAA,EAASD,cAAAA;YACTH,IAAAA,EAAMD;AACR,SAAA;AACF,IAAA,CAAA;AAEA,IAAA,MAAM,CAAC,EAAEC,IAAI,EAAEI,OAAO,EAAE,EAAE+D,cAAAA,CAAe,GAAGzB,aAAAA,CAAoC,IAC9EiB,cAAAA,GAAiBI,gBAAAA,EAAAA,GAAsBG,eAAAA,EAAAA,CAAAA;;;AAKzC,IAAA,MAAME,oBAAoBC,MAAAA,CAAOV,cAAAA,CAAAA;IACjChB,SAAAA,CAAU,IAAA;AACR,QAAA,IAAIC,iBAAiBpB,MAAAA,CAAAA,EAAS;AAC5B,YAAA;AACF,QAAA;AAEA,QAAA,MAAM8C,WAAAA,GAAc,IAAA;YAClBH,cAAAA,CAAe,CAACI,QAAAA,GAAaC,oBAAAA,CAAqBD,QAAAA,EAAUR,gBAAAA,EAAAA,CAAAA,CAAAA;AAC9D,QAAA,CAAA;QAEA,IAAI,CAACK,iBAAAA,CAAkBK,OAAO,EAAE;AAC9BH,YAAAA,WAAAA,EAAAA;AACF,QAAA;QAEA,OAAO9C,MAAAA,CAAOkD,aAAa,CAACJ,WAAAA,CAAAA;IAC9B,CAAA,EAAG;AAACP,QAAAA,gBAAAA;AAAkBI,QAAAA,cAAAA;AAAgB3C,QAAAA;AAAO,KAAA,CAAA;IAE7C,qBACED,cAAA,CAAA,aAAA,CAAClB,cAAcsE,QAAQ,EAAA;QAACrB,KAAAA,EAAOrC;AAC7B,KAAA,gBAAAM,cAAA,CAAA,aAAA,CAACf,kBAAkBmE,QAAQ,EAAA;QAACrB,KAAAA,EAAOtD;AACjC,KAAA,gBAAAuB,cAAA,CAAA,aAAA,CAACd,qBAAqBkE,QAAQ,EAAA;QAACrB,KAAAA,EAAOlD;AAAUsD,KAAAA,EAAAA,QAAAA,CAAAA,CAAAA,CAAAA;AAIxD;;;;"}
1
+ {"version":3,"file":"StytchContext.mjs","sources":["../../../../../../../../../web/src/ui/react/b2c/StytchContext.tsx"],"sourcesContent":["'use client';\n\nimport React, {\n ComponentType,\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n} from 'react';\nimport { mergeWithStableProps } from '@stytch/js-utils';\nimport { PermissionsMap, Session, StytchProjectConfigurationInput, User } from '@stytch/core/public';\nimport { useAsyncState } from '../utils/async';\nimport { noProviderError, providerMustBeUniqueError } from '../utils/errors';\nimport { invariant } from '../utils/invariant';\nimport { isStytchSSRProxy } from '../bindings/StytchSSRProxy';\nimport { StytchClient } from '../../../StytchClient';\n\n// There's no user facing strings in this file\n/* eslint-disable lingui/no-unlocalized-strings */\n\ntype StytchContext<TProjectConfiguration extends StytchProjectConfigurationInput> =\n | {\n isMounted: false;\n }\n | {\n isMounted: true;\n client: StytchClient<TProjectConfiguration>;\n };\n\ntype SWRUserUninitialized = {\n /**\n * Either the active {@link User} object, or null if the user is not logged in.\n */\n user: null;\n /**\n * If true, indicates that the value returned is from the application cache and a state refresh is in progress.\n */\n fromCache: false;\n /**\n * If true, indicates that the SDK has completed initialization.\n */\n isInitialized: false;\n};\n\ntype SWRUserInitialized = {\n /**\n * Either the active {@link User} object, or null if the user is not logged in.\n */\n user: User | null;\n /**\n * If true, indicates that the value returned is from the application cache and a state refresh is in progress.\n */\n fromCache: boolean;\n /**\n * If true, indicates that the SDK has completed initialization.\n */\n isInitialized: true;\n};\n\ntype SWRUser<TAlwaysInitialized extends boolean = boolean> = TAlwaysInitialized extends true\n ? SWRUserInitialized\n : SWRUserInitialized | SWRUserUninitialized;\n\nconst initialUser: SWRUserUninitialized = {\n user: null,\n fromCache: false,\n isInitialized: false,\n};\n\ntype SWRSessionUninitialized = {\n /**\n * Either the active {@link Session} object, or null if the user is not logged in.\n */\n session: null;\n /**\n * If true, indicates that the value returned is from the application cache and a state refresh is in progress.\n */\n fromCache: false;\n /**\n * If true, indicates that the SDK has completed initialization.\n */\n isInitialized: false;\n};\n\ntype SWRSessionInitialized = {\n /**\n * Either the active {@link Session} object, or null if the user is not logged in.\n */\n session: Session | null;\n /**\n * If true, indicates that the value returned is from the application cache and a state refresh is in progress.\n */\n fromCache: boolean;\n /**\n * If true, indicates that the SDK has completed initialization.\n */\n isInitialized: true;\n};\n\ntype SWRSession<TAlwaysInitialized extends boolean = boolean> = TAlwaysInitialized extends true\n ? SWRSessionInitialized\n : SWRSessionInitialized | SWRSessionUninitialized;\n\nconst initialSession: SWRSessionUninitialized = {\n session: null,\n fromCache: false,\n isInitialized: false,\n};\n\nconst StytchContext = createContext<StytchContext<StytchProjectConfigurationInput>>({ isMounted: false });\nconst StytchUserContext = createContext<SWRUser>(initialUser);\nconst StytchSessionContext = createContext<SWRSession>(initialSession);\n\nexport const useIsMounted__INTERNAL = (): boolean => useContext(StytchContext).isMounted;\n\n/**\n * Returns the active User.\n * The Stytch SDKs are used for client-side authentication and session management.\n * Check the isInitialized property to determine if the SDK has completed initialization.\n * Check the fromCache property to determine if the user data is from persistent storage.\n * @example\n * const {user, isInitialized, fromCache} = useStytchUser();\n * if (!isInitialized) {\n * return <p>Loading...</p>;\n * }\n * return (<h1>Welcome, {user.name.first_name}</h1>);\n */\nexport const useStytchUser = <TAssumeHydrated extends boolean = false>(): SWRUser<TAssumeHydrated> => {\n invariant(useIsMounted__INTERNAL(), noProviderError('useStytchUser'));\n return useContext(StytchUserContext) as SWRUser<TAssumeHydrated>;\n};\n\n/**\n * Returns the active user's Stytch session.\n * The Stytch SDKs are used for client-side authentication and session management.\n * Check the isInitialized property to determine if the SDK has completed initialization.\n * Check the fromCache property to determine if the session data is from persistent storage.\n * @example\n * const {session, isInitialized, fromCache} = useStytchSession();\n * useEffect(() => {\n * if (!isInitialized) {\n * return;\n * }\n * if (!session) {\n * router.replace('/login')\n * }\n * }, [session, isInitialized]);\n */\nexport const useStytchSession = <TAssumeHydrated extends boolean = false>(): SWRSession<TAssumeHydrated> => {\n invariant(useIsMounted__INTERNAL(), noProviderError('useStytchSession'));\n return useContext(StytchSessionContext) as SWRSession<TAssumeHydrated>;\n};\n\n/**\n * Returns the Stytch client stored in the Stytch context.\n *\n * @example\n * const stytch = useStytch();\n * useEffect(() => {\n * stytch.magicLinks.authenticate('...')\n * }, [stytch]);\n */\nexport const useStytch = <\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n>(): StytchClient<TProjectConfiguration> => {\n const ctx = useContext(StytchContext);\n invariant(ctx.isMounted, noProviderError('useStytch'));\n return ctx.client as StytchClient<TProjectConfiguration>;\n};\n\nexport const withStytch = <\n T extends object,\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n>(\n Component: ComponentType<T & { stytch: StytchClient<TProjectConfiguration> }>,\n): ComponentType<T> => {\n const WithStytch: ComponentType<T> = (props) => {\n invariant(useIsMounted__INTERNAL(), noProviderError('withStytch'));\n return <Component {...props} stytch={useStytch()} />;\n };\n WithStytch.displayName = `withStytch(${Component.displayName || Component.name || 'Component'})`;\n return WithStytch;\n};\n\nexport const withStytchUser = <T extends object, TAssumeHydrated extends boolean = false>(\n Component: ComponentType<\n T & { stytchUser: User | null; stytchUserIsInitialized: boolean; stytchUserIsFromCache: boolean }\n >,\n): ComponentType<T> => {\n const WithStytchUser: ComponentType<T> = (props) => {\n invariant(useIsMounted__INTERNAL(), noProviderError('withStytchUser'));\n const { user, isInitialized, fromCache } = useStytchUser<TAssumeHydrated>();\n return (\n <Component\n {...props}\n stytchUser={user}\n stytchUserIsInitialized={isInitialized}\n stytchUserIsFromCache={fromCache}\n />\n );\n };\n WithStytchUser.displayName = `withStytchUser(${Component.displayName || Component.name || 'Component'})`;\n return WithStytchUser;\n};\n\nexport const withStytchSession = <T extends object, TAssumeHydrated extends boolean = false>(\n Component: ComponentType<\n T & { stytchSession: Session | null; stytchSessionIsInitialized: boolean; stytchSessionIsFromCache: boolean }\n >,\n): ComponentType<T> => {\n const WithStytchSession: ComponentType<T> = (props) => {\n invariant(useIsMounted__INTERNAL(), noProviderError('withStytchSession'));\n const { session, isInitialized, fromCache } = useStytchSession<TAssumeHydrated>();\n return (\n <Component\n {...props}\n stytchSession={session}\n stytchSessionIsInitialized={isInitialized}\n stytchSessionIsFromCache={fromCache}\n />\n );\n };\n WithStytchSession.displayName = `withStytchSession(${Component.displayName || Component.name || 'Component'})`;\n return WithStytchSession;\n};\n\ntype SWRIsAuthorizedUninitialized = {\n /**\n * Whether the logged-in user is allowed to perform the specified action on the specified resource.\n */\n isAuthorized: false;\n /**\n * If true, indicates that the value returned is from the application cache and a state refresh is in progress.\n */\n fromCache: false;\n /**\n * If true, indicates that the SDK has completed initialization.\n */\n isInitialized: false;\n};\n\ntype SWRIsAuthorizedInitialized = {\n /**\n * Whether the logged-in user is allowed to perform the specified action on the specified resource.\n */\n isAuthorized: boolean;\n /**\n * If true, indicates that the value returned is from the application cache and a state refresh is in progress.\n */\n fromCache: boolean;\n /**\n * If true, indicates that the SDK has completed initialization.\n */\n isInitialized: boolean;\n};\n\ntype SWRIsAuthorized<TAlwaysInitialized extends boolean> = TAlwaysInitialized extends true\n ? SWRIsAuthorizedInitialized\n : SWRIsAuthorizedInitialized | SWRIsAuthorizedUninitialized;\n\n/**\n * Determines whether the logged-in user is allowed to perform the specified action on the specified resource.\n * Returns `true` if the user can perform the action, `false` otherwise.\n *\n * If the user is not logged in, this method will always return false.\n * If the resource or action provided are not valid for the configured RBAC policy, this method will return false.\n *\n * Remember - authorization checks for sensitive actions should always occur on the backend as well.\n * @example\n * const { isAuthorized } = useStytchIsAuthorized('documents', 'edit');\n * return <button disabled={!isAuthorized}>Edit</button>\n */\nexport const useStytchIsAuthorized = <TAssumeHydrated extends boolean = false>(\n resourceId: string,\n action: string,\n): SWRIsAuthorized<TAssumeHydrated> => {\n invariant(useIsMounted__INTERNAL(), noProviderError('useStytchIsAuthorized', 'StytchProvider'));\n const client = useStytch();\n const { user } = useStytchUser();\n const [isAuthorized, setIsAuthorized] = useAsyncState<SWRIsAuthorized<boolean>>({\n isInitialized: false,\n fromCache: false,\n isAuthorized: false,\n });\n\n useEffect(() => {\n if (isStytchSSRProxy(client)) {\n return;\n }\n\n setIsAuthorized({\n isInitialized: true,\n fromCache: true,\n isAuthorized: client.rbac.isAuthorizedSync(resourceId, action),\n });\n }, [action, client, resourceId, setIsAuthorized]);\n\n useEffect(() => {\n if (isStytchSSRProxy(client)) {\n return;\n }\n client.rbac.isAuthorized(resourceId, action).then((isAuthorized) => {\n setIsAuthorized({ isAuthorized, fromCache: false, isInitialized: true });\n });\n }, [client, user?.roles, resourceId, action, setIsAuthorized]);\n\n return isAuthorized;\n};\n\ntype permissionsLoaded<Permissions extends Record<string, string>> =\n | {\n loaded: false;\n value: null;\n }\n | {\n loaded: true;\n value: PermissionsMap<Permissions>;\n };\n\n/**\n * Wrap your component with this HOC in order to receive the permissions for the logged-in user.\n * Evaluates all permissions granted to the logged-in user.\n * Returns a Record<RoleId, Record<Action, boolean>> response indicating the user's permissions.\n * Each boolean will be `true` if the user can perform the action, `false` otherwise.\n *\n * If the user is not logged in, all values will be false.\n *\n * Remember - authorization checks for sensitive actions should always occur on the backend as well.\n * @example\n * type Permissions = {\n * document: 'create' | 'read' | 'write\n * image: 'create' | 'read'\n * }\n *\n * const MyComponent = (props) => {\n * const canEditDocuments = props.stytchPermissions.document.edit;\n * const canReadImages = props.stytchPermissions.image.read;\n * }\n * return withStytchPermissions<Permissions>(MyComponent)\n */\nexport const withStytchPermissions = <Permissions extends Record<string, string>, T extends object>(\n Component: ComponentType<T & { stytchPermissions: PermissionsMap<Permissions> }>,\n): ComponentType<T> => {\n const WithStytchPermissions: ComponentType<T> = (props) => {\n invariant(useIsMounted__INTERNAL(), noProviderError('useRBACPermissions', 'StytchProvider'));\n const client = useStytch();\n const { user } = useStytchUser();\n const [permissions, setPermissions] = useAsyncState<permissionsLoaded<Permissions>>({ loaded: false, value: null });\n\n useEffect(() => {\n client.rbac.allPermissions<Permissions>().then((permissions) => {\n setPermissions({ loaded: true, value: permissions });\n });\n }, [client, user?.roles, setPermissions]);\n\n if (!permissions.loaded) {\n return null;\n }\n return <Component {...props} stytchPermissions={permissions.value} />;\n };\n WithStytchPermissions.displayName = `withStytchPermissions(${\n Component.displayName || Component.name || 'Component'\n })`;\n return WithStytchPermissions;\n};\n\nexport interface StytchProviderProps<\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n> {\n /**\n * A Stytch client instance, created using either {@link createStytchHeadlessClient} or {@link createStytchClient}\n */\n stytch: StytchClient<TProjectConfiguration>;\n /**\n * When true, the provider will assume that the component will only be\n * rendered in a browser environment, either in a single-page application or\n * after completing hydration of a server-rendered application. This allows\n * cached values to be retrieved from the browser on the first render, meaning\n * that the `isInitialized` value returned from Stytch hooks will be `true`\n * starting from the first render.\n *\n * When `false`, the provider will defer initialization until after the first\n * render, and `isInitialized` will initially be `false`.\n *\n * This value defaults to `false` in `@stytch/nextjs`.\n */\n assumeHydrated?: boolean;\n children?: ReactNode;\n}\n\n/**\n * The Stytch Context Provider.\n * Wrap your application with this component in order to use Stytch everywhere in your app.\n * @example\n * const stytch = createStytchClient('public-token-<find yours in the stytch dashboard>')\n *\n * return (\n * <StytchProvider stytch={stytch}>\n * <App />\n * </StytchProvider>\n * )\n */\nexport const StytchProvider = <\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n>({\n stytch,\n children,\n assumeHydrated = false,\n}: StytchProviderProps<TProjectConfiguration>) => {\n invariant(!useIsMounted__INTERNAL(), providerMustBeUniqueError);\n invariant(\n !assumeHydrated || typeof window !== 'undefined',\n 'The `assumeHydrated` prop must be set to `false` when using StytchProvider in a server environment.',\n );\n\n const ctx = useMemo(() => ({ client: stytch, isMounted: true }), [stytch]);\n\n type ClientState<TAlwaysInitialized extends boolean> = {\n session: SWRSession<TAlwaysInitialized>;\n user: SWRUser<TAlwaysInitialized>;\n };\n\n const getHydratedState = useCallback(() => {\n return {\n session: { ...stytch.session.getInfo(), isInitialized: true },\n user: { ...stytch.user.getInfo(), isInitialized: true },\n } satisfies ClientState<true>;\n }, [stytch]);\n\n const getInitialState = () => {\n return {\n session: initialSession,\n user: initialUser,\n } satisfies ClientState<false>;\n };\n\n const [{ user, session }, setClientState] = useAsyncState<ClientState<boolean>>(() =>\n assumeHydrated ? getHydratedState() : (getInitialState() as ClientState<boolean>),\n );\n\n // Store the initial value of `assumeHydrated` in a ref, because it is\n // logically only relevant for the first render\n const assumeHydratedRef = useRef(assumeHydrated);\n useEffect(() => {\n if (isStytchSSRProxy(stytch)) {\n return;\n }\n\n const updateState = () => {\n setClientState((oldState) => mergeWithStableProps(oldState, getHydratedState()));\n };\n\n if (!assumeHydratedRef.current) {\n updateState();\n }\n\n return stytch.onStateChange(updateState);\n }, [getHydratedState, setClientState, stytch]);\n\n return (\n <StytchContext.Provider value={ctx}>\n <StytchUserContext.Provider value={user}>\n <StytchSessionContext.Provider value={session}>{children}</StytchSessionContext.Provider>\n </StytchUserContext.Provider>\n </StytchContext.Provider>\n );\n};\n"],"names":["initialUser","user","fromCache","isInitialized","initialSession","session","StytchContext","createContext","isMounted","StytchUserContext","StytchSessionContext","useIsMounted__INTERNAL","useContext","useStytchUser","invariant","noProviderError","useStytchSession","useStytch","ctx","client","withStytch","Component","WithStytch","props","React","stytch","displayName","name","withStytchUser","WithStytchUser","stytchUser","stytchUserIsInitialized","stytchUserIsFromCache","withStytchSession","WithStytchSession","stytchSession","stytchSessionIsInitialized","stytchSessionIsFromCache","useStytchIsAuthorized","resourceId","action","isAuthorized","setIsAuthorized","useAsyncState","useEffect","isStytchSSRProxy","rbac","isAuthorizedSync","then","roles","withStytchPermissions","WithStytchPermissions","permissions","setPermissions","loaded","value","allPermissions","stytchPermissions","StytchProvider","children","assumeHydrated","providerMustBeUniqueError","window","useMemo","getHydratedState","useCallback","getInfo","getInitialState","setClientState","assumeHydratedRef","useRef","updateState","oldState","mergeWithStableProps","current","onStateChange","Provider"],"mappings":"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"}
@@ -28,7 +28,7 @@ import { createB2CComponent } from '../bindings/createB2CComponent.mjs';
28
28
  * onEvent: (event) => console.log(event)
29
29
  * }}
30
30
  * />
31
- */ const StytchLogin = createB2CComponent('StytchLogin', AppContainer);
31
+ */ const StytchLogin = /* @__PURE__ */ createB2CComponent('StytchLogin', AppContainer);
32
32
 
33
33
  export { StytchLogin };
34
34
  //# sourceMappingURL=StytchLogin.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"StytchLogin.mjs","sources":["../../../../../../../../../web/src/ui/react/b2c/StytchLogin.tsx"],"sourcesContent":["import { Callbacks, StringsOptions, StytchProjectConfigurationInput } from '@stytch/core/public';\nimport { AppContainer } from '../../b2c/AppContainer';\nimport { PresentationConfig, StytchLoginConfig } from '../../../types';\nimport { createB2CComponent } from '../bindings/createB2CComponent';\n\nexport interface StytchProps<\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n> extends StringsOptions {\n /**\n * A {@link StytchLoginConfig} object. Add products and product-specific config to this object to change the login methods shown.\n *\n * @example\n * {\n * products: [Products.crypto, Products.otp]\n * }\n *\n * @example\n * {\n * products: [Products.emailMagicLinks]\n * emailMagicLinksOptions: {\n * loginRedirectURL: 'https://example.com/authenticate',\n * signupRedirectURL: 'https://example.com/authenticate',\n * }\n * }\n *\n * @example\n * {\n * products: [Products.oauth]\n * oauthOptions: {\n * providers: [\n * { type: 'google', one_tap: true, position: 'embedded' },\n * { type: 'microsoft' },\n * { type: 'apple' },\n * { type: 'facebook' },\n * ],\n * }\n * }\n */\n config: StytchLoginConfig;\n /**\n * An optional {@link PresentationConfig} to customize the UI presentation.\n */\n presentation?: PresentationConfig;\n /**\n * An optional {@link Callbacks} object.\n *\n * @example\n * {\n * onError: ({message}) => {\n * console.error('Stytch login screen error', message)\n * }\n * }\n *\n * @example\n * {\n * onEvent: ({type, data}) => {\n * if(type === StytchEventType.CryptoWalletAuthenticate) {\n * console.log('Logged in with crypto wallet', data);\n * }\n * }\n * }\n */\n callbacks?: Callbacks<TProjectConfiguration>;\n}\n\n/**\n * The Stytch Login Screen component.\n * This component can only be used with a Stytch UI Client\n * passed into the StytchProvider.\n *\n * See the {@link https://stytch.com/docs/sdks online reference}\n *\n * @example\n * <StytchLogin\n * config={{\n * products: [Products.emailMagicLinks, Products.oauth],\n * emailMagicLinksOptions: {\n * loginRedirectURL: 'https://example.com/authenticate',\n * signupRedirectURL: 'https://example.com/authenticate',\n * },\n * oauthOptions: {\n * providers: [{ type: OAuthProviders.Google }, { type: OAuthProviders.Microsoft }],\n * },\n * }}\n * presentation={{\n * theme: { primary: '#0577CA' },\n * options: {},\n * }}\n * callbacks={{\n * onEvent: (event) => console.log(event)\n * }}\n * />\n */\nexport const StytchLogin = createB2CComponent('StytchLogin', AppContainer);\n"],"names":["StytchLogin","createB2CComponent","AppContainer"],"mappings":";;;AAiEA;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BC,IACM,MAAMA,WAAAA,GAAcC,kBAAAA,CAAmB,eAAeC,YAAAA;;;;"}
1
+ {"version":3,"file":"StytchLogin.mjs","sources":["../../../../../../../../../web/src/ui/react/b2c/StytchLogin.tsx"],"sourcesContent":["import { Callbacks, StringsOptions, StytchProjectConfigurationInput } from '@stytch/core/public';\nimport { AppContainer } from '../../b2c/AppContainer';\nimport { PresentationConfig, StytchLoginConfig } from '../../../types';\nimport { createB2CComponent } from '../bindings/createB2CComponent';\n\nexport interface StytchProps<\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n> extends StringsOptions {\n /**\n * A {@link StytchLoginConfig} object. Add products and product-specific config to this object to change the login methods shown.\n *\n * @example\n * {\n * products: [Products.crypto, Products.otp]\n * }\n *\n * @example\n * {\n * products: [Products.emailMagicLinks]\n * emailMagicLinksOptions: {\n * loginRedirectURL: 'https://example.com/authenticate',\n * signupRedirectURL: 'https://example.com/authenticate',\n * }\n * }\n *\n * @example\n * {\n * products: [Products.oauth]\n * oauthOptions: {\n * providers: [\n * { type: 'google', one_tap: true, position: 'embedded' },\n * { type: 'microsoft' },\n * { type: 'apple' },\n * { type: 'facebook' },\n * ],\n * }\n * }\n */\n config: StytchLoginConfig;\n /**\n * An optional {@link PresentationConfig} to customize the UI presentation.\n */\n presentation?: PresentationConfig;\n /**\n * An optional {@link Callbacks} object.\n *\n * @example\n * {\n * onError: ({message}) => {\n * console.error('Stytch login screen error', message)\n * }\n * }\n *\n * @example\n * {\n * onEvent: ({type, data}) => {\n * if(type === StytchEventType.CryptoWalletAuthenticate) {\n * console.log('Logged in with crypto wallet', data);\n * }\n * }\n * }\n */\n callbacks?: Callbacks<TProjectConfiguration>;\n}\n\n/**\n * The Stytch Login Screen component.\n * This component can only be used with a Stytch UI Client\n * passed into the StytchProvider.\n *\n * See the {@link https://stytch.com/docs/sdks online reference}\n *\n * @example\n * <StytchLogin\n * config={{\n * products: [Products.emailMagicLinks, Products.oauth],\n * emailMagicLinksOptions: {\n * loginRedirectURL: 'https://example.com/authenticate',\n * signupRedirectURL: 'https://example.com/authenticate',\n * },\n * oauthOptions: {\n * providers: [{ type: OAuthProviders.Google }, { type: OAuthProviders.Microsoft }],\n * },\n * }}\n * presentation={{\n * theme: { primary: '#0577CA' },\n * options: {},\n * }}\n * callbacks={{\n * onEvent: (event) => console.log(event)\n * }}\n * />\n */\nexport const StytchLogin = /* @__PURE__ */ createB2CComponent('StytchLogin', AppContainer);\n"],"names":["StytchLogin","createB2CComponent","AppContainer"],"mappings":";;;AAiEA;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BC,IACM,MAAMA,WAAAA,mBAA8BC,kBAAAA,CAAmB,eAAeC,YAAAA;;;;"}
@@ -18,7 +18,7 @@ import { createB2CComponent } from '../bindings/createB2CComponent.mjs';
18
18
  * onEvent: (event) => console.log(event)
19
19
  * }}
20
20
  * />
21
- */ const StytchPasskeyRegistration = createB2CComponent('StytchPasskeyRegistration', PasskeyRegistrationContainer);
21
+ */ const StytchPasskeyRegistration = /* @__PURE__ */ createB2CComponent('StytchPasskeyRegistration', PasskeyRegistrationContainer);
22
22
 
23
23
  export { StytchPasskeyRegistration };
24
24
  //# sourceMappingURL=StytchPasskeyRegistration.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"StytchPasskeyRegistration.mjs","sources":["../../../../../../../../../web/src/ui/react/b2c/StytchPasskeyRegistration.tsx"],"sourcesContent":["import { PasskeyRegistrationContainer } from '../../b2c/PasskeyRegistrationContainer';\nimport { createB2CComponent } from '../bindings/createB2CComponent';\n\n/**\n * The Stytch Passkey Registration component.\n * This component can only be used with a Stytch UI Client\n * passed into the StytchProvider.\n *\n * See the {@link https://stytch.com/docs/sdks online reference}\n *\n * @example\n * <StytchPasskeyRegistration\n * presentation={{\n * theme: { primary: '#ff00f7' },\n * options: {},\n * }}\n * callbacks={{\n * onEvent: (event) => console.log(event)\n * }}\n * />\n */\nexport const StytchPasskeyRegistration = createB2CComponent('StytchPasskeyRegistration', PasskeyRegistrationContainer);\n"],"names":["StytchPasskeyRegistration","createB2CComponent","PasskeyRegistrationContainer"],"mappings":";;;AAGA;;;;;;;;;;;;;;;;;AAiBC,IACM,MAAMA,yBAAAA,GAA4BC,kBAAAA,CAAmB,6BAA6BC,4BAAAA;;;;"}
1
+ {"version":3,"file":"StytchPasskeyRegistration.mjs","sources":["../../../../../../../../../web/src/ui/react/b2c/StytchPasskeyRegistration.tsx"],"sourcesContent":["import { PasskeyRegistrationContainer } from '../../b2c/PasskeyRegistrationContainer';\nimport { createB2CComponent } from '../bindings/createB2CComponent';\n\n/**\n * The Stytch Passkey Registration component.\n * This component can only be used with a Stytch UI Client\n * passed into the StytchProvider.\n *\n * See the {@link https://stytch.com/docs/sdks online reference}\n *\n * @example\n * <StytchPasskeyRegistration\n * presentation={{\n * theme: { primary: '#ff00f7' },\n * options: {},\n * }}\n * callbacks={{\n * onEvent: (event) => console.log(event)\n * }}\n * />\n */\nexport const StytchPasskeyRegistration = /* @__PURE__ */ createB2CComponent(\n 'StytchPasskeyRegistration',\n PasskeyRegistrationContainer,\n);\n"],"names":["StytchPasskeyRegistration","createB2CComponent","PasskeyRegistrationContainer"],"mappings":";;;AAGA;;;;;;;;;;;;;;;;;AAiBC,IACM,MAAMA,yBAAAA,mBAA4CC,kBAAAA,CACvD,6BACAC,4BAAAA;;;;"}
@@ -26,7 +26,7 @@ import { createB2CComponent } from '../bindings/createB2CComponent.mjs';
26
26
  * onEvent: (event) => console.log(event)
27
27
  * }}
28
28
  * />
29
- */ const StytchPasswordReset = createB2CComponent('StytchPasswordReset', ResetPasswordContainer);
29
+ */ const StytchPasswordReset = /* @__PURE__ */ createB2CComponent('StytchPasswordReset', ResetPasswordContainer);
30
30
 
31
31
  export { StytchPasswordReset };
32
32
  //# sourceMappingURL=StytchPasswordReset.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"StytchPasswordReset.mjs","sources":["../../../../../../../../../web/src/ui/react/b2c/StytchPasswordReset.tsx"],"sourcesContent":["import { StytchProjectConfigurationInput } from '@stytch/core/public';\nimport { ResetPasswordContainer } from '../../b2c/ResetPasswordContainer';\nimport { createB2CComponent } from '../bindings/createB2CComponent';\nimport { StytchProps } from './StytchLogin';\n\nexport interface StytchResetPasswordProps<\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n> extends StytchProps<TProjectConfiguration> {\n /**\n * A Stytch password reset token.\n */\n passwordResetToken: string;\n}\n\n/**\n * The Stytch Reset Password component.\n * This component can only be used with a Stytch UI Client\n * passed into the StytchProvider.\n *\n * See the {@link https://stytch.com/docs/sdks online reference}\n *\n * @example\n * <StytchPasswordReset\n * config={{\n * products: [Products.passwords],\n * passwordOptions: {\n * loginRedirectURL: '${exampleURL}/authenticate',\n * resetPasswordRedirectURL: '${exampleURL}/authenticate',\n * },\n * }}\n * passwordResetToken=\"PvC5UudZ7TPZbELt95yXAQ-8MeEUCRob8bUQ-g52fIJs\"\n * presentation={{\n * theme: { primary: '#0577CA' },\n * options: {},\n * }}\n * callbacks={{\n * onEvent: (event) => console.log(event)\n * }}\n * />\n */\nexport const StytchPasswordReset = createB2CComponent('StytchPasswordReset', ResetPasswordContainer);\n"],"names":["StytchPasswordReset","createB2CComponent","ResetPasswordContainer"],"mappings":";;;AAcA;;;;;;;;;;;;;;;;;;;;;;;;;AAyBC,IACM,MAAMA,mBAAAA,GAAsBC,kBAAAA,CAAmB,uBAAuBC,sBAAAA;;;;"}
1
+ {"version":3,"file":"StytchPasswordReset.mjs","sources":["../../../../../../../../../web/src/ui/react/b2c/StytchPasswordReset.tsx"],"sourcesContent":["import { StytchProjectConfigurationInput } from '@stytch/core/public';\nimport { ResetPasswordContainer } from '../../b2c/ResetPasswordContainer';\nimport { createB2CComponent } from '../bindings/createB2CComponent';\nimport { StytchProps } from './StytchLogin';\n\nexport interface StytchResetPasswordProps<\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n> extends StytchProps<TProjectConfiguration> {\n /**\n * A Stytch password reset token.\n */\n passwordResetToken: string;\n}\n\n/**\n * The Stytch Reset Password component.\n * This component can only be used with a Stytch UI Client\n * passed into the StytchProvider.\n *\n * See the {@link https://stytch.com/docs/sdks online reference}\n *\n * @example\n * <StytchPasswordReset\n * config={{\n * products: [Products.passwords],\n * passwordOptions: {\n * loginRedirectURL: '${exampleURL}/authenticate',\n * resetPasswordRedirectURL: '${exampleURL}/authenticate',\n * },\n * }}\n * passwordResetToken=\"PvC5UudZ7TPZbELt95yXAQ-8MeEUCRob8bUQ-g52fIJs\"\n * presentation={{\n * theme: { primary: '#0577CA' },\n * options: {},\n * }}\n * callbacks={{\n * onEvent: (event) => console.log(event)\n * }}\n * />\n */\nexport const StytchPasswordReset = /* @__PURE__ */ createB2CComponent('StytchPasswordReset', ResetPasswordContainer);\n"],"names":["StytchPasswordReset","createB2CComponent","ResetPasswordContainer"],"mappings":";;;AAcA;;;;;;;;;;;;;;;;;;;;;;;;;AAyBC,IACM,MAAMA,mBAAAA,mBAAsCC,kBAAAA,CAAmB,uBAAuBC,sBAAAA;;;;"}
@@ -1,8 +1,12 @@
1
+ import { RUN_IN_DEV } from '../../../../../core/src/utils/dev.mjs';
2
+
1
3
  // The strings in this file are only for developers
2
- /* eslint-disable lingui/no-unlocalized-strings */ function serverRenderError(name) {
3
- if (typeof window === 'undefined') {
4
- throw new Error(`<${name} /> cannot be rendered on the server. If you are using Next.js, use the @stytch/nextjs package or 'use client' directives`);
5
- }
4
+ function serverRenderError(name) {
5
+ RUN_IN_DEV(()=>{
6
+ if (typeof window === 'undefined') {
7
+ throw new Error(`<${name} /> cannot be rendered on the server. If you are using Next.js, use the @stytch/nextjs package or 'use client' directives`);
8
+ }
9
+ });
6
10
  }
7
11
  const noProviderError = (item, provider = 'StytchProvider')=>`${item} can only be used inside <${provider}>.`;
8
12
  const providerMustBeUniqueError = 'You cannot render a <StytchProvider> inside another <StytchProvider>.';
@@ -1 +1 @@
1
- {"version":3,"file":"errors.mjs","sources":["../../../../../../../../../web/src/ui/react/utils/errors.ts"],"sourcesContent":["// The strings in this file are only for developers\n/* eslint-disable lingui/no-unlocalized-strings */\n\nexport function serverRenderError(name: string) {\n if (process.env.NODE_ENV !== 'production' && typeof window === 'undefined') {\n throw new Error(\n `<${name} /> cannot be rendered on the server. If you are using Next.js, use the @stytch/nextjs package or 'use client' directives`,\n );\n }\n}\n\nexport const noProviderError = (item: string, provider = 'StytchProvider'): string =>\n `${item} can only be used inside <${provider}>.`;\n\nexport const providerMustBeUniqueError = 'You cannot render a <StytchProvider> inside another <StytchProvider>.';\n\nexport const cannotInvokeMethodOnServerError = (path: string) =>\n process.env.NODE_ENV === 'production'\n ? `[Stytch] Invalid server-side function call to ${path}`\n : `[Stytch] Invalid server-side function call to ${path}.\nThe Stytch JavaScript SDK is intended to only be used on the client side.\nMake sure to wrap your API calls in a hook to ensure they are executed on the client.\n\n\\`\\`\\`\nconst myComponent = () => {\n const stytch = useStytch();\n // This will error out on the server.\n stytch.magicLinks.authenticate(...);\n useEffect(() => {\n // This will work well\n stytch.magicLinks.authenticate(...);\n }, []);\n}\n\\`\\`\\`\n\nIf you want to make API calls from server environments, please use the Stytch Node Library\nhttps://www.npmjs.com/package/stytch.`;\n"],"names":["serverRenderError","name","window","Error","noProviderError","item","provider","providerMustBeUniqueError","cannotInvokeMethodOnServerError","path"],"mappings":"AAAA;AACA,mDAEO,SAASA,iBAAAA,CAAkBC,IAAY,EAAA;AAC5C,IAAA,IAA6C,OAAOC,MAAAA,KAAW,WAAA,EAAa;AAC1E,QAAA,MAAM,IAAIC,KAAAA,CACR,CAAC,CAAC,EAAEF,IAAAA,CAAK,yHAAyH,CAAC,CAAA;AAEvI,IAAA;AACF;AAEO,MAAMG,eAAAA,GAAkB,CAACC,IAAAA,EAAcC,WAAW,gBAAgB,GACvE,CAAA,EAAGD,IAAAA,CAAK,0BAA0B,EAAEC,QAAAA,CAAS,EAAE;AAE1C,MAAMC,4BAA4B;AAElC,MAAMC,+BAAAA,GAAkC,CAACC,IAAAA,GAG1C,CAAC,8CAA8C,EAAEA,IAAAA,CAAK;;;;;;;;;;;;;;;;;AAiBvB,qCAAA;;;;"}
1
+ {"version":3,"file":"errors.mjs","sources":["../../../../../../../../../web/src/ui/react/utils/errors.ts"],"sourcesContent":["// The strings in this file are only for developers\n/* eslint-disable lingui/no-unlocalized-strings */\n\nimport { RUN_IN_DEV } from '@stytch/core';\n\nexport function serverRenderError(name: string) {\n RUN_IN_DEV(() => {\n if (typeof window === 'undefined') {\n throw new Error(\n `<${name} /> cannot be rendered on the server. If you are using Next.js, use the @stytch/nextjs package or 'use client' directives`,\n );\n }\n });\n}\n\nexport const noProviderError = (item: string, provider = 'StytchProvider'): string =>\n `${item} can only be used inside <${provider}>.`;\n\nexport const providerMustBeUniqueError = 'You cannot render a <StytchProvider> inside another <StytchProvider>.';\n\nexport const cannotInvokeMethodOnServerError = (path: string) =>\n process.env.NODE_ENV === 'production'\n ? `[Stytch] Invalid server-side function call to ${path}`\n : `[Stytch] Invalid server-side function call to ${path}.\nThe Stytch JavaScript SDK is intended to only be used on the client side.\nMake sure to wrap your API calls in a hook to ensure they are executed on the client.\n\n\\`\\`\\`\nconst myComponent = () => {\n const stytch = useStytch();\n // This will error out on the server.\n stytch.magicLinks.authenticate(...);\n useEffect(() => {\n // This will work well\n stytch.magicLinks.authenticate(...);\n }, []);\n}\n\\`\\`\\`\n\nIf you want to make API calls from server environments, please use the Stytch Node Library\nhttps://www.npmjs.com/package/stytch.`;\n"],"names":["serverRenderError","name","RUN_IN_DEV","window","Error","noProviderError","item","provider","providerMustBeUniqueError","cannotInvokeMethodOnServerError","path"],"mappings":";;AAAA;AAKO,SAASA,kBAAkBC,IAAY,EAAA;IAC5CC,UAAAA,CAAW,IAAA;QACT,IAAI,OAAOC,WAAW,WAAA,EAAa;AACjC,YAAA,MAAM,IAAIC,KAAAA,CACR,CAAC,CAAC,EAAEH,IAAAA,CAAK,yHAAyH,CAAC,CAAA;AAEvI,QAAA;AACF,IAAA,CAAA,CAAA;AACF;AAEO,MAAMI,eAAAA,GAAkB,CAACC,IAAAA,EAAcC,WAAW,gBAAgB,GACvE,CAAA,EAAGD,IAAAA,CAAK,0BAA0B,EAAEC,QAAAA,CAAS,EAAE;AAE1C,MAAMC,4BAA4B;AAElC,MAAMC,+BAAAA,GAAkC,CAACC,IAAAA,GAG1C,CAAC,8CAA8C,EAAEA,IAAAA,CAAK;;;;;;;;;;;;;;;;;AAiBvB,qCAAA;;;;"}
@@ -1,11 +1,7 @@
1
+ import { b as bs58Exports } from '../../../../_virtual/index4.mjs';
1
2
  import 'react';
2
- import { b as bs58Exports } from '../../../../_virtual/index3.mjs';
3
3
  import { GenericWalletIcon } from '../assets/genericWallet.mjs';
4
- import '../assets/logo.module.css.mjs';
5
- import { BinanceIcon } from '../assets/logo-color/Binance.mjs';
6
- import { CoinbaseIcon } from '../assets/logo-color/Coinbase.mjs';
7
- import { MetamaskIcon } from '../assets/logo-color/Metamask.mjs';
8
- import { PhantomIcon } from '../assets/logo-color/Phantom.mjs';
4
+ import { usePresentation } from '../ui/components/PresentationConfig.mjs';
9
5
  import { Wallets } from '../../../core/src/public/ui.mjs';
10
6
 
11
7
  const hasMultipleEthereumWallets = ()=>!!window.ethereum?.providers;
@@ -15,13 +11,18 @@ const hasOtherEthereumWallet = ()=>!hasMetaMask() && !hasCoinbaseWallet() && !!w
15
11
  const getMetaMaskProvider = ()=>hasMultipleEthereumWallets() ? window.ethereum.providers?.find((wallet)=>wallet.isMetaMask) : window.ethereum;
16
12
  const getCoinbaseProvider = ()=>hasMultipleEthereumWallets() ? window.ethereum.providers?.find((wallet)=>wallet.isCoinbaseWallet) : window.ethereum;
17
13
  const getOtherInjectedProvider = ()=>window.ethereum.providers?.find((wallet)=>!wallet.isCoinbaseWallet && !wallet.isMetaMask);
18
- const WalletToIcon = {
19
- [Wallets.Phantom]: PhantomIcon,
20
- [Wallets.Binance]: BinanceIcon,
21
- [Wallets.Coinbase]: CoinbaseIcon,
22
- [Wallets.Metamask]: MetamaskIcon,
23
- [Wallets.GenericEthereumWallet]: GenericWalletIcon,
24
- [Wallets.GenericSolanaWallet]: GenericWalletIcon
14
+ const walletIcons = {
15
+ [Wallets.Phantom]: 'phantom',
16
+ [Wallets.Binance]: 'binance',
17
+ [Wallets.Coinbase]: 'coinbase',
18
+ [Wallets.Metamask]: 'metamask'
19
+ };
20
+ const useCryptoIcon = ()=>{
21
+ const iconRegistry = usePresentation().iconRegistry;
22
+ return (wallet)=>{
23
+ const iconName = walletIcons[wallet];
24
+ return iconName ? iconRegistry[iconName] : GenericWalletIcon;
25
+ };
25
26
  };
26
27
  const WalletToText = {
27
28
  [Wallets.Phantom]: {
@@ -167,5 +168,5 @@ const isSolanaWallet = (wallet)=>{
167
168
  return solanaWallets.includes(wallet);
168
169
  };
169
170
 
170
- export { WalletToIcon, WalletToText, connectWithWallet, isSolanaWallet, isWalletVisible, signMessageWithWallet };
171
+ export { WalletToText, connectWithWallet, isSolanaWallet, isWalletVisible, signMessageWithWallet, useCryptoIcon, walletIcons };
171
172
  //# sourceMappingURL=crypto.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"crypto.mjs","sources":["../../../../../../../web/src/utils/crypto.tsx"],"sourcesContent":["import { MessageDescriptor } from '@lingui/core';\nimport { msg } from '@lingui/core/macro';\nimport * as React from 'react';\nimport { Wallets } from '@stytch/core/public';\nimport { encode } from 'bs58';\n\nimport { GenericWalletIcon } from '../assets';\nimport { PhantomIcon, MetamaskIcon, BinanceIcon, CoinbaseIcon } from '../assets/logo-color';\n\ntype ProviderRequest = ({\n method,\n params,\n}: {\n method: 'eth_requestAccounts' | 'personal_sign';\n params?: string[];\n}) => string[] | string;\n\ntype ETHProvider = {\n isMetaMask?: boolean;\n isCoinbaseWallet?: boolean;\n request: ProviderRequest;\n};\n\ndeclare global {\n interface Window {\n solana: {\n isPhantom?: boolean;\n connect: () => { publicKey: { toString: () => string } };\n request: ({\n method,\n params,\n }: {\n method: 'signMessage';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n params: Record<string, any>;\n }) => { signature: Uint8Array };\n };\n\n ethereum: {\n isMetaMask?: boolean;\n isCoinbaseWallet?: boolean;\n request?: ({ method, params }: { method: string; params?: string[] }) => string[] | string;\n providers?: ETHProvider[];\n };\n\n BinanceChain: { request: ProviderRequest };\n }\n}\n\nconst hasMultipleEthereumWallets = () => !!window.ethereum?.providers;\n\nconst hasMetaMask = () =>\n !!(hasMultipleEthereumWallets()\n ? window.ethereum.providers?.find((wallet) => wallet.isMetaMask)\n : window.ethereum.isMetaMask);\n\nconst hasCoinbaseWallet = () =>\n !!(hasMultipleEthereumWallets()\n ? window.ethereum.providers?.find((wallet) => wallet.isCoinbaseWallet)\n : window.ethereum?.isCoinbaseWallet);\n\nconst hasOtherEthereumWallet = () => !hasMetaMask() && !hasCoinbaseWallet() && !!window.ethereum;\n\nconst getMetaMaskProvider = () =>\n hasMultipleEthereumWallets() ? window.ethereum.providers?.find((wallet) => wallet.isMetaMask) : window.ethereum;\n\nconst getCoinbaseProvider = () =>\n hasMultipleEthereumWallets() ? window.ethereum.providers?.find((wallet) => wallet.isCoinbaseWallet) : window.ethereum;\n\nconst getOtherInjectedProvider = () =>\n window.ethereum.providers?.find((wallet) => !wallet.isCoinbaseWallet && !wallet.isMetaMask);\n\nexport const WalletToIcon: Record<Wallets, React.FC> = {\n [Wallets.Phantom]: PhantomIcon,\n [Wallets.Binance]: BinanceIcon,\n [Wallets.Coinbase]: CoinbaseIcon,\n [Wallets.Metamask]: MetamaskIcon,\n [Wallets.GenericEthereumWallet]: GenericWalletIcon,\n [Wallets.GenericSolanaWallet]: GenericWalletIcon,\n};\n\nexport const WalletToText: Record<Wallets, MessageDescriptor> = {\n [Wallets.Phantom]: msg({ id: 'crypto.wallet.phantom', message: 'Phantom' }),\n [Wallets.Binance]: msg({ id: 'crypto.wallet.binance', message: 'Binance' }),\n [Wallets.Coinbase]: msg({ id: 'crypto.wallet.coinbase', message: 'Coinbase' }),\n [Wallets.Metamask]: msg({ id: 'crypto.wallet.metamask', message: 'Metamask' }),\n [Wallets.GenericEthereumWallet]: msg({ id: 'crypto.wallet.otherEthereum', message: 'Other Ethereum Wallet' }),\n [Wallets.GenericSolanaWallet]: msg({ id: 'crypto.wallet.otherSolana', message: 'Other Solana Wallet' }),\n};\n\nexport const isWalletVisible = (wallet: Wallets): boolean => {\n switch (wallet) {\n case Wallets.Metamask:\n return !!window.ethereum && hasMetaMask();\n case Wallets.Phantom:\n return (!!window.solana && window.solana?.isPhantom) ?? false;\n case Wallets.Binance:\n return !!window.BinanceChain;\n case Wallets.Coinbase:\n return !!window.ethereum && hasCoinbaseWallet();\n case Wallets.GenericEthereumWallet:\n return !!window.ethereum && hasOtherEthereumWallet();\n case Wallets.GenericSolanaWallet:\n return !!window.solana && !window.solana.isPhantom;\n default:\n return false;\n }\n};\n\nconst connectWithEthereumProvider = async (request: ProviderRequest): Promise<string> => {\n const [address] = await request({\n method: 'eth_requestAccounts',\n });\n return address;\n};\n\nexport const connectWithWallet = async ({ wallet }: { wallet: Wallets }): Promise<string> => {\n switch (wallet) {\n case Wallets.Metamask: {\n const provider = getMetaMaskProvider();\n return provider?.request ? connectWithEthereumProvider(provider?.request) : '';\n }\n case Wallets.Phantom: {\n const connectResp = await window.solana.connect();\n return connectResp.publicKey.toString();\n }\n case Wallets.Binance: {\n const provider = window.BinanceChain;\n return provider?.request ? connectWithEthereumProvider(provider?.request) : '';\n }\n case Wallets.Coinbase: {\n const provider = getCoinbaseProvider();\n return provider?.request ? connectWithEthereumProvider(provider?.request) : '';\n }\n case Wallets.GenericEthereumWallet: {\n const provider = getOtherInjectedProvider();\n return provider?.request ? connectWithEthereumProvider(provider?.request) : '';\n }\n case Wallets.GenericSolanaWallet: {\n const connectResp = await window.solana.connect();\n return connectResp.publicKey.toString();\n }\n default:\n return '';\n }\n};\n\nconst signMessageWithSolanaProvider = async (message: string): Promise<string> => {\n const encodedMessage = new TextEncoder().encode(message);\n const signResp = await window.solana.request({\n method: 'signMessage',\n params: {\n message: encodedMessage,\n display: 'utf8',\n },\n });\n return encode(signResp.signature);\n};\n\nconst signMessageWithEthereumProvider = async (\n request: ProviderRequest,\n message: string,\n address: string,\n): Promise<string> => {\n const signature = await request({\n method: 'personal_sign',\n params: [message, address],\n });\n return signature as string;\n};\n\nexport const signMessageWithWallet = async ({\n wallet,\n message,\n address,\n}: {\n wallet: Wallets;\n message: string;\n address: string;\n}): Promise<string> => {\n switch (wallet) {\n case Wallets.Phantom:\n case Wallets.GenericSolanaWallet:\n return signMessageWithSolanaProvider(message);\n case Wallets.Metamask: {\n const provider = getMetaMaskProvider();\n return provider?.request ? signMessageWithEthereumProvider(provider?.request, message, address) : '';\n }\n case Wallets.Binance: {\n const provider = window.BinanceChain;\n return provider?.request ? signMessageWithEthereumProvider(provider?.request, message, address) : '';\n }\n case Wallets.Coinbase: {\n const provider = getCoinbaseProvider();\n return provider?.request ? signMessageWithEthereumProvider(provider?.request, message, address) : '';\n }\n case Wallets.GenericEthereumWallet: {\n const provider = getOtherInjectedProvider();\n return provider?.request ? signMessageWithEthereumProvider(provider?.request, message, address) : '';\n }\n default:\n return '';\n }\n};\n\nexport const isSolanaWallet = (wallet: Wallets) => {\n const solanaWallets: Wallets[] = [Wallets.Phantom, Wallets.GenericSolanaWallet];\n return solanaWallets.includes(wallet);\n};\n\nexport const isEthereumWallet = (wallet: Wallets) => {\n const ethWallets: Wallets[] = [Wallets.Binance, Wallets.GenericEthereumWallet, Wallets.Coinbase, Wallets.Metamask];\n return ethWallets.includes(wallet);\n};\n"],"names":["hasMultipleEthereumWallets","window","ethereum","providers","hasMetaMask","find","wallet","isMetaMask","hasCoinbaseWallet","isCoinbaseWallet","hasOtherEthereumWallet","getMetaMaskProvider","getCoinbaseProvider","getOtherInjectedProvider","WalletToIcon","Wallets","Phantom","PhantomIcon","Binance","BinanceIcon","Coinbase","CoinbaseIcon","Metamask","MetamaskIcon","GenericEthereumWallet","GenericWalletIcon","GenericSolanaWallet","WalletToText","isWalletVisible","solana","isPhantom","BinanceChain","connectWithEthereumProvider","request","address","method","connectWithWallet","provider","connectResp","connect","publicKey","toString","signMessageWithSolanaProvider","message","encodedMessage","TextEncoder","encode","signResp","params","display","signature","signMessageWithEthereumProvider","signMessageWithWallet","isSolanaWallet","solanaWallets","includes"],"mappings":"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"}
1
+ {"version":3,"file":"crypto.mjs","sources":["../../../../../../../web/src/utils/crypto.tsx"],"sourcesContent":["import { MessageDescriptor } from '@lingui/core';\nimport { msg } from '@lingui/core/macro';\nimport { Wallets } from '@stytch/core/public';\nimport { encode } from 'bs58';\n\nimport { GenericWalletIcon } from '../assets';\nimport { cryptoIcons } from '../ui/b2c/components/Icons';\nimport { IconRegistry } from '../ui/components/IconRegistry';\nimport { usePresentation } from '../ui/components/PresentationConfig';\n\ntype ProviderRequest = ({\n method,\n params,\n}: {\n method: 'eth_requestAccounts' | 'personal_sign';\n params?: string[];\n}) => string[] | string;\n\ntype ETHProvider = {\n isMetaMask?: boolean;\n isCoinbaseWallet?: boolean;\n request: ProviderRequest;\n};\n\ndeclare global {\n interface Window {\n solana: {\n isPhantom?: boolean;\n connect: () => { publicKey: { toString: () => string } };\n request: ({\n method,\n params,\n }: {\n method: 'signMessage';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n params: Record<string, any>;\n }) => { signature: Uint8Array };\n };\n\n ethereum: {\n isMetaMask?: boolean;\n isCoinbaseWallet?: boolean;\n request?: ({ method, params }: { method: string; params?: string[] }) => string[] | string;\n providers?: ETHProvider[];\n };\n\n BinanceChain: { request: ProviderRequest };\n }\n}\n\nconst hasMultipleEthereumWallets = () => !!window.ethereum?.providers;\n\nconst hasMetaMask = () =>\n !!(hasMultipleEthereumWallets()\n ? window.ethereum.providers?.find((wallet) => wallet.isMetaMask)\n : window.ethereum.isMetaMask);\n\nconst hasCoinbaseWallet = () =>\n !!(hasMultipleEthereumWallets()\n ? window.ethereum.providers?.find((wallet) => wallet.isCoinbaseWallet)\n : window.ethereum?.isCoinbaseWallet);\n\nconst hasOtherEthereumWallet = () => !hasMetaMask() && !hasCoinbaseWallet() && !!window.ethereum;\n\nconst getMetaMaskProvider = () =>\n hasMultipleEthereumWallets() ? window.ethereum.providers?.find((wallet) => wallet.isMetaMask) : window.ethereum;\n\nconst getCoinbaseProvider = () =>\n hasMultipleEthereumWallets() ? window.ethereum.providers?.find((wallet) => wallet.isCoinbaseWallet) : window.ethereum;\n\nconst getOtherInjectedProvider = () =>\n window.ethereum.providers?.find((wallet) => !wallet.isCoinbaseWallet && !wallet.isMetaMask);\n\ntype CryptoIcon = keyof typeof cryptoIcons;\nexport const walletIcons: Partial<Record<Wallets, CryptoIcon>> = {\n [Wallets.Phantom]: 'phantom',\n [Wallets.Binance]: 'binance',\n [Wallets.Coinbase]: 'coinbase',\n [Wallets.Metamask]: 'metamask',\n};\n\nexport const useCryptoIcon = () => {\n const iconRegistry: IconRegistry<CryptoIcon> = usePresentation().iconRegistry;\n return (wallet: Wallets) => {\n const iconName = walletIcons[wallet];\n return iconName ? iconRegistry[iconName] : GenericWalletIcon;\n };\n};\n\nexport const WalletToText: Record<Wallets, MessageDescriptor> = {\n [Wallets.Phantom]: msg({ id: 'crypto.wallet.phantom', message: 'Phantom' }),\n [Wallets.Binance]: msg({ id: 'crypto.wallet.binance', message: 'Binance' }),\n [Wallets.Coinbase]: msg({ id: 'crypto.wallet.coinbase', message: 'Coinbase' }),\n [Wallets.Metamask]: msg({ id: 'crypto.wallet.metamask', message: 'Metamask' }),\n [Wallets.GenericEthereumWallet]: msg({ id: 'crypto.wallet.otherEthereum', message: 'Other Ethereum Wallet' }),\n [Wallets.GenericSolanaWallet]: msg({ id: 'crypto.wallet.otherSolana', message: 'Other Solana Wallet' }),\n};\n\nexport const isWalletVisible = (wallet: Wallets): boolean => {\n switch (wallet) {\n case Wallets.Metamask:\n return !!window.ethereum && hasMetaMask();\n case Wallets.Phantom:\n return (!!window.solana && window.solana?.isPhantom) ?? false;\n case Wallets.Binance:\n return !!window.BinanceChain;\n case Wallets.Coinbase:\n return !!window.ethereum && hasCoinbaseWallet();\n case Wallets.GenericEthereumWallet:\n return !!window.ethereum && hasOtherEthereumWallet();\n case Wallets.GenericSolanaWallet:\n return !!window.solana && !window.solana.isPhantom;\n default:\n return false;\n }\n};\n\nconst connectWithEthereumProvider = async (request: ProviderRequest): Promise<string> => {\n const [address] = await request({\n method: 'eth_requestAccounts',\n });\n return address;\n};\n\nexport const connectWithWallet = async ({ wallet }: { wallet: Wallets }): Promise<string> => {\n switch (wallet) {\n case Wallets.Metamask: {\n const provider = getMetaMaskProvider();\n return provider?.request ? connectWithEthereumProvider(provider?.request) : '';\n }\n case Wallets.Phantom: {\n const connectResp = await window.solana.connect();\n return connectResp.publicKey.toString();\n }\n case Wallets.Binance: {\n const provider = window.BinanceChain;\n return provider?.request ? connectWithEthereumProvider(provider?.request) : '';\n }\n case Wallets.Coinbase: {\n const provider = getCoinbaseProvider();\n return provider?.request ? connectWithEthereumProvider(provider?.request) : '';\n }\n case Wallets.GenericEthereumWallet: {\n const provider = getOtherInjectedProvider();\n return provider?.request ? connectWithEthereumProvider(provider?.request) : '';\n }\n case Wallets.GenericSolanaWallet: {\n const connectResp = await window.solana.connect();\n return connectResp.publicKey.toString();\n }\n default:\n return '';\n }\n};\n\nconst signMessageWithSolanaProvider = async (message: string): Promise<string> => {\n const encodedMessage = new TextEncoder().encode(message);\n const signResp = await window.solana.request({\n method: 'signMessage',\n params: {\n message: encodedMessage,\n display: 'utf8',\n },\n });\n return encode(signResp.signature);\n};\n\nconst signMessageWithEthereumProvider = async (\n request: ProviderRequest,\n message: string,\n address: string,\n): Promise<string> => {\n const signature = await request({\n method: 'personal_sign',\n params: [message, address],\n });\n return signature as string;\n};\n\nexport const signMessageWithWallet = async ({\n wallet,\n message,\n address,\n}: {\n wallet: Wallets;\n message: string;\n address: string;\n}): Promise<string> => {\n switch (wallet) {\n case Wallets.Phantom:\n case Wallets.GenericSolanaWallet:\n return signMessageWithSolanaProvider(message);\n case Wallets.Metamask: {\n const provider = getMetaMaskProvider();\n return provider?.request ? signMessageWithEthereumProvider(provider?.request, message, address) : '';\n }\n case Wallets.Binance: {\n const provider = window.BinanceChain;\n return provider?.request ? signMessageWithEthereumProvider(provider?.request, message, address) : '';\n }\n case Wallets.Coinbase: {\n const provider = getCoinbaseProvider();\n return provider?.request ? signMessageWithEthereumProvider(provider?.request, message, address) : '';\n }\n case Wallets.GenericEthereumWallet: {\n const provider = getOtherInjectedProvider();\n return provider?.request ? signMessageWithEthereumProvider(provider?.request, message, address) : '';\n }\n default:\n return '';\n }\n};\n\nexport const isSolanaWallet = (wallet: Wallets) => {\n const solanaWallets: Wallets[] = [Wallets.Phantom, Wallets.GenericSolanaWallet];\n return solanaWallets.includes(wallet);\n};\n\nexport const isEthereumWallet = (wallet: Wallets) => {\n const ethWallets: Wallets[] = [Wallets.Binance, Wallets.GenericEthereumWallet, Wallets.Coinbase, Wallets.Metamask];\n return ethWallets.includes(wallet);\n};\n"],"names":["hasMultipleEthereumWallets","window","ethereum","providers","hasMetaMask","find","wallet","isMetaMask","hasCoinbaseWallet","isCoinbaseWallet","hasOtherEthereumWallet","getMetaMaskProvider","getCoinbaseProvider","getOtherInjectedProvider","walletIcons","Wallets","Phantom","Binance","Coinbase","Metamask","useCryptoIcon","iconRegistry","usePresentation","iconName","GenericWalletIcon","WalletToText","GenericEthereumWallet","GenericSolanaWallet","isWalletVisible","solana","isPhantom","BinanceChain","connectWithEthereumProvider","request","address","method","connectWithWallet","provider","connectResp","connect","publicKey","toString","signMessageWithSolanaProvider","message","encodedMessage","TextEncoder","encode","signResp","params","display","signature","signMessageWithEthereumProvider","signMessageWithWallet","isSolanaWallet","solanaWallets","includes"],"mappings":"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"}
@@ -10,7 +10,7 @@ const getParamsFromB2BOAuthProviderConfig = (provider)=>{
10
10
  providerType = provider;
11
11
  } else {
12
12
  providerType = provider.type;
13
- if (provider.type === B2BOAuthProviders.Google && 'one_tap' in provider) {
13
+ if (provider.type === B2BOAuthProviders.Google && provider.one_tap) {
14
14
  oneTap = provider.one_tap;
15
15
  cancelOnTapOutside = provider.cancel_on_tap_outside;
16
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"oauthProviderType.mjs","sources":["../../../../../../../web/src/utils/oauthProviderType.ts"],"sourcesContent":["import { B2BOAuthProviderConfig, B2BOAuthProviders } from '@stytch/core/public';\n\nexport const getParamsFromB2BOAuthProviderConfig = (provider: B2BOAuthProviderConfig) => {\n let providerType: B2BOAuthProviders;\n let oneTap = false;\n let customScopes: string[] = [];\n let providerParams: Record<string, string> = {};\n let cancelOnTapOutside: boolean | undefined = undefined;\n if (typeof provider === 'string') {\n providerType = provider;\n } else {\n providerType = provider.type;\n if (provider.type === B2BOAuthProviders.Google && 'one_tap' in provider) {\n oneTap = provider.one_tap;\n cancelOnTapOutside = provider.cancel_on_tap_outside;\n }\n customScopes = provider.customScopes || [];\n providerParams = provider.providerParams || {};\n }\n return {\n type: providerType,\n one_tap: oneTap,\n customScopes,\n providerParams,\n cancel_on_tap_outside: cancelOnTapOutside,\n };\n};\n"],"names":["getParamsFromB2BOAuthProviderConfig","provider","providerType","oneTap","customScopes","providerParams","cancelOnTapOutside","undefined","type","B2BOAuthProviders","Google","one_tap","cancel_on_tap_outside"],"mappings":";;AAEO,MAAMA,sCAAsC,CAACC,QAAAA,GAAAA;IAClD,IAAIC,YAAAA;AACJ,IAAA,IAAIC,MAAAA,GAAS,KAAA;AACb,IAAA,IAAIC,eAAyB,EAAE;AAC/B,IAAA,IAAIC,iBAAyC,EAAC;AAC9C,IAAA,IAAIC,kBAAAA,GAA0CC,SAAAA;IAC9C,IAAI,OAAON,aAAa,QAAA,EAAU;QAChCC,YAAAA,GAAeD,QAAAA;IACjB,CAAA,MAAO;AACLC,QAAAA,YAAAA,GAAeD,SAASO,IAAI;AAC5B,QAAA,IAAIP,SAASO,IAAI,KAAKC,kBAAkBC,MAAM,IAAI,aAAaT,QAAAA,EAAU;AACvEE,YAAAA,MAAAA,GAASF,SAASU,OAAO;AACzBL,YAAAA,kBAAAA,GAAqBL,SAASW,qBAAqB;AACrD,QAAA;QACAR,YAAAA,GAAeH,QAAAA,CAASG,YAAY,IAAI,EAAE;QAC1CC,cAAAA,GAAiBJ,QAAAA,CAASI,cAAc,IAAI,EAAC;AAC/C,IAAA;IACA,OAAO;QACLG,IAAAA,EAAMN,YAAAA;QACNS,OAAAA,EAASR,MAAAA;AACTC,QAAAA,YAAAA;AACAC,QAAAA,cAAAA;QACAO,qBAAAA,EAAuBN;AACzB,KAAA;AACF;;;;"}
1
+ {"version":3,"file":"oauthProviderType.mjs","sources":["../../../../../../../web/src/utils/oauthProviderType.ts"],"sourcesContent":["import { B2BOAuthProviderConfig, B2BOAuthProviders } from '@stytch/core/public';\n\nexport const getParamsFromB2BOAuthProviderConfig = (provider: B2BOAuthProviderConfig) => {\n let providerType: B2BOAuthProviders;\n let oneTap = false;\n let customScopes: string[] = [];\n let providerParams: Record<string, string> = {};\n let cancelOnTapOutside: boolean | undefined = undefined;\n if (typeof provider === 'string') {\n providerType = provider;\n } else {\n providerType = provider.type;\n if (provider.type === B2BOAuthProviders.Google && provider.one_tap) {\n oneTap = provider.one_tap;\n cancelOnTapOutside = provider.cancel_on_tap_outside;\n }\n customScopes = provider.customScopes || [];\n providerParams = provider.providerParams || {};\n }\n return {\n type: providerType,\n one_tap: oneTap,\n customScopes,\n providerParams,\n cancel_on_tap_outside: cancelOnTapOutside,\n };\n};\n"],"names":["getParamsFromB2BOAuthProviderConfig","provider","providerType","oneTap","customScopes","providerParams","cancelOnTapOutside","undefined","type","B2BOAuthProviders","Google","one_tap","cancel_on_tap_outside"],"mappings":";;AAEO,MAAMA,sCAAsC,CAACC,QAAAA,GAAAA;IAClD,IAAIC,YAAAA;AACJ,IAAA,IAAIC,MAAAA,GAAS,KAAA;AACb,IAAA,IAAIC,eAAyB,EAAE;AAC/B,IAAA,IAAIC,iBAAyC,EAAC;AAC9C,IAAA,IAAIC,kBAAAA,GAA0CC,SAAAA;IAC9C,IAAI,OAAON,aAAa,QAAA,EAAU;QAChCC,YAAAA,GAAeD,QAAAA;IACjB,CAAA,MAAO;AACLC,QAAAA,YAAAA,GAAeD,SAASO,IAAI;QAC5B,IAAIP,QAAAA,CAASO,IAAI,KAAKC,iBAAAA,CAAkBC,MAAM,IAAIT,QAAAA,CAASU,OAAO,EAAE;AAClER,YAAAA,MAAAA,GAASF,SAASU,OAAO;AACzBL,YAAAA,kBAAAA,GAAqBL,SAASW,qBAAqB;AACrD,QAAA;QACAR,YAAAA,GAAeH,QAAAA,CAASG,YAAY,IAAI,EAAE;QAC1CC,cAAAA,GAAiBJ,QAAAA,CAASI,cAAc,IAAI,EAAC;AAC/C,IAAA;IACA,OAAO;QACLG,IAAAA,EAAMN,YAAAA;QACNS,OAAAA,EAASR,MAAAA;AACTC,QAAAA,YAAAA;AACAC,QAAAA,cAAAA;QACAO,qBAAAA,EAAuBN;AACzB,KAAA;AACF;;;;"}
@@ -0,0 +1,172 @@
1
+ import './ui-B7IvSGQf.js';
2
+ import { HTMLAttributes, ComponentType } from 'react';
3
+
4
+ type Theme = Partial<ColorMixFallback> & {
5
+ 'color-scheme': 'light' | 'dark' | 'shadcn';
6
+ /** Base font for all text.
7
+ * @default system-ui */
8
+ 'font-family': string;
9
+ /** Font for monospace code, such as TOTP setup and recovery code.
10
+ * @default ui-monospace. */
11
+ 'font-family-mono': string;
12
+ /** Header font override.
13
+ * @default base font-family */
14
+ 'header-font'?: string;
15
+ /** Base sizing variable. Changing this makes most spacing between elements larger or smaller.
16
+ * @default 4px */
17
+ spacing: string;
18
+ /** Max width for outer container.
19
+ * @default 400px */
20
+ 'container-width': string;
21
+ /** UI components are larger to accommodate touch screens below this size
22
+ * @default 768px */
23
+ 'mobile-breakpoint': string;
24
+ /** Base border radius.
25
+ * @default 4px */
26
+ 'rounded-base': string;
27
+ /** Base font size.
28
+ * @default 1rem or 16px */
29
+ 'text-base': string;
30
+ /** Override for button border radius
31
+ * @default 2x rounded-base or 8px */
32
+ 'button-radius'?: string;
33
+ /** Override for input border radius
34
+ * @default 2x rounded-base or 8px */
35
+ 'input-radius'?: string;
36
+ /** Override for outer container border radius
37
+ * @default 6x rounded-base or 24px */
38
+ 'container-radius'?: string;
39
+ /** Base box shadow, used for both buttons and inputs
40
+ * @default none */
41
+ shadow?: string;
42
+ 'shadow-button'?: string;
43
+ 'shadow-input'?: string;
44
+ 'transition-duration': string;
45
+ /** Background color of the SDK container. */
46
+ background: string;
47
+ /** Default font color for text in the SDK container. */
48
+ foreground: string;
49
+ /**
50
+ * Your primary brand color. This will be applied to primary action buttons
51
+ * such as form submit buttons.
52
+ */
53
+ primary: string;
54
+ 'primary-foreground': string;
55
+ secondary: string;
56
+ 'secondary-foreground': string;
57
+ /**
58
+ * A neutral, subtle color for areas such as the unfilled part of a progress bar.
59
+ */
60
+ muted: string;
61
+ /**
62
+ * Text color contrasting with muted, and also the color used for helper and other
63
+ * secondary text.
64
+ */
65
+ 'muted-foreground': string;
66
+ /**
67
+ * Your accent brand color. This will be applied to backgrounds to draw user's attention
68
+ * such as backup code for TOTP registration.
69
+ */
70
+ accent: string;
71
+ 'accent-foreground': string;
72
+ /** Border color for the outer container and dividers */
73
+ border: string;
74
+ /** Border color for inputs */
75
+ input: string;
76
+ /** Input and button focus ring color */
77
+ ring: string;
78
+ /** Background and font color for destructive actions and error states.
79
+ * @default Red color */
80
+ destructive: string;
81
+ 'destructive-foreground': string;
82
+ /** Background and font color for warning states.
83
+ * @default Orange color */
84
+ warning: string;
85
+ /** Background and font color for successful states.
86
+ * @default Green color */
87
+ success: string;
88
+ /** Border color only for the outer container
89
+ * @default The value of border */
90
+ 'container-border'?: string;
91
+ };
92
+ /**
93
+ * Color mix overrides -
94
+ * These variables are constructed using color-mix() by default. If customer needs to support older browsers,
95
+ * these values can be set using a pre-processor or JS a chroma.js polyfill
96
+ */
97
+ type ColorMixFallback = {
98
+ 'tab-background': string;
99
+ 'primary-button-hover': string;
100
+ 'secondary-button-hover': string;
101
+ 'destructive-button-hover': string;
102
+ 'divider-color': string;
103
+ 'focus-ring-shadow': string;
104
+ };
105
+
106
+ interface IconProps extends HTMLAttributes<unknown> {
107
+ size?: number;
108
+ }
109
+
110
+ /**
111
+ * Usage note: This is not type-safe if you use string as T, you have to constrain T to the icon key, e.g.
112
+ * const iconRegistry: IconRegistry<keyof typeof oauthIcons> = usePresentation().iconRegistry;
113
+ **/
114
+ type IconRegistry<T extends string> = Record<T, ComponentType<IconProps>>;
115
+
116
+ type PresentationOptions = {
117
+ /**
118
+ * When this value is false, the title and description text will not show in the SDK.
119
+ */
120
+ hideHeaderText: boolean;
121
+ /**
122
+ * Optional suffix for <input> id attribute so input IDs are unique.
123
+ */
124
+ inputIdSuffix?: string;
125
+ /**
126
+ * The configuration object for your custom logo.
127
+ */
128
+ logo?: {
129
+ /**
130
+ * The URL of your custom logo.
131
+ */
132
+ url: string;
133
+ /**
134
+ * Alt text for the logo. This would usually be the name of the website or your company,
135
+ * unless this is already repeated nearby in which case this should be left empty.
136
+ */
137
+ alt: string;
138
+ };
139
+ /**
140
+ * Override our icons. Currently, this only supports logos, such as those that appear in Oauth buttons.
141
+ * This should be an object where the key is the icon name and the value is a React component
142
+ * (not React element) with a size prop and the rest spread onto the root element.
143
+ *
144
+ * Note that custom logos not imported from our packages is not yet available in @stytch/vanilla-js.
145
+ * We are looking at provide alternatives in the future.
146
+ *
147
+ * @example
148
+ *
149
+ * // Using a solid black or white icon
150
+ * import { whiteIcons } from '@stytch/react';
151
+ *
152
+ * const presentation = {
153
+ * options: {
154
+ * icons: {
155
+ * outlook: whiteIcons.outlook,
156
+ * },
157
+ * },
158
+ * };
159
+ *
160
+ * // Using a custom icon
161
+ * const presentation = {
162
+ * icons: {
163
+ * outlook: ({ size, ...props }) => (
164
+ * <svg width={size} height={size} {...props}>...</svg>
165
+ * ),
166
+ * },
167
+ * };
168
+ */
169
+ icons?: IconRegistry<string>;
170
+ };
171
+
172
+ export type { ColorMixFallback as C, IconRegistry as I, PresentationOptions as P, Theme as T };
@@ -1,4 +1,5 @@
1
- import { u as IHeadlessB2BIDPClient, a as INetworkClient, B as B2BOAuthAuthorizeStartOptions, v as B2BOAuthAuthorizeStartResponse, w as B2BOAuthAuthorizeSubmitOptions, x as B2BOAuthAuthorizeSubmitResponse, y as B2BOAuthLogoutStartOptions, z as B2BOAuthLogoutStartResponse, S as StytchProjectConfigurationInput, D as IHeadlessB2BOAuthClient, h as OneTapRenderResult, E as IHeadlessB2BMagicLinksClient, F as IHeadlessB2BSessionClient, G as IHeadlessB2BMemberClient, H as IHeadlessB2BSelfClient, J as IHeadlessB2BOrganizationClient, K as IHeadlessB2BSSOClient, L as IHeadlessB2BDiscoveryClient, M as IHeadlessB2BPasswordClient, N as IHeadlessB2BOTPsClient, Q as IHeadlessB2BTOTPsClient, R as IHeadlessB2BRecoveryCodesClient, T as IHeadlessB2BRBACClient, U as IHeadlessB2BSCIMClient, V as IHeadlessB2BImpersonationClient, s as StateChangeRegisterFunction, W as B2BState, P as ParseAuthenticateUrl, A as AuthenticateByUrl, t as StytchClientOptions } from './createAuthUrlHandler-BJRA2PHG.js';
1
+ import { a as StytchProjectConfigurationInput, h as IHeadlessB2BOAuthClient, i as IHeadlessB2BMagicLinksClient, j as IHeadlessB2BOrganizationClient, k as IHeadlessB2BSSOClient, l as IHeadlessB2BDiscoveryClient, m as IHeadlessB2BPasswordClient, n as IHeadlessB2BOTPsClient, o as IHeadlessB2BTOTPsClient, p as IHeadlessB2BRecoveryCodesClient, q as IHeadlessB2BImpersonationClient, B as B2BState, g as StytchClientOptions } from './ui-B7IvSGQf.js';
2
+ import { m as IHeadlessB2BIDPClient, a as INetworkClient, B as B2BOAuthAuthorizeStartOptions, n as B2BOAuthAuthorizeStartResponse, o as B2BOAuthAuthorizeSubmitOptions, p as B2BOAuthAuthorizeSubmitResponse, q as B2BOAuthLogoutStartOptions, r as B2BOAuthLogoutStartResponse, h as OneTapRenderResult, s as IHeadlessB2BSessionClient, t as IHeadlessB2BMemberClient, u as IHeadlessB2BSelfClient, v as IHeadlessB2BRBACClient, w as IHeadlessB2BSCIMClient, S as StateChangeRegisterFunction, P as ParseAuthenticateUrl, A as AuthenticateByUrl } from './createAuthUrlHandler-R1kNNQD_.js';
2
3
 
3
4
  declare class HeadlessB2BIDPClient implements IHeadlessB2BIDPClient {
4
5
  private _networkClient;
@@ -1,4 +1,5 @@
1
- import { I as IHeadlessIDPClient, a as INetworkClient, O as OAuthAuthorizeStartOptions, b as OAuthAuthorizeStartResponse, c as OAuthAuthorizeSubmitOptions, d as OAuthAuthorizeSubmitResponse, e as OAuthLogoutStartOptions, f as OAuthLogoutStartResponse, S as StytchProjectConfigurationInput, g as IHeadlessOAuthClient, h as OneTapRenderResult, i as IHeadlessUserClient, j as IHeadlessMagicLinksClient, k as IHeadlessSessionClient, l as IHeadlessOTPsClient, m as IHeadlessCryptoWalletClient, n as IHeadlessTOTPClient, o as IHeadlessWebAuthnClient, p as IHeadlessPasswordClient, q as IHeadlessImpersonationClient, r as IHeadlessRBACClient, s as StateChangeRegisterFunction, C as ConsumerState, P as ParseAuthenticateUrl, A as AuthenticateByUrl, t as StytchClientOptions } from './createAuthUrlHandler-BJRA2PHG.js';
1
+ import { a as StytchProjectConfigurationInput, I as IHeadlessMagicLinksClient, b as IHeadlessSessionClient, c as IHeadlessOTPsClient, d as IHeadlessCryptoWalletClient, e as IHeadlessWebAuthnClient, f as IHeadlessPasswordClient, C as ConsumerState, g as StytchClientOptions } from './ui-B7IvSGQf.js';
2
+ import { I as IHeadlessIDPClient, a as INetworkClient, O as OAuthAuthorizeStartOptions, b as OAuthAuthorizeStartResponse, c as OAuthAuthorizeSubmitOptions, d as OAuthAuthorizeSubmitResponse, e as OAuthLogoutStartOptions, f as OAuthLogoutStartResponse, g as IHeadlessOAuthClient, h as OneTapRenderResult, i as IHeadlessUserClient, j as IHeadlessTOTPClient, k as IHeadlessImpersonationClient, l as IHeadlessRBACClient, S as StateChangeRegisterFunction, P as ParseAuthenticateUrl, A as AuthenticateByUrl } from './createAuthUrlHandler-R1kNNQD_.js';
2
3
 
3
4
  declare class HeadlessIDPClient implements IHeadlessIDPClient {
4
5
  private _networkClient;