@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
@@ -0,0 +1,166 @@
1
+ import { RUN_IN_DEV } from '../../../../core/src/utils/dev.mjs';
2
+ import { logger } from '../../../../core/src/utils/logger.mjs';
3
+
4
+ /* eslint-disable lingui/no-unlocalized-strings */ /**
5
+ * Maps a legacy StyleConfig to the new Theme format.
6
+ *
7
+ * This is a best-effort mapping - some StyleConfig properties don't have
8
+ * direct equivalents in Theme, and some Theme properties don't have
9
+ * StyleConfig equivalents.
10
+ *
11
+ * StyleConfig properties that don't have good mappings to Theme:
12
+ * - inputs.placeholderColor - No equivalent (could potentially map to muted-foreground)
13
+ * - inputs.textColor - Mapped to foreground as approximation, but is input-specific
14
+ * - buttons.primary.borderColor - No specific mapping (could use border but loses specificity)
15
+ * - buttons.primary.borderRadius - Mapped to button-radius but loses primary-specific control
16
+ * - buttons.secondary.borderColor - No specific mapping (could use border but loses specificity)
17
+ * - buttons.secondary.borderRadius - Mapped to button-radius but loses secondary-specific control
18
+ * - buttons.disabled.* - No equivalents (disabled state styling not in Theme)
19
+ *
20
+ * Theme properties that don't have StyleConfig equivalents:
21
+ * - 'transition-duration' - defaulted to 0 instead of 0.15s in our new default theme
22
+ * - 'font-family-mono' - defaults to theme default which is system UI monospace
23
+ * - 'text-base' - defaults to 1rem which is close to the old font sizes
24
+ * - spacing - defaults to new theme default which is close but not equivalent to old spacing
25
+ * - shadow, 'shadow-button', 'shadow-input' - no default in new theme
26
+ * - foreground - Approximated from inputs.textColor but not exact
27
+ * - muted, 'muted-foreground'
28
+ * - 'accent-foreground'
29
+ * - ring - previously defaults to OS default focus outline color
30
+ */ function styleToTheme(styleConfig, { silent } = {}) {
31
+ const warn = silent ? ()=>{
32
+ // noop
33
+ } : logger.warn;
34
+ const error = silent ? ()=>{
35
+ // noop
36
+ } : logger.error;
37
+ const theme = {};
38
+ const options = {};
39
+ const { colors, container, inputs, hideHeaderText, buttons, logo, fontFamily, ...outerEmpty } = styleConfig;
40
+ // presentation.theme mapping
41
+ // ------------------------------------------------
42
+ RUN_IN_DEV(()=>{
43
+ warn("styleToTheme: We recommend setting theme['color-scheme'] to either 'light' or 'dark' explicitly " + 'depending on whether this is a light or dark theme. This enables icons to automatically automatically ' + 'apply contrasting colors.');
44
+ if (Object.keys(outerEmpty).length > 0) warn('styleToTheme: Unrecognized style properties', outerEmpty);
45
+ });
46
+ theme['font-family'] = fontFamily;
47
+ if (colors) {
48
+ const { primary, secondary, success, warning, accent, error, ...expectEmpty } = colors;
49
+ RUN_IN_DEV(()=>{
50
+ if (Object.keys(expectEmpty).length > 0) warn('styleToTheme: Unrecognized style.colors properties', expectEmpty);
51
+ });
52
+ Object.assign(theme, {
53
+ primary,
54
+ secondary,
55
+ success,
56
+ warning,
57
+ accent,
58
+ destructive: error
59
+ });
60
+ }
61
+ if (container) {
62
+ const { backgroundColor, borderColor, width, borderRadius, ...expectEmpty } = container;
63
+ RUN_IN_DEV(()=>{
64
+ if (Object.keys(expectEmpty).length > 0) warn('styleToTheme: Unrecognized style.container properties', expectEmpty);
65
+ });
66
+ Object.assign(theme, {
67
+ background: backgroundColor,
68
+ border: borderColor,
69
+ 'container-width': width,
70
+ // 1/4 because the new base is quite small and most components use a 2x or 4x multiplier
71
+ 'rounded-base': updateLength(borderRadius, 0.25)
72
+ });
73
+ }
74
+ if (buttons) {
75
+ const { primary, secondary, disabled, ...expectEmpty } = buttons;
76
+ RUN_IN_DEV(()=>{
77
+ if (Object.keys(expectEmpty).length > 0) warn('styleToTheme: Unrecognized style.buttons properties', expectEmpty);
78
+ if (disabled && Object.keys(disabled).length > 0) warn('styleToTheme: buttons.disabled is no longer supported', {
79
+ disabled
80
+ });
81
+ if (primary?.borderColor && primary?.backgroundColor && primary.borderColor !== primary.backgroundColor) error("styleToTheme: primary button's border color is now always equal to background color; " + 'having distinct colors is no longer supported', {
82
+ borderColor: primary.borderColor,
83
+ backgroundColor: primary.backgroundColor
84
+ });
85
+ if (secondary?.borderColor && secondary.textColor && secondary.borderColor !== secondary.textColor) error("styleToTheme: secondary button's border color is now always equal to text color", {
86
+ borderColor: secondary.borderColor,
87
+ textColor: secondary.textColor
88
+ });
89
+ if (primary?.borderRadius !== secondary?.borderRadius) error('styleToTheme: All buttons must use the same border-radius', {
90
+ primaryRadius: primary?.borderRadius,
91
+ secondaryRadius: secondary?.borderRadius
92
+ });
93
+ });
94
+ // Set background and text colors
95
+ Object.assign(theme, {
96
+ primary: primary?.backgroundColor,
97
+ 'primary-foreground': primary?.textColor,
98
+ secondary: secondary?.backgroundColor,
99
+ 'secondary-foreground': secondary?.textColor
100
+ });
101
+ // Set border radius
102
+ if (primary?.borderRadius || secondary?.borderRadius) {
103
+ // Conflicts between primary and secondary border radius is handled above
104
+ const baseRadius = updateLength(primary?.borderRadius, 0.5) ?? updateLength(secondary?.borderRadius, 0.5);
105
+ if (theme['rounded-base']) {
106
+ if (theme['rounded-base'] !== baseRadius) {
107
+ theme['button-radius'] = primary?.borderRadius;
108
+ }
109
+ } else {
110
+ theme['rounded-base'] = baseRadius;
111
+ }
112
+ }
113
+ }
114
+ if (inputs) {
115
+ const { backgroundColor, textColor, placeholderColor, borderColor, borderRadius, ...expectEmpty } = inputs;
116
+ RUN_IN_DEV(()=>{
117
+ if (Object.keys(expectEmpty).length > 0) warn('styleToTheme: Unrecognized style.buttons properties', expectEmpty);
118
+ if (backgroundColor && theme.background && theme.background !== backgroundColor) error('styleToTheme: Input now always use the container background', {
119
+ inputBackground: backgroundColor,
120
+ containerBackground: theme.background
121
+ });
122
+ });
123
+ Object.assign(theme, {
124
+ foreground: textColor,
125
+ input: borderColor,
126
+ 'muted-foreground': placeholderColor
127
+ });
128
+ // Set border radius
129
+ if (theme['rounded-base']) {
130
+ if (theme['rounded-base'] !== borderRadius) {
131
+ theme['input-radius'] = borderRadius;
132
+ }
133
+ } else {
134
+ theme['rounded-base'] = borderRadius;
135
+ }
136
+ }
137
+ // presentation.options mapping
138
+ // ------------------------------------------------
139
+ options.hideHeaderText = hideHeaderText;
140
+ if (logo?.logoImageUrl) {
141
+ options.logo = {
142
+ url: logo.logoImageUrl,
143
+ alt: ''
144
+ };
145
+ RUN_IN_DEV(()=>{
146
+ logger.warn('styleToTheme: Please set options.logo.alt for the logo alt text for accessibility');
147
+ });
148
+ }
149
+ return {
150
+ theme: removeEmptyValues(theme),
151
+ options: removeEmptyValues(options)
152
+ };
153
+ }
154
+ function removeEmptyValues(obj) {
155
+ return Object.fromEntries(Object.entries(obj).filter(([, value])=>value != null && value !== ''));
156
+ }
157
+ function updateLength(length, factor) {
158
+ if (!length) return length;
159
+ // Loose check that this is a numeric and not keyword value
160
+ const value = parseFloat(length);
161
+ if (Number.isNaN(value)) return length;
162
+ return `calc(${length} * ${factor})`;
163
+ }
164
+
165
+ export { styleToTheme };
166
+ //# sourceMappingURL=styleToTheme.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styleToTheme.mjs","sources":["../../../../../../../../web/src/ui/compat/styleToTheme.ts"],"sourcesContent":["import type { StyleConfig } from '@stytch/core/public';\nimport type { Theme } from '../components/themes/ThemeConfig';\nimport type { PresentationOptions } from '../components/PresentationConfig';\nimport { logger, RUN_IN_DEV } from '@stytch/core';\n\n/* eslint-disable lingui/no-unlocalized-strings */\n\n/**\n * Maps a legacy StyleConfig to the new Theme format.\n *\n * This is a best-effort mapping - some StyleConfig properties don't have\n * direct equivalents in Theme, and some Theme properties don't have\n * StyleConfig equivalents.\n *\n * StyleConfig properties that don't have good mappings to Theme:\n * - inputs.placeholderColor - No equivalent (could potentially map to muted-foreground)\n * - inputs.textColor - Mapped to foreground as approximation, but is input-specific\n * - buttons.primary.borderColor - No specific mapping (could use border but loses specificity)\n * - buttons.primary.borderRadius - Mapped to button-radius but loses primary-specific control\n * - buttons.secondary.borderColor - No specific mapping (could use border but loses specificity)\n * - buttons.secondary.borderRadius - Mapped to button-radius but loses secondary-specific control\n * - buttons.disabled.* - No equivalents (disabled state styling not in Theme)\n *\n * Theme properties that don't have StyleConfig equivalents:\n * - 'transition-duration' - defaulted to 0 instead of 0.15s in our new default theme\n * - 'font-family-mono' - defaults to theme default which is system UI monospace\n * - 'text-base' - defaults to 1rem which is close to the old font sizes\n * - spacing - defaults to new theme default which is close but not equivalent to old spacing\n * - shadow, 'shadow-button', 'shadow-input' - no default in new theme\n * - foreground - Approximated from inputs.textColor but not exact\n * - muted, 'muted-foreground'\n * - 'accent-foreground'\n * - ring - previously defaults to OS default focus outline color\n */\nexport function styleToTheme(\n styleConfig: StyleConfig,\n { silent }: { silent?: boolean } = {},\n): {\n theme: Partial<Theme>;\n options: Partial<PresentationOptions>;\n} {\n const warn = silent\n ? () => {\n // noop\n }\n : logger.warn;\n const error = silent\n ? () => {\n // noop\n }\n : logger.error;\n\n const theme: Partial<Theme> = {};\n const options: Partial<PresentationOptions> = {};\n\n const { colors, container, inputs, hideHeaderText, buttons, logo, fontFamily, ...outerEmpty } = styleConfig;\n\n // presentation.theme mapping\n // ------------------------------------------------\n RUN_IN_DEV(() => {\n warn(\n \"styleToTheme: We recommend setting theme['color-scheme'] to either 'light' or 'dark' explicitly \" +\n 'depending on whether this is a light or dark theme. This enables icons to automatically automatically ' +\n 'apply contrasting colors.',\n );\n\n if (Object.keys(outerEmpty).length > 0) warn('styleToTheme: Unrecognized style properties', outerEmpty);\n });\n\n theme['font-family'] = fontFamily;\n\n if (colors) {\n const { primary, secondary, success, warning, accent, error, ...expectEmpty } = colors;\n RUN_IN_DEV(() => {\n if (Object.keys(expectEmpty).length > 0) warn('styleToTheme: Unrecognized style.colors properties', expectEmpty);\n });\n\n Object.assign(theme, {\n primary,\n secondary,\n success,\n warning,\n accent,\n destructive: error,\n } satisfies Partial<Theme>);\n }\n\n if (container) {\n const { backgroundColor, borderColor, width, borderRadius, ...expectEmpty } = container;\n\n RUN_IN_DEV(() => {\n if (Object.keys(expectEmpty).length > 0)\n warn('styleToTheme: Unrecognized style.container properties', expectEmpty);\n });\n\n Object.assign(theme, {\n background: backgroundColor,\n border: borderColor,\n 'container-width': width,\n // 1/4 because the new base is quite small and most components use a 2x or 4x multiplier\n 'rounded-base': updateLength(borderRadius, 0.25),\n } satisfies Partial<Theme>);\n }\n\n if (buttons) {\n const { primary, secondary, disabled, ...expectEmpty } = buttons;\n\n RUN_IN_DEV(() => {\n if (Object.keys(expectEmpty).length > 0) warn('styleToTheme: Unrecognized style.buttons properties', expectEmpty);\n\n if (disabled && Object.keys(disabled).length > 0)\n warn('styleToTheme: buttons.disabled is no longer supported', { disabled });\n\n if (primary?.borderColor && primary?.backgroundColor && primary.borderColor !== primary.backgroundColor)\n error(\n \"styleToTheme: primary button's border color is now always equal to background color; \" +\n 'having distinct colors is no longer supported',\n {\n borderColor: primary.borderColor,\n backgroundColor: primary.backgroundColor,\n },\n );\n\n if (secondary?.borderColor && secondary.textColor && secondary.borderColor !== secondary.textColor)\n error(\"styleToTheme: secondary button's border color is now always equal to text color\", {\n borderColor: secondary.borderColor,\n textColor: secondary.textColor,\n });\n\n if (primary?.borderRadius !== secondary?.borderRadius)\n error('styleToTheme: All buttons must use the same border-radius', {\n primaryRadius: primary?.borderRadius,\n secondaryRadius: secondary?.borderRadius,\n });\n });\n\n // Set background and text colors\n Object.assign(theme, {\n primary: primary?.backgroundColor,\n 'primary-foreground': primary?.textColor,\n\n secondary: secondary?.backgroundColor,\n 'secondary-foreground': secondary?.textColor,\n } satisfies Partial<Theme>);\n\n // Set border radius\n if (primary?.borderRadius || secondary?.borderRadius) {\n // Conflicts between primary and secondary border radius is handled above\n const baseRadius = updateLength(primary?.borderRadius, 0.5) ?? updateLength(secondary?.borderRadius, 0.5);\n\n if (theme['rounded-base']) {\n if (theme['rounded-base'] !== baseRadius) {\n theme['button-radius'] = primary?.borderRadius;\n }\n } else {\n theme['rounded-base'] = baseRadius;\n }\n }\n }\n\n if (inputs) {\n const { backgroundColor, textColor, placeholderColor, borderColor, borderRadius, ...expectEmpty } = inputs;\n RUN_IN_DEV(() => {\n if (Object.keys(expectEmpty).length > 0) warn('styleToTheme: Unrecognized style.buttons properties', expectEmpty);\n\n if (backgroundColor && theme.background && theme.background !== backgroundColor)\n error('styleToTheme: Input now always use the container background', {\n inputBackground: backgroundColor,\n containerBackground: theme.background,\n });\n });\n\n Object.assign(theme, {\n foreground: textColor,\n input: borderColor,\n 'muted-foreground': placeholderColor,\n } satisfies Partial<Theme>);\n\n // Set border radius\n if (theme['rounded-base']) {\n if (theme['rounded-base'] !== borderRadius) {\n theme['input-radius'] = borderRadius;\n }\n } else {\n theme['rounded-base'] = borderRadius;\n }\n }\n\n // presentation.options mapping\n // ------------------------------------------------\n\n options.hideHeaderText = hideHeaderText;\n if (logo?.logoImageUrl) {\n options.logo = {\n url: logo.logoImageUrl,\n alt: '',\n };\n\n RUN_IN_DEV(() => {\n logger.warn('styleToTheme: Please set options.logo.alt for the logo alt text for accessibility');\n });\n }\n\n return { theme: removeEmptyValues(theme), options: removeEmptyValues(options) };\n}\n\nfunction removeEmptyValues<T extends Record<string, unknown>>(obj: T): T {\n return Object.fromEntries(Object.entries(obj).filter(([, value]) => value != null && value !== '')) as T;\n}\n\nfunction updateLength(length: string | undefined, factor: number): string | undefined {\n if (!length) return length;\n\n // Loose check that this is a numeric and not keyword value\n const value = parseFloat(length);\n if (Number.isNaN(value)) return length;\n\n return `calc(${length} * ${factor})`;\n}\n"],"names":["styleToTheme","styleConfig","silent","warn","logger","error","theme","options","colors","container","inputs","hideHeaderText","buttons","logo","fontFamily","outerEmpty","RUN_IN_DEV","Object","keys","length","primary","secondary","success","warning","accent","expectEmpty","assign","destructive","backgroundColor","borderColor","width","borderRadius","background","border","updateLength","disabled","textColor","primaryRadius","secondaryRadius","baseRadius","placeholderColor","inputBackground","containerBackground","foreground","input","logoImageUrl","url","alt","removeEmptyValues","obj","fromEntries","entries","filter","value","factor","parseFloat","Number","isNaN"],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { defaultTheme } from './themes/themes.mjs';
2
2
  import { useContext, createContext, useMemo } from 'react';
3
3
  import { useMediaQuery } from '../hooks/useMediaQuery.mjs';
4
+ import { RUN_IN_DEV } from '../../../../core/src/utils/dev.mjs';
4
5
  import { logger } from '../../../../core/src/utils/logger.mjs';
5
6
 
6
7
  const defaultOptions = {
@@ -8,13 +9,13 @@ const defaultOptions = {
8
9
  };
9
10
  function usePresentationWithDefault(maybeConfig, displayWatermark, products, productsName) {
10
11
  const { theme, options } = maybeConfig ?? {};
11
- {
12
+ RUN_IN_DEV(()=>{
12
13
  const stringProducts = products.filter((p)=>typeof p === 'string');
13
14
  if (stringProducts.length > 0) {
14
15
  logger.error(`Please add an import for ${productsName} and update config.products to\n` + 'products: [' + products.map((p)=>`${productsName}.${typeof p === 'string' ? p : p.id}`).join(', ') + ']');
15
16
  throw new Error("'config.products' should not include strings anymore");
16
17
  }
17
- }
18
+ });
18
19
  // Switch theme automatically depending on color scheme
19
20
  const isDynamic = isDynamicTheme(theme);
20
21
  const darkMode = useMediaQuery(isDynamic ? '(prefers-color-scheme: dark)' : undefined);
@@ -1 +1 @@
1
- {"version":3,"file":"PresentationConfig.mjs","sources":["../../../../../../../../web/src/ui/components/PresentationConfig.ts"],"sourcesContent":["import { defaultTheme } from './themes/themes';\nimport { createContext, useContext, useMemo } from 'react';\nimport { PresentationConfig } from '../../types';\nimport { Theme } from './themes/ThemeConfig';\nimport { useMediaQuery } from '../hooks/useMediaQuery';\nimport { IconRegistry } from './IconRegistry';\nimport { IconNames } from '../b2c/components/Icons';\nimport { logger } from '@stytch/core';\n\nexport type PresentationOptions = {\n /**\n * When this value is false, the title and description text will not show in the SDK.\n */\n hideHeaderText: boolean;\n\n /**\n * Optional suffix for <input> id attribute so input IDs are unique.\n */\n inputIdSuffix?: string;\n\n /**\n * The configuration object for your custom logo.\n */\n logo?: {\n /**\n * The URL of your custom logo.\n */\n url: string;\n\n /**\n * Alt text for the logo. This would usually be the name of the website or your company,\n * unless this is already repeated nearby in which case this should be left empty.\n */\n alt: string;\n };\n\n /**\n * Override our icons. Currently, this only supports logos, such as those that appear in Oauth buttons.\n * This should be an object where the key is the icon name and the value is a React component\n * (not React element) with a size prop and the rest spread onto the root element.\n *\n * Note that custom logos not imported from our packages is not yet available in @stytch/vanilla-js.\n * We are looking at provide alternatives in the future.\n *\n * @example\n *\n * // Using a solid black or white icon\n * import { whiteIcons } from '@stytch/react';\n *\n * const presentation = {\n * options: {\n * icons: {\n * outlook: whiteIcons.outlook,\n * },\n * },\n * };\n *\n * // Using a custom icon\n * const presentation = {\n * icons: {\n * outlook: ({ size, ...props }) => (\n * <svg width={size} height={size} {...props}>...</svg>\n * ),\n * },\n * };\n */\n icons?: IconRegistry<string>;\n};\n\nconst defaultOptions: PresentationOptions = {\n hideHeaderText: false,\n};\n\n/**\n * Internal type -\n * @see {PresentationConfig} is the public one\n */\nexport type Presentation = {\n theme: Theme;\n options: PresentationOptions;\n\n // Internal properties\n displayWatermark: boolean;\n iconRegistry: IconRegistry<string>;\n};\n\nexport function usePresentationWithDefault(\n maybeConfig: PresentationConfig | undefined,\n displayWatermark: boolean,\n products: { id: string; icons?: Partial<IconRegistry<IconNames>> }[],\n productsName?: string,\n): Presentation {\n const { theme, options } = maybeConfig ?? {};\n\n if (process.env.NODE_ENV !== 'production') {\n const stringProducts = products.filter((p) => typeof p === 'string');\n if (stringProducts.length > 0) {\n logger.error(\n `Please add an import for ${productsName} and update config.products to\\n` +\n 'products: [' +\n products.map((p) => `${productsName}.${typeof p === 'string' ? p : p.id}`).join(', ') +\n ']',\n );\n\n throw new Error(\"'config.products' should not include strings anymore\");\n }\n }\n\n // Switch theme automatically depending on color scheme\n const isDynamic = isDynamicTheme(theme);\n const darkMode = useMediaQuery(isDynamic ? '(prefers-color-scheme: dark)' : undefined);\n\n let effectiveTheme: Partial<Theme> | undefined;\n if (isDynamic) {\n effectiveTheme = darkMode ? theme[1] : theme[0];\n } else {\n effectiveTheme = theme;\n }\n\n // Memoize the icon registry so it only need to be constructed once\n const iconRegistry = useMemo(() => {\n const registry: IconRegistry<string> = {};\n for (const product of products) {\n Object.assign(registry, product.icons);\n }\n Object.assign(registry, options?.icons);\n return registry;\n }, [products, options]);\n\n return {\n theme: {\n ...defaultTheme,\n ...effectiveTheme,\n },\n options: {\n ...defaultOptions,\n ...options,\n },\n displayWatermark,\n iconRegistry,\n };\n}\n\nexport function isDynamicTheme(\n theme: PresentationConfig['theme'],\n): theme is readonly [light: Partial<Theme>, dark: Partial<Theme>] {\n return Array.isArray(theme);\n}\n\nexport const PresentationContext = createContext<Presentation>(undefined!);\nexport const usePresentation = () => useContext(PresentationContext);\n"],"names":["defaultOptions","hideHeaderText","usePresentationWithDefault","maybeConfig","displayWatermark","products","productsName","theme","options","stringProducts","filter","p","length","logger","error","map","id","join","Error","isDynamic","isDynamicTheme","darkMode","useMediaQuery","undefined","effectiveTheme","iconRegistry","useMemo","registry","product","Object","assign","icons","defaultTheme","Array","isArray","PresentationContext","createContext","usePresentation","useContext"],"mappings":";;;;;AAqEA,MAAMA,cAAAA,GAAsC;IAC1CC,cAAAA,EAAgB;AAClB,CAAA;AAeO,SAASC,2BACdC,WAA2C,EAC3CC,gBAAyB,EACzBC,QAAoE,EACpEC,YAAqB,EAAA;AAErB,IAAA,MAAM,EAAEC,KAAK,EAAEC,OAAO,EAAE,GAAGL,eAAe,EAAC;AAE3C,IAA2C;AACzC,QAAA,MAAMM,iBAAiBJ,QAAAA,CAASK,MAAM,CAAC,CAACC,CAAAA,GAAM,OAAOA,CAAAA,KAAM,QAAA,CAAA;QAC3D,IAAIF,cAAAA,CAAeG,MAAM,GAAG,CAAA,EAAG;AAC7BC,YAAAA,MAAAA,CAAOC,KAAK,CACV,CAAC,yBAAyB,EAAER,YAAAA,CAAa,gCAAgC,CAAC,GACxE,aAAA,GACAD,QAAAA,CAASU,GAAG,CAAC,CAACJ,CAAAA,GAAM,CAAA,EAAGL,YAAAA,CAAa,CAAC,EAAE,OAAOK,CAAAA,KAAM,QAAA,GAAWA,CAAAA,GAAIA,CAAAA,CAAEK,EAAE,CAAA,CAAE,CAAA,CAAEC,IAAI,CAAC,IAAA,CAAA,GAChF,GAAA,CAAA;AAGJ,YAAA,MAAM,IAAIC,KAAAA,CAAM,sDAAA,CAAA;AAClB,QAAA;AACF,IAAA;;AAGA,IAAA,MAAMC,YAAYC,cAAAA,CAAeb,KAAAA,CAAAA;IACjC,MAAMc,QAAAA,GAAWC,aAAAA,CAAcH,SAAAA,GAAY,8BAAA,GAAiCI,SAAAA,CAAAA;IAE5E,IAAIC,cAAAA;AACJ,IAAA,IAAIL,SAAAA,EAAW;AACbK,QAAAA,cAAAA,GAAiBH,WAAWd,KAAK,CAAC,EAAE,GAAGA,KAAK,CAAC,CAAA,CAAE;IACjD,CAAA,MAAO;QACLiB,cAAAA,GAAiBjB,KAAAA;AACnB,IAAA;;AAGA,IAAA,MAAMkB,eAAeC,OAAAA,CAAQ,IAAA;AAC3B,QAAA,MAAMC,WAAiC,EAAC;QACxC,KAAK,MAAMC,WAAWvB,QAAAA,CAAU;AAC9BwB,YAAAA,MAAAA,CAAOC,MAAM,CAACH,QAAAA,EAAUC,OAAAA,CAAQG,KAAK,CAAA;AACvC,QAAA;QACAF,MAAAA,CAAOC,MAAM,CAACH,QAAAA,EAAUnB,OAAAA,EAASuB,KAAAA,CAAAA;QACjC,OAAOJ,QAAAA;IACT,CAAA,EAAG;AAACtB,QAAAA,QAAAA;AAAUG,QAAAA;AAAQ,KAAA,CAAA;IAEtB,OAAO;QACLD,KAAAA,EAAO;AACL,YAAA,GAAGyB,YAAY;AACf,YAAA,GAAGR;AACL,SAAA;QACAhB,OAAAA,EAAS;AACP,YAAA,GAAGR,cAAc;AACjB,YAAA,GAAGQ;AACL,SAAA;AACAJ,QAAAA,gBAAAA;AACAqB,QAAAA;AACF,KAAA;AACF;AAEO,SAASL,eACdb,KAAkC,EAAA;IAElC,OAAO0B,KAAAA,CAAMC,OAAO,CAAC3B,KAAAA,CAAAA;AACvB;AAEO,MAAM4B,mBAAAA,GAAsBC,aAAAA,CAA4Bb,SAAAA;AACxD,MAAMc,eAAAA,GAAkB,IAAMC,UAAAA,CAAWH,mBAAAA;;;;"}
1
+ {"version":3,"file":"PresentationConfig.mjs","sources":["../../../../../../../../web/src/ui/components/PresentationConfig.ts"],"sourcesContent":["import { defaultTheme } from './themes/themes';\nimport { createContext, useContext, useMemo } from 'react';\nimport { PresentationConfig } from '../../types';\nimport { Theme } from './themes/ThemeConfig';\nimport { useMediaQuery } from '../hooks/useMediaQuery';\nimport { IconRegistry } from './IconRegistry';\nimport { IconNames } from '../b2c/components/Icons';\nimport { logger, RUN_IN_DEV } from '@stytch/core';\n\nexport type PresentationOptions = {\n /**\n * When this value is false, the title and description text will not show in the SDK.\n */\n hideHeaderText: boolean;\n\n /**\n * Optional suffix for <input> id attribute so input IDs are unique.\n */\n inputIdSuffix?: string;\n\n /**\n * The configuration object for your custom logo.\n */\n logo?: {\n /**\n * The URL of your custom logo.\n */\n url: string;\n\n /**\n * Alt text for the logo. This would usually be the name of the website or your company,\n * unless this is already repeated nearby in which case this should be left empty.\n */\n alt: string;\n };\n\n /**\n * Override our icons. Currently, this only supports logos, such as those that appear in Oauth buttons.\n * This should be an object where the key is the icon name and the value is a React component\n * (not React element) with a size prop and the rest spread onto the root element.\n *\n * Note that custom logos not imported from our packages is not yet available in @stytch/vanilla-js.\n * We are looking at provide alternatives in the future.\n *\n * @example\n *\n * // Using a solid black or white icon\n * import { whiteIcons } from '@stytch/react';\n *\n * const presentation = {\n * options: {\n * icons: {\n * outlook: whiteIcons.outlook,\n * },\n * },\n * };\n *\n * // Using a custom icon\n * const presentation = {\n * icons: {\n * outlook: ({ size, ...props }) => (\n * <svg width={size} height={size} {...props}>...</svg>\n * ),\n * },\n * };\n */\n icons?: IconRegistry<string>;\n};\n\nconst defaultOptions: PresentationOptions = {\n hideHeaderText: false,\n};\n\n/**\n * Internal type -\n * @see {PresentationConfig} is the public one\n */\nexport type Presentation = {\n theme: Theme;\n options: PresentationOptions;\n\n // Internal properties\n displayWatermark: boolean;\n iconRegistry: IconRegistry<string>;\n};\n\nexport function usePresentationWithDefault(\n maybeConfig: PresentationConfig | undefined,\n displayWatermark: boolean,\n products: { id: string; icons?: Partial<IconRegistry<IconNames>> }[],\n productsName?: string,\n): Presentation {\n const { theme, options } = maybeConfig ?? {};\n\n RUN_IN_DEV(() => {\n const stringProducts = products.filter((p) => typeof p === 'string');\n if (stringProducts.length > 0) {\n logger.error(\n `Please add an import for ${productsName} and update config.products to\\n` +\n 'products: [' +\n products.map((p) => `${productsName}.${typeof p === 'string' ? p : p.id}`).join(', ') +\n ']',\n );\n\n throw new Error(\"'config.products' should not include strings anymore\");\n }\n });\n\n // Switch theme automatically depending on color scheme\n const isDynamic = isDynamicTheme(theme);\n const darkMode = useMediaQuery(isDynamic ? '(prefers-color-scheme: dark)' : undefined);\n\n let effectiveTheme: Partial<Theme> | undefined;\n if (isDynamic) {\n effectiveTheme = darkMode ? theme[1] : theme[0];\n } else {\n effectiveTheme = theme;\n }\n\n // Memoize the icon registry so it only need to be constructed once\n const iconRegistry = useMemo(() => {\n const registry: IconRegistry<string> = {};\n for (const product of products) {\n Object.assign(registry, product.icons);\n }\n Object.assign(registry, options?.icons);\n return registry;\n }, [products, options]);\n\n return {\n theme: {\n ...defaultTheme,\n ...effectiveTheme,\n },\n options: {\n ...defaultOptions,\n ...options,\n },\n displayWatermark,\n iconRegistry,\n };\n}\n\nexport function isDynamicTheme(\n theme: PresentationConfig['theme'],\n): theme is readonly [light: Partial<Theme>, dark: Partial<Theme>] {\n return Array.isArray(theme);\n}\n\nexport const PresentationContext = createContext<Presentation>(undefined!);\nexport const usePresentation = () => useContext(PresentationContext);\n"],"names":["defaultOptions","hideHeaderText","usePresentationWithDefault","maybeConfig","displayWatermark","products","productsName","theme","options","RUN_IN_DEV","stringProducts","filter","p","length","logger","error","map","id","join","Error","isDynamic","isDynamicTheme","darkMode","useMediaQuery","undefined","effectiveTheme","iconRegistry","useMemo","registry","product","Object","assign","icons","defaultTheme","Array","isArray","PresentationContext","createContext","usePresentation","useContext"],"mappings":";;;;;;AAqEA,MAAMA,cAAAA,GAAsC;IAC1CC,cAAAA,EAAgB;AAClB,CAAA;AAeO,SAASC,2BACdC,WAA2C,EAC3CC,gBAAyB,EACzBC,QAAoE,EACpEC,YAAqB,EAAA;AAErB,IAAA,MAAM,EAAEC,KAAK,EAAEC,OAAO,EAAE,GAAGL,eAAe,EAAC;IAE3CM,UAAAA,CAAW,IAAA;AACT,QAAA,MAAMC,iBAAiBL,QAAAA,CAASM,MAAM,CAAC,CAACC,CAAAA,GAAM,OAAOA,CAAAA,KAAM,QAAA,CAAA;QAC3D,IAAIF,cAAAA,CAAeG,MAAM,GAAG,CAAA,EAAG;AAC7BC,YAAAA,MAAAA,CAAOC,KAAK,CACV,CAAC,yBAAyB,EAAET,YAAAA,CAAa,gCAAgC,CAAC,GACxE,aAAA,GACAD,QAAAA,CAASW,GAAG,CAAC,CAACJ,CAAAA,GAAM,CAAA,EAAGN,YAAAA,CAAa,CAAC,EAAE,OAAOM,CAAAA,KAAM,QAAA,GAAWA,CAAAA,GAAIA,CAAAA,CAAEK,EAAE,CAAA,CAAE,CAAA,CAAEC,IAAI,CAAC,IAAA,CAAA,GAChF,GAAA,CAAA;AAGJ,YAAA,MAAM,IAAIC,KAAAA,CAAM,sDAAA,CAAA;AAClB,QAAA;AACF,IAAA,CAAA,CAAA;;AAGA,IAAA,MAAMC,YAAYC,cAAAA,CAAed,KAAAA,CAAAA;IACjC,MAAMe,QAAAA,GAAWC,aAAAA,CAAcH,SAAAA,GAAY,8BAAA,GAAiCI,SAAAA,CAAAA;IAE5E,IAAIC,cAAAA;AACJ,IAAA,IAAIL,SAAAA,EAAW;AACbK,QAAAA,cAAAA,GAAiBH,WAAWf,KAAK,CAAC,EAAE,GAAGA,KAAK,CAAC,CAAA,CAAE;IACjD,CAAA,MAAO;QACLkB,cAAAA,GAAiBlB,KAAAA;AACnB,IAAA;;AAGA,IAAA,MAAMmB,eAAeC,OAAAA,CAAQ,IAAA;AAC3B,QAAA,MAAMC,WAAiC,EAAC;QACxC,KAAK,MAAMC,WAAWxB,QAAAA,CAAU;AAC9ByB,YAAAA,MAAAA,CAAOC,MAAM,CAACH,QAAAA,EAAUC,OAAAA,CAAQG,KAAK,CAAA;AACvC,QAAA;QACAF,MAAAA,CAAOC,MAAM,CAACH,QAAAA,EAAUpB,OAAAA,EAASwB,KAAAA,CAAAA;QACjC,OAAOJ,QAAAA;IACT,CAAA,EAAG;AAACvB,QAAAA,QAAAA;AAAUG,QAAAA;AAAQ,KAAA,CAAA;IAEtB,OAAO;QACLD,KAAAA,EAAO;AACL,YAAA,GAAG0B,YAAY;AACf,YAAA,GAAGR;AACL,SAAA;QACAjB,OAAAA,EAAS;AACP,YAAA,GAAGR,cAAc;AACjB,YAAA,GAAGQ;AACL,SAAA;AACAJ,QAAAA,gBAAAA;AACAsB,QAAAA;AACF,KAAA;AACF;AAEO,SAASL,eACdd,KAAkC,EAAA;IAElC,OAAO2B,KAAAA,CAAMC,OAAO,CAAC5B,KAAAA,CAAAA;AACvB;AAEO,MAAM6B,mBAAAA,GAAsBC,aAAAA,CAA4Bb,SAAAA;AACxD,MAAMc,eAAAA,GAAkB,IAAMC,UAAAA,CAAWH,mBAAAA;;;;"}
@@ -1,8 +1,8 @@
1
1
  import { collectCss } from '../../../../../../internal/style-injector/src/index.mjs';
2
2
 
3
- var css = ".Typography_module_typography__d307cb57{font-family:var(--st-font-family)}.Typography_module_header__d307cb57{color:var(--st-foreground);font-size:var(--st-text-2xl);font-weight:var(--st-font-weight-semibold);line-height:var(--st-line-height-2xl)}.Typography_module_body__d307cb57{color:var(--st-foreground);font-size:var(--st-text-base)}.Typography_module_body__d307cb57,.Typography_module_helper__d307cb57{font-weight:var(--st-font-weight-normal);line-height:var(--st-line-height-base)}.Typography_module_helper__d307cb57{color:var(--st-muted-foreground);font-size:var(--st-text-xs)}.Typography_module_start__d307cb57{text-align:start}.Typography_module_center__d307cb57{text-align:center}.Typography_module_end__d307cb57{text-align:end}.Typography_module_foreground__d307cb57{color:var(--st-foreground)}.Typography_module_muted__d307cb57{color:var(--st-muted-foreground)}.Typography_module_destructive__d307cb57{color:var(--st-destructive)}.Typography_module_warning__d307cb57{color:var(--st-warning)}.Typography_module_success__d307cb57{color:var(--st-success)}.Typography_module_regular__d307cb57{font-weight:var(--st-font-weight-normal)}.Typography_module_medium__d307cb57{font-weight:var(--st-font-weight-medium)}.Typography_module_semibold__d307cb57{font-weight:var(--st-font-weight-semibold)}.Typography_module_bold__d307cb57{font-weight:var(--st-font-weight-bold)}.Typography_module_defaultFont__d307cb57{font-family:var(--st-font-family)}.Typography_module_monoFont__d307cb57{font-family:var(--st-font-family-mono)}";
3
+ var css = ".Typography_module_typography__74817c74{font-family:var(--st-font-family)}.Typography_module_header__74817c74{color:var(--st-foreground);font-family:var(--st-header-font);font-size:var(--st-text-2xl);font-weight:var(--st-font-weight-semibold);line-height:var(--st-line-height-2xl)}.Typography_module_body__74817c74{color:var(--st-foreground);font-size:var(--st-text-base)}.Typography_module_body__74817c74,.Typography_module_helper__74817c74{font-weight:var(--st-font-weight-normal);line-height:var(--st-line-height-base)}.Typography_module_helper__74817c74{color:var(--st-muted-foreground);font-size:var(--st-text-xs)}.Typography_module_start__74817c74{text-align:start}.Typography_module_center__74817c74{text-align:center}.Typography_module_end__74817c74{text-align:end}.Typography_module_foreground__74817c74{color:var(--st-foreground)}.Typography_module_muted__74817c74{color:var(--st-muted-foreground)}.Typography_module_destructive__74817c74{color:var(--st-destructive)}.Typography_module_warning__74817c74{color:var(--st-warning)}.Typography_module_success__74817c74{color:var(--st-success)}.Typography_module_regular__74817c74{font-weight:var(--st-font-weight-normal)}.Typography_module_medium__74817c74{font-weight:var(--st-font-weight-medium)}.Typography_module_semibold__74817c74{font-weight:var(--st-font-weight-semibold)}.Typography_module_bold__74817c74{font-weight:var(--st-font-weight-bold)}.Typography_module_defaultFont__74817c74{font-family:var(--st-font-family)}.Typography_module_monoFont__74817c74{font-family:var(--st-font-family-mono)}";
4
4
  collectCss(css);
5
- var modules_1d7499fc = {"typography":"Typography_module_typography__d307cb57","header":"Typography_module_header__d307cb57","body":"Typography_module_body__d307cb57","helper":"Typography_module_helper__d307cb57","start":"Typography_module_start__d307cb57","center":"Typography_module_center__d307cb57","end":"Typography_module_end__d307cb57","foreground":"Typography_module_foreground__d307cb57","muted":"Typography_module_muted__d307cb57","destructive":"Typography_module_destructive__d307cb57","warning":"Typography_module_warning__d307cb57","success":"Typography_module_success__d307cb57","regular":"Typography_module_regular__d307cb57","medium":"Typography_module_medium__d307cb57","semibold":"Typography_module_semibold__d307cb57","bold":"Typography_module_bold__d307cb57","defaultFont":"Typography_module_defaultFont__d307cb57","monoFont":"Typography_module_monoFont__d307cb57"};
5
+ var modules_1d7499fc = {"typography":"Typography_module_typography__74817c74","header":"Typography_module_header__74817c74","body":"Typography_module_body__74817c74","helper":"Typography_module_helper__74817c74","start":"Typography_module_start__74817c74","center":"Typography_module_center__74817c74","end":"Typography_module_end__74817c74","foreground":"Typography_module_foreground__74817c74","muted":"Typography_module_muted__74817c74","destructive":"Typography_module_destructive__74817c74","warning":"Typography_module_warning__74817c74","success":"Typography_module_success__74817c74","regular":"Typography_module_regular__74817c74","medium":"Typography_module_medium__74817c74","semibold":"Typography_module_semibold__74817c74","bold":"Typography_module_bold__74817c74","defaultFont":"Typography_module_defaultFont__74817c74","monoFont":"Typography_module_monoFont__74817c74"};
6
6
 
7
7
  export { css, modules_1d7499fc as default };
8
8
  //# sourceMappingURL=Typography.module.css.mjs.map
@@ -20,7 +20,7 @@ import { createB2BComponent } from '../bindings/createB2BComponent.mjs';
20
20
  * onEvent: (event) => console.log(event)
21
21
  * }}
22
22
  * />
23
- */ const B2BIdentityProvider = createB2BComponent('B2BIdentityProvider', B2BIDPContainer);
23
+ */ const B2BIdentityProvider = /* @__PURE__ */ createB2BComponent('B2BIdentityProvider', B2BIDPContainer);
24
24
 
25
25
  export { B2BIdentityProvider };
26
26
  //# sourceMappingURL=B2BIdentityProvider.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"B2BIdentityProvider.mjs","sources":["../../../../../../../../../web/src/ui/react/b2b/B2BIdentityProvider.tsx"],"sourcesContent":["import { StytchB2BProps } from './Stytch';\nimport { B2BIDPContainer } from '../../b2b/App';\nimport { createB2BComponent } from '../bindings/createB2BComponent';\nimport { AuthTokenParams, B2BIDPConsentManifestGenerator } from '../../../types';\n\nexport type B2BIdentityProviderProps = Omit<StytchB2BProps, 'config'> & {\n /**\n * Optional {@link B2BIDPConsentManifestGenerator} to customize the consent screen.\n */\n getIDPConsentManifest?: B2BIDPConsentManifestGenerator;\n /**\n * Optional trusted auth token parameters to attest before the OAuth flow.\n */\n trustedAuthTokenParams?: AuthTokenParams;\n};\n\n/**\n * The Stytch B2B IDP component.\n * Parses OAuth Authorization params (client_id, scope, nonce, etc.) out of the page URL.\n * Requires the user to be logged in.\n * This component can only be used with a Stytch B2B UI Client\n * passed into the StytchB2BProvider.\n *\n * See the {@link https://stytch.com/docs/b2b/sdks online reference}\n *\n * @example\n * <B2BIdentityProvider\n * presentation={{\n * theme: { primary: '#ff00f7' },\n * options: {},\n * }}\n * callbacks={{\n * onEvent: (event) => console.log(event)\n * }}\n * />\n */\nexport const B2BIdentityProvider = createB2BComponent('B2BIdentityProvider', B2BIDPContainer);\n"],"names":["B2BIdentityProvider","createB2BComponent","B2BIDPContainer"],"mappings":";;;AAgBA;;;;;;;;;;;;;;;;;;;AAmBC,IACM,MAAMA,mBAAAA,GAAsBC,kBAAAA,CAAmB,uBAAuBC,eAAAA;;;;"}
1
+ {"version":3,"file":"B2BIdentityProvider.mjs","sources":["../../../../../../../../../web/src/ui/react/b2b/B2BIdentityProvider.tsx"],"sourcesContent":["import { StytchB2BProps } from './Stytch';\nimport { B2BIDPContainer } from '../../b2b/App';\nimport { createB2BComponent } from '../bindings/createB2BComponent';\nimport { AuthTokenParams, B2BIDPConsentManifestGenerator } from '../../../types';\n\nexport type B2BIdentityProviderProps = Omit<StytchB2BProps, 'config'> & {\n /**\n * Optional {@link B2BIDPConsentManifestGenerator} to customize the consent screen.\n */\n getIDPConsentManifest?: B2BIDPConsentManifestGenerator;\n /**\n * Optional trusted auth token parameters to attest before the OAuth flow.\n */\n trustedAuthTokenParams?: AuthTokenParams;\n};\n\n/**\n * The Stytch B2B IDP component.\n * Parses OAuth Authorization params (client_id, scope, nonce, etc.) out of the page URL.\n * Requires the user to be logged in.\n * This component can only be used with a Stytch B2B UI Client\n * passed into the StytchB2BProvider.\n *\n * See the {@link https://stytch.com/docs/b2b/sdks online reference}\n *\n * @example\n * <B2BIdentityProvider\n * presentation={{\n * theme: { primary: '#ff00f7' },\n * options: {},\n * }}\n * callbacks={{\n * onEvent: (event) => console.log(event)\n * }}\n * />\n */\nexport const B2BIdentityProvider = /* @__PURE__ */ createB2BComponent('B2BIdentityProvider', B2BIDPContainer);\n"],"names":["B2BIdentityProvider","createB2BComponent","B2BIDPContainer"],"mappings":";;;AAgBA;;;;;;;;;;;;;;;;;;;AAmBC,IACM,MAAMA,mBAAAA,mBAAsCC,kBAAAA,CAAmB,uBAAuBC,eAAAA;;;;"}
@@ -32,7 +32,7 @@ import { createB2BComponent } from '../bindings/createB2BComponent.mjs';
32
32
  * onEvent: (event) => console.log(event)
33
33
  * }}
34
34
  * />
35
- */ const StytchB2B = createB2BComponent('StytchB2B', AppContainer);
35
+ */ const StytchB2B = /* @__PURE__ */ createB2BComponent('StytchB2B', AppContainer);
36
36
 
37
37
  export { StytchB2B };
38
38
  //# sourceMappingURL=Stytch.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Stytch.mjs","sources":["../../../../../../../../../web/src/ui/react/b2b/Stytch.tsx"],"sourcesContent":["import { Callbacks, StringsOptions, StytchProjectConfigurationInput } from '@stytch/core/public';\nimport { PresentationConfig, StytchB2BUIConfig } from '../../../types';\nimport { AppContainer } from '../../b2b/App';\nimport { createB2BComponent } from '../bindings/createB2BComponent';\n\nexport interface StytchB2BProps<\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n> extends StringsOptions {\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 error', message)\n * }\n * }\n *\n * @example\n * {\n * onEvent: ({type, data}) => {\n * if(type === StytchEventType.B2BMagicLinkAuthenticate) {\n * console.log('Logged in with', data);\n * }\n * }\n * }\n */\n callbacks?: Callbacks<TProjectConfiguration>;\n /**\n * A {@link StytchB2BUIConfig} object. Add products and product-specific config to this object to change the login methods shown.\n *\n *\n * @example\n * {\n * products: [B2BProducts.emailMagicLinks],\n * authFlowType: \"Discovery\",\n * emailMagicLinksOptions: {\n * discoveryRedirectURL: 'https://example.com/authenticate',\n * },\n * sessionOptions: {\n * sessionDurationMinutes: 60,\n * },\n * }\n *\n * @example\n * {\n * products: [B2BProducts.emailMagicLinks, B2BProducts.sso],\n * authFlowType: \"Organization\",\n * emailMagicLinksOptions: {\n * loginRedirectURL: 'https://example.com/authenticate',\n * signupRedirectURL: 'https://example.com/authenticate',\n * },\n * ssoOptions: {\n * loginRedirectURL: 'https://example.com/authenticate',\n * signupRedirectURL: 'https://example.com/authenticate',\n * },\n * sessionOptions: {\n * sessionDurationMinutes: 60,\n * },\n * }\n */\n config: StytchB2BUIConfig;\n}\n\n/**\n * The Stytch B2B UI component.\n * This component can only be used with a Stytch B2B UI Client\n * passed into the StytchB2BProvider.\n *\n * See the {@link https://stytch.com/docs/b2b/sdks online reference}\n *\n * @example\n * <StytchB2B\n * config={{\n * authFlowType: \"Organization\",\n * emailMagicLinksOptions: {\n * loginRedirectURL: 'https://example.com/authenticate',\n * signupRedirectURL: 'https://example.com/authenticate',\n * },\n * ssoOptions: {\n * loginRedirectURL: 'https://example.com/authenticate',\n * signupRedirectURL: 'https://example.com/authenticate',\n * },\n * sessionOptions: {\n * sessionDurationMinutes: 60,\n * }\n * }}\n * presentation={{\n * theme: { primary: '#0577CA' },\n * options: {},\n * }}\n * callbacks={{\n * onEvent: (event) => console.log(event)\n * }}\n * />\n */\nexport const StytchB2B = createB2BComponent('StytchB2B', AppContainer);\n"],"names":["StytchB2B","createB2BComponent","AppContainer"],"mappings":";;;AAoEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BC,IACM,MAAMA,SAAAA,GAAYC,kBAAAA,CAAmB,aAAaC,YAAAA;;;;"}
1
+ {"version":3,"file":"Stytch.mjs","sources":["../../../../../../../../../web/src/ui/react/b2b/Stytch.tsx"],"sourcesContent":["import { Callbacks, StringsOptions, StytchProjectConfigurationInput } from '@stytch/core/public';\nimport { PresentationConfig, StytchB2BUIConfig } from '../../../types';\nimport { AppContainer } from '../../b2b/App';\nimport { createB2BComponent } from '../bindings/createB2BComponent';\n\nexport interface StytchB2BProps<\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n> extends StringsOptions {\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 error', message)\n * }\n * }\n *\n * @example\n * {\n * onEvent: ({type, data}) => {\n * if(type === StytchEventType.B2BMagicLinkAuthenticate) {\n * console.log('Logged in with', data);\n * }\n * }\n * }\n */\n callbacks?: Callbacks<TProjectConfiguration>;\n /**\n * A {@link StytchB2BUIConfig} object. Add products and product-specific config to this object to change the login methods shown.\n *\n *\n * @example\n * {\n * products: [B2BProducts.emailMagicLinks],\n * authFlowType: \"Discovery\",\n * emailMagicLinksOptions: {\n * discoveryRedirectURL: 'https://example.com/authenticate',\n * },\n * sessionOptions: {\n * sessionDurationMinutes: 60,\n * },\n * }\n *\n * @example\n * {\n * products: [B2BProducts.emailMagicLinks, B2BProducts.sso],\n * authFlowType: \"Organization\",\n * emailMagicLinksOptions: {\n * loginRedirectURL: 'https://example.com/authenticate',\n * signupRedirectURL: 'https://example.com/authenticate',\n * },\n * ssoOptions: {\n * loginRedirectURL: 'https://example.com/authenticate',\n * signupRedirectURL: 'https://example.com/authenticate',\n * },\n * sessionOptions: {\n * sessionDurationMinutes: 60,\n * },\n * }\n */\n config: StytchB2BUIConfig;\n}\n\n/**\n * The Stytch B2B UI component.\n * This component can only be used with a Stytch B2B UI Client\n * passed into the StytchB2BProvider.\n *\n * See the {@link https://stytch.com/docs/b2b/sdks online reference}\n *\n * @example\n * <StytchB2B\n * config={{\n * authFlowType: \"Organization\",\n * emailMagicLinksOptions: {\n * loginRedirectURL: 'https://example.com/authenticate',\n * signupRedirectURL: 'https://example.com/authenticate',\n * },\n * ssoOptions: {\n * loginRedirectURL: 'https://example.com/authenticate',\n * signupRedirectURL: 'https://example.com/authenticate',\n * },\n * sessionOptions: {\n * sessionDurationMinutes: 60,\n * }\n * }}\n * presentation={{\n * theme: { primary: '#0577CA' },\n * options: {},\n * }}\n * callbacks={{\n * onEvent: (event) => console.log(event)\n * }}\n * />\n */\nexport const StytchB2B = /* @__PURE__ */ createB2BComponent('StytchB2B', AppContainer);\n"],"names":["StytchB2B","createB2BComponent","AppContainer"],"mappings":";;;AAoEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BC,IACM,MAAMA,SAAAA,mBAA4BC,kBAAAA,CAAmB,aAAaC,YAAAA;;;;"}
@@ -85,7 +85,7 @@ const useIsMounted__INTERNAL = ()=>useContext(StytchB2BContext).isMounted;
85
85
  *
86
86
  * Remember - authorization checks for sensitive actions should always occur on the backend as well.
87
87
  * @example
88
- * const { isAuthorized } = useStytchIsAuthorized<Permissions>('documents', 'edit');
88
+ * const { isAuthorized } = useStytchIsAuthorized('documents', 'edit');
89
89
  * return <button disabled={!isAuthorized}>Edit</button>
90
90
  */ const useStytchIsAuthorized = (resourceId, action)=>{
91
91
  invariant(useIsMounted__INTERNAL(), noProviderError('useStytchIsAuthorized', 'StytchB2BProvider'));
@@ -1 +1 @@
1
- {"version":3,"file":"StytchB2BContext.mjs","sources":["../../../../../../../../../web/src/ui/react/b2b/StytchB2BContext.tsx"],"sourcesContent":["import React, {\n ComponentType,\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n} from 'react';\n\nimport {\n Member,\n MemberSession,\n Organization,\n PermissionsMap,\n StytchProjectConfigurationInput,\n} from '@stytch/core/public';\nimport { mergeWithStableProps } from '@stytch/js-utils';\nimport { isStytchSSRProxy } from '../bindings/StytchSSRProxy';\nimport { useAsyncState } from '../utils/async';\nimport { noProviderError } from '../utils/errors';\nimport { invariant } from '../utils/invariant';\nimport { StytchB2BClient } from '../../../b2b/StytchB2BClient';\n\n// There's no user facing strings in this file\n/* eslint-disable lingui/no-unlocalized-strings */\n\ntype StytchB2BContext<TProjectConfiguration extends StytchProjectConfigurationInput> =\n | {\n isMounted: false;\n }\n | {\n isMounted: true;\n client: StytchB2BClient<TProjectConfiguration>;\n };\n\ntype SWRMemberUninitialized = {\n /**\n * Either the active {@link Member} object, or null if the member is not logged in.\n */\n member: 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 SWRMemberInitialized = {\n /**\n * Either the active {@link Member} object, or null if the member is not logged in.\n */\n member: Member | 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 SWRMember<TAlwaysInitialized extends boolean = boolean> = TAlwaysInitialized extends true\n ? SWRMemberInitialized\n : SWRMemberInitialized | SWRMemberUninitialized;\n\nconst initialMember: SWRMember = {\n member: null,\n fromCache: false,\n isInitialized: false,\n};\n\ntype SWRMemberSessionUninitialized = {\n /**\n * Either the active {@link MemberSession} object, or null if the member 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 SWRMemberSessionInitialized = {\n /**\n * Either the active {@link MemberSession} object, or null if the member is not logged in.\n */\n session: MemberSession | 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 SWRMemberSession<TAlwaysInitialized extends boolean = boolean> = TAlwaysInitialized extends true\n ? SWRMemberSessionInitialized\n : SWRMemberSessionInitialized | SWRMemberSessionUninitialized;\n\nconst initialMemberSession: SWRMemberSession = {\n session: null,\n fromCache: false,\n isInitialized: false,\n};\n\ntype SWROrganizationUninitialized = {\n /**\n * Either the active {@link Organization} object, or null if the member is not logged in.\n */\n organization: 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 SWROrganizationInitialized = {\n /**\n * Either the active {@link Organization} object, or null if the member is not logged in.\n */\n organization: Organization | 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 SWROrganization<TAlwaysInitialized extends boolean = boolean> = TAlwaysInitialized extends true\n ? SWROrganizationInitialized\n : SWROrganizationInitialized | SWROrganizationUninitialized;\n\nconst initialOrganization: SWROrganization = {\n organization: null,\n fromCache: false,\n isInitialized: false,\n};\n\nconst StytchB2BContext = createContext<StytchB2BContext<StytchProjectConfigurationInput>>({ isMounted: false });\nconst StytchMemberContext = createContext<SWRMember>(initialMember);\nconst StytchMemberSessionContext = createContext<SWRMemberSession>(initialMemberSession);\nconst StytchOrganizationContext = createContext<SWROrganization>(initialOrganization);\n\nexport const useIsMounted__INTERNAL = (): boolean => useContext(StytchB2BContext).isMounted;\n\n/**\n * Returns the active Member.\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 member data is from persistent storage.\n * @example\n * const {member, isInitialized, fromCache} = useStytchMember();\n * if (!isInitialized) {\n * return <p>Loading...</p>;\n * }\n * return (<h1>Welcome, {member.name}</h1>);\n */\nexport const useStytchMember = <TAssumeHydrated extends boolean = false>(): SWRMember<TAssumeHydrated> => {\n invariant(useIsMounted__INTERNAL(), noProviderError('useStytchMember', 'StytchB2BProvider'));\n return useContext(StytchMemberContext) as SWRMember<TAssumeHydrated>;\n};\n\n/**\n * Returns the active member's Stytch member 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} = useStytchMemberSession();\n * useEffect(() => {\n * if (!isInitialized) {\n * return;\n * }\n * if (!session) {\n * router.replace('/login')\n * }\n * }, [session, isInitialized]);\n */\nexport const useStytchMemberSession = <\n TAssumeHydrated extends boolean = false,\n>(): SWRMemberSession<TAssumeHydrated> => {\n invariant(useIsMounted__INTERNAL(), noProviderError('useStytchMemberSession', 'StytchB2BProvider'));\n return useContext(StytchMemberSessionContext) as SWRMemberSession<TAssumeHydrated>;\n};\n\n/**\n * Returns the active Stytch organization.\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 organization data is from persistent storage.\n * @example\n * const {organization, isInitialized, fromCache} = useStytchOrganization();\n * if (!isInitialized) {\n * return <p>Loading...</p>;\n * }\n * return (<p>Welcome to {organization.organization_name}</p>);\n */\nexport const useStytchOrganization = <TAssumeHydrated extends boolean = false>(): SWROrganization<TAssumeHydrated> => {\n invariant(useIsMounted__INTERNAL(), noProviderError('useStytchOrganization', 'StytchB2BProvider'));\n return useContext(StytchOrganizationContext) as SWROrganization<TAssumeHydrated>;\n};\n\ntype SWRIsAuthorizedUninitialized = {\n /**\n * Whether the logged-in member 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 member 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 member is allowed to perform the specified action on the specified resource.\n * Returns `true` if the member can perform the action, `false` otherwise.\n *\n * If the member 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', 'StytchB2BProvider'));\n const client = useStytchB2BClient();\n const { session } = useStytchMemberSession();\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\n client.rbac.isAuthorized(resourceId, action).then((isAuthorized) => {\n setIsAuthorized({ isAuthorized, fromCache: false, isInitialized: true });\n });\n }, [client, session?.roles, resourceId, action, setIsAuthorized]);\n\n return isAuthorized;\n};\n\n/**\n * Returns the Stytch B2B client stored in the Stytch context.\n *\n * @example\n * const stytch = useStytchB2BClient();\n * useEffect(() => {\n * stytch.magicLinks.authenticate('...')\n * }, [stytch]);\n */\nexport const useStytchB2BClient = <\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n>(): StytchB2BClient<TProjectConfiguration> => {\n const ctx = useContext(StytchB2BContext);\n invariant(ctx.isMounted, noProviderError('useStytchB2BClient', 'StytchB2BProvider'));\n return ctx.client as StytchB2BClient<TProjectConfiguration>;\n};\n\nexport const withStytchB2BClient = <T extends object, TProjectConfiguration extends StytchProjectConfigurationInput>(\n Component: ComponentType<T & { stytch: StytchB2BClient<TProjectConfiguration> }>,\n): ComponentType<T> => {\n const WithStytch: ComponentType<T> = (props) => {\n invariant(useIsMounted__INTERNAL(), noProviderError('withStytchB2BClient', 'StytchB2BProvider'));\n return <Component {...props} stytch={useStytchB2BClient()} />;\n };\n WithStytch.displayName = `withStytch(${Component.displayName || Component.name || 'Component'})`;\n return WithStytch;\n};\n\nexport const withStytchMember = <T extends object, TAssumeHydrated extends boolean = false>(\n Component: ComponentType<\n T & { stytchMember: Member | null; stytchMemberIsInitialized: boolean; stytchMemberIsFromCache: boolean }\n >,\n): ComponentType<T> => {\n const WithStytchUser: ComponentType<T> = (props) => {\n invariant(useIsMounted__INTERNAL(), noProviderError('withStytchMember', 'StytchB2BProvider'));\n const { member, isInitialized, fromCache } = useStytchMember<TAssumeHydrated>();\n return (\n <Component\n {...props}\n stytchMember={member}\n stytchMemberIsInitialized={isInitialized}\n stytchMemberIsFromCache={fromCache}\n />\n );\n };\n WithStytchUser.displayName = `withStytchMember(${Component.displayName || Component.name || 'Component'})`;\n return WithStytchUser;\n};\n\nexport const withStytchMemberSession = <T extends object, TAssumeHydrated extends boolean = false>(\n Component: ComponentType<\n T & {\n stytchMemberSession: MemberSession | null;\n stytchMemberSessionIsInitialized: boolean;\n stytchMemberSessionIsFromCache: boolean;\n }\n >,\n): ComponentType<T> => {\n const WithStytchSession: ComponentType<T> = (props) => {\n invariant(useIsMounted__INTERNAL(), noProviderError('withStytchMemberSession', 'StytchB2BProvider'));\n const { session, isInitialized, fromCache } = useStytchMemberSession<TAssumeHydrated>();\n return (\n <Component\n {...props}\n stytchMemberSession={session}\n stytchMemberSessionIsInitialized={isInitialized}\n stytchMemberSessionIsFromCache={fromCache}\n />\n );\n };\n WithStytchSession.displayName = `withStytchMemberSession(${Component.displayName || Component.name || 'Component'})`;\n return WithStytchSession;\n};\n\nexport const withStytchOrganization = <T extends object, TAssumeHydrated extends boolean = false>(\n Component: ComponentType<\n T & {\n stytchOrganization: Organization | null;\n stytchOrganizationIsInitialized: boolean;\n stytchOrganizationIsFromCache: boolean;\n }\n >,\n): ComponentType<T> => {\n const WithStytchOrganization: ComponentType<T> = (props) => {\n invariant(useIsMounted__INTERNAL(), noProviderError('withStytchOrganization', 'StytchB2BProvider'));\n const { organization, isInitialized, fromCache } = useStytchOrganization<TAssumeHydrated>();\n return (\n <Component\n {...props}\n stytchOrganization={organization}\n stytchOrganizationIsInitialized={isInitialized}\n stytchOrganizationIsFromCache={fromCache}\n />\n );\n };\n WithStytchOrganization.displayName = `withStytchOrganization(${\n Component.displayName || Component.name || 'Component'\n })`;\n return WithStytchOrganization;\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 member.\n * Evaluates all permissions granted to the logged-in member.\n * Returns a Record<RoleId, Record<Action, boolean>> response indicating the member's permissions.\n * Each boolean will be `true` if the member can perform the action, `false` otherwise.\n *\n * If the member 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', 'StytchB2BProvider'));\n const client = useStytchB2BClient();\n const { session } = useStytchMemberSession();\n const [permissions, setPermissions] = useAsyncState<permissionsLoaded<Permissions>>({ loaded: false, value: null });\n useEffect(() => {\n client.rbac\n .allPermissions<Permissions>()\n .then((permissions) => setPermissions({ loaded: true, value: permissions }));\n }, [client, session?.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 StytchB2BProviderProps<\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n> {\n /**\n * A Stytch client instance, created using either {@link createStytchB2BClient} or {@link createStytchB2BClient}\n */\n stytch: StytchB2BClient<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 = createStytchB2BClient('public-token-<find yours in the stytch dashboard>')\n *\n * return (\n * <StytchB2BProvider stytch={stytch}>\n * <App />\n * </StytchB2BProvider>\n * )\n */\nexport const StytchB2BProvider = <\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n>({\n stytch,\n children,\n assumeHydrated = false,\n}: StytchB2BProviderProps<TProjectConfiguration>): JSX.Element => {\n invariant(!useIsMounted__INTERNAL(), 'You cannot render a <StytchB2BProvider> inside another <StytchB2BProvider>.');\n invariant(\n !assumeHydrated || typeof window !== 'undefined',\n 'The `assumeHydrated` prop must be set to `false` when using StytchB2BProvider in a server environment.',\n );\n\n const ctx = useMemo(() => ({ client: stytch, isMounted: true }), [stytch]);\n\n type ClientState<TAlwaysInitialized extends boolean> = {\n member: SWRMember<TAlwaysInitialized>;\n session: SWRMemberSession<TAlwaysInitialized>;\n organization: SWROrganization<TAlwaysInitialized>;\n };\n\n const getHydratedState = useCallback(() => {\n return {\n member: { ...stytch.self.getInfo(), isInitialized: true },\n session: { ...stytch.session.getInfo(), isInitialized: true },\n organization: { ...stytch.organization.getInfo(), isInitialized: true },\n } satisfies ClientState<true>;\n }, [stytch]);\n\n const getInitialState = () => {\n return {\n member: initialMember,\n session: initialMemberSession,\n organization: initialOrganization,\n } satisfies ClientState<false>;\n };\n\n const [{ member, session, organization }, 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 <StytchB2BContext.Provider value={ctx}>\n <StytchOrganizationContext.Provider value={organization}>\n <StytchMemberContext.Provider value={member}>\n <StytchMemberSessionContext.Provider value={session}>{children}</StytchMemberSessionContext.Provider>\n </StytchMemberContext.Provider>\n </StytchOrganizationContext.Provider>\n </StytchB2BContext.Provider>\n );\n};\n"],"names":["initialMember","member","fromCache","isInitialized","initialMemberSession","session","initialOrganization","organization","StytchB2BContext","createContext","isMounted","StytchMemberContext","StytchMemberSessionContext","StytchOrganizationContext","useIsMounted__INTERNAL","useContext","useStytchMember","invariant","noProviderError","useStytchMemberSession","useStytchOrganization","useStytchIsAuthorized","resourceId","action","client","useStytchB2BClient","isAuthorized","setIsAuthorized","useAsyncState","useEffect","isStytchSSRProxy","rbac","isAuthorizedSync","then","roles","ctx","withStytchB2BClient","Component","WithStytch","props","React","stytch","displayName","name","withStytchMember","WithStytchUser","stytchMember","stytchMemberIsInitialized","stytchMemberIsFromCache","withStytchMemberSession","WithStytchSession","stytchMemberSession","stytchMemberSessionIsInitialized","stytchMemberSessionIsFromCache","withStytchOrganization","WithStytchOrganization","stytchOrganization","stytchOrganizationIsInitialized","stytchOrganizationIsFromCache","withStytchPermissions","WithStytchPermissions","permissions","setPermissions","loaded","value","allPermissions","stytchPermissions","StytchB2BProvider","children","assumeHydrated","window","useMemo","getHydratedState","useCallback","self","getInfo","getInitialState","setClientState","assumeHydratedRef","useRef","updateState","oldState","mergeWithStableProps","current","onStateChange","Provider"],"mappings":"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"}
1
+ {"version":3,"file":"StytchB2BContext.mjs","sources":["../../../../../../../../../web/src/ui/react/b2b/StytchB2BContext.tsx"],"sourcesContent":["import React, {\n ComponentType,\n createContext,\n ReactNode,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n} from 'react';\n\nimport {\n Member,\n MemberSession,\n Organization,\n PermissionsMap,\n StytchProjectConfigurationInput,\n} from '@stytch/core/public';\nimport { mergeWithStableProps } from '@stytch/js-utils';\nimport { isStytchSSRProxy } from '../bindings/StytchSSRProxy';\nimport { useAsyncState } from '../utils/async';\nimport { noProviderError } from '../utils/errors';\nimport { invariant } from '../utils/invariant';\nimport { StytchB2BClient } from '../../../b2b/StytchB2BClient';\n\n// There's no user facing strings in this file\n/* eslint-disable lingui/no-unlocalized-strings */\n\ntype StytchB2BContext<TProjectConfiguration extends StytchProjectConfigurationInput> =\n | {\n isMounted: false;\n }\n | {\n isMounted: true;\n client: StytchB2BClient<TProjectConfiguration>;\n };\n\ntype SWRMemberUninitialized = {\n /**\n * Either the active {@link Member} object, or null if the member is not logged in.\n */\n member: 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 SWRMemberInitialized = {\n /**\n * Either the active {@link Member} object, or null if the member is not logged in.\n */\n member: Member | 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 SWRMember<TAlwaysInitialized extends boolean = boolean> = TAlwaysInitialized extends true\n ? SWRMemberInitialized\n : SWRMemberInitialized | SWRMemberUninitialized;\n\nconst initialMember: SWRMember = {\n member: null,\n fromCache: false,\n isInitialized: false,\n};\n\ntype SWRMemberSessionUninitialized = {\n /**\n * Either the active {@link MemberSession} object, or null if the member 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 SWRMemberSessionInitialized = {\n /**\n * Either the active {@link MemberSession} object, or null if the member is not logged in.\n */\n session: MemberSession | 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 SWRMemberSession<TAlwaysInitialized extends boolean = boolean> = TAlwaysInitialized extends true\n ? SWRMemberSessionInitialized\n : SWRMemberSessionInitialized | SWRMemberSessionUninitialized;\n\nconst initialMemberSession: SWRMemberSession = {\n session: null,\n fromCache: false,\n isInitialized: false,\n};\n\ntype SWROrganizationUninitialized = {\n /**\n * Either the active {@link Organization} object, or null if the member is not logged in.\n */\n organization: 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 SWROrganizationInitialized = {\n /**\n * Either the active {@link Organization} object, or null if the member is not logged in.\n */\n organization: Organization | 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 SWROrganization<TAlwaysInitialized extends boolean = boolean> = TAlwaysInitialized extends true\n ? SWROrganizationInitialized\n : SWROrganizationInitialized | SWROrganizationUninitialized;\n\nconst initialOrganization: SWROrganization = {\n organization: null,\n fromCache: false,\n isInitialized: false,\n};\n\nconst StytchB2BContext = createContext<StytchB2BContext<StytchProjectConfigurationInput>>({ isMounted: false });\nconst StytchMemberContext = createContext<SWRMember>(initialMember);\nconst StytchMemberSessionContext = createContext<SWRMemberSession>(initialMemberSession);\nconst StytchOrganizationContext = createContext<SWROrganization>(initialOrganization);\n\nexport const useIsMounted__INTERNAL = (): boolean => useContext(StytchB2BContext).isMounted;\n\n/**\n * Returns the active Member.\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 member data is from persistent storage.\n * @example\n * const {member, isInitialized, fromCache} = useStytchMember();\n * if (!isInitialized) {\n * return <p>Loading...</p>;\n * }\n * return (<h1>Welcome, {member.name}</h1>);\n */\nexport const useStytchMember = <TAssumeHydrated extends boolean = false>(): SWRMember<TAssumeHydrated> => {\n invariant(useIsMounted__INTERNAL(), noProviderError('useStytchMember', 'StytchB2BProvider'));\n return useContext(StytchMemberContext) as SWRMember<TAssumeHydrated>;\n};\n\n/**\n * Returns the active member's Stytch member 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} = useStytchMemberSession();\n * useEffect(() => {\n * if (!isInitialized) {\n * return;\n * }\n * if (!session) {\n * router.replace('/login')\n * }\n * }, [session, isInitialized]);\n */\nexport const useStytchMemberSession = <\n TAssumeHydrated extends boolean = false,\n>(): SWRMemberSession<TAssumeHydrated> => {\n invariant(useIsMounted__INTERNAL(), noProviderError('useStytchMemberSession', 'StytchB2BProvider'));\n return useContext(StytchMemberSessionContext) as SWRMemberSession<TAssumeHydrated>;\n};\n\n/**\n * Returns the active Stytch organization.\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 organization data is from persistent storage.\n * @example\n * const {organization, isInitialized, fromCache} = useStytchOrganization();\n * if (!isInitialized) {\n * return <p>Loading...</p>;\n * }\n * return (<p>Welcome to {organization.organization_name}</p>);\n */\nexport const useStytchOrganization = <TAssumeHydrated extends boolean = false>(): SWROrganization<TAssumeHydrated> => {\n invariant(useIsMounted__INTERNAL(), noProviderError('useStytchOrganization', 'StytchB2BProvider'));\n return useContext(StytchOrganizationContext) as SWROrganization<TAssumeHydrated>;\n};\n\ntype SWRIsAuthorizedUninitialized = {\n /**\n * Whether the logged-in member 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 member 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 member is allowed to perform the specified action on the specified resource.\n * Returns `true` if the member can perform the action, `false` otherwise.\n *\n * If the member 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', 'StytchB2BProvider'));\n const client = useStytchB2BClient();\n const { session } = useStytchMemberSession();\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\n client.rbac.isAuthorized(resourceId, action).then((isAuthorized) => {\n setIsAuthorized({ isAuthorized, fromCache: false, isInitialized: true });\n });\n }, [client, session?.roles, resourceId, action, setIsAuthorized]);\n\n return isAuthorized;\n};\n\n/**\n * Returns the Stytch B2B client stored in the Stytch context.\n *\n * @example\n * const stytch = useStytchB2BClient();\n * useEffect(() => {\n * stytch.magicLinks.authenticate('...')\n * }, [stytch]);\n */\nexport const useStytchB2BClient = <\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n>(): StytchB2BClient<TProjectConfiguration> => {\n const ctx = useContext(StytchB2BContext);\n invariant(ctx.isMounted, noProviderError('useStytchB2BClient', 'StytchB2BProvider'));\n return ctx.client as StytchB2BClient<TProjectConfiguration>;\n};\n\nexport const withStytchB2BClient = <T extends object, TProjectConfiguration extends StytchProjectConfigurationInput>(\n Component: ComponentType<T & { stytch: StytchB2BClient<TProjectConfiguration> }>,\n): ComponentType<T> => {\n const WithStytch: ComponentType<T> = (props) => {\n invariant(useIsMounted__INTERNAL(), noProviderError('withStytchB2BClient', 'StytchB2BProvider'));\n return <Component {...props} stytch={useStytchB2BClient()} />;\n };\n WithStytch.displayName = `withStytch(${Component.displayName || Component.name || 'Component'})`;\n return WithStytch;\n};\n\nexport const withStytchMember = <T extends object, TAssumeHydrated extends boolean = false>(\n Component: ComponentType<\n T & { stytchMember: Member | null; stytchMemberIsInitialized: boolean; stytchMemberIsFromCache: boolean }\n >,\n): ComponentType<T> => {\n const WithStytchUser: ComponentType<T> = (props) => {\n invariant(useIsMounted__INTERNAL(), noProviderError('withStytchMember', 'StytchB2BProvider'));\n const { member, isInitialized, fromCache } = useStytchMember<TAssumeHydrated>();\n return (\n <Component\n {...props}\n stytchMember={member}\n stytchMemberIsInitialized={isInitialized}\n stytchMemberIsFromCache={fromCache}\n />\n );\n };\n WithStytchUser.displayName = `withStytchMember(${Component.displayName || Component.name || 'Component'})`;\n return WithStytchUser;\n};\n\nexport const withStytchMemberSession = <T extends object, TAssumeHydrated extends boolean = false>(\n Component: ComponentType<\n T & {\n stytchMemberSession: MemberSession | null;\n stytchMemberSessionIsInitialized: boolean;\n stytchMemberSessionIsFromCache: boolean;\n }\n >,\n): ComponentType<T> => {\n const WithStytchSession: ComponentType<T> = (props) => {\n invariant(useIsMounted__INTERNAL(), noProviderError('withStytchMemberSession', 'StytchB2BProvider'));\n const { session, isInitialized, fromCache } = useStytchMemberSession<TAssumeHydrated>();\n return (\n <Component\n {...props}\n stytchMemberSession={session}\n stytchMemberSessionIsInitialized={isInitialized}\n stytchMemberSessionIsFromCache={fromCache}\n />\n );\n };\n WithStytchSession.displayName = `withStytchMemberSession(${Component.displayName || Component.name || 'Component'})`;\n return WithStytchSession;\n};\n\nexport const withStytchOrganization = <T extends object, TAssumeHydrated extends boolean = false>(\n Component: ComponentType<\n T & {\n stytchOrganization: Organization | null;\n stytchOrganizationIsInitialized: boolean;\n stytchOrganizationIsFromCache: boolean;\n }\n >,\n): ComponentType<T> => {\n const WithStytchOrganization: ComponentType<T> = (props) => {\n invariant(useIsMounted__INTERNAL(), noProviderError('withStytchOrganization', 'StytchB2BProvider'));\n const { organization, isInitialized, fromCache } = useStytchOrganization<TAssumeHydrated>();\n return (\n <Component\n {...props}\n stytchOrganization={organization}\n stytchOrganizationIsInitialized={isInitialized}\n stytchOrganizationIsFromCache={fromCache}\n />\n );\n };\n WithStytchOrganization.displayName = `withStytchOrganization(${\n Component.displayName || Component.name || 'Component'\n })`;\n return WithStytchOrganization;\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 member.\n * Evaluates all permissions granted to the logged-in member.\n * Returns a Record<RoleId, Record<Action, boolean>> response indicating the member's permissions.\n * Each boolean will be `true` if the member can perform the action, `false` otherwise.\n *\n * If the member 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', 'StytchB2BProvider'));\n const client = useStytchB2BClient();\n const { session } = useStytchMemberSession();\n const [permissions, setPermissions] = useAsyncState<PermissionsLoaded<Permissions>>({ loaded: false, value: null });\n useEffect(() => {\n client.rbac\n .allPermissions<Permissions>()\n .then((permissions) => setPermissions({ loaded: true, value: permissions }));\n }, [client, session?.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 StytchB2BProviderProps<\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n> {\n /**\n * A Stytch client instance, created using either {@link createStytchB2BClient} or {@link createStytchB2BClient}\n */\n stytch: StytchB2BClient<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 = createStytchB2BClient('public-token-<find yours in the stytch dashboard>')\n *\n * return (\n * <StytchB2BProvider stytch={stytch}>\n * <App />\n * </StytchB2BProvider>\n * )\n */\nexport const StytchB2BProvider = <\n TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n>({\n stytch,\n children,\n assumeHydrated = false,\n}: StytchB2BProviderProps<TProjectConfiguration>): JSX.Element => {\n invariant(!useIsMounted__INTERNAL(), 'You cannot render a <StytchB2BProvider> inside another <StytchB2BProvider>.');\n invariant(\n !assumeHydrated || typeof window !== 'undefined',\n 'The `assumeHydrated` prop must be set to `false` when using StytchB2BProvider in a server environment.',\n );\n\n const ctx = useMemo(() => ({ client: stytch, isMounted: true }), [stytch]);\n\n type ClientState<TAlwaysInitialized extends boolean> = {\n member: SWRMember<TAlwaysInitialized>;\n session: SWRMemberSession<TAlwaysInitialized>;\n organization: SWROrganization<TAlwaysInitialized>;\n };\n\n const getHydratedState = useCallback(() => {\n return {\n member: { ...stytch.self.getInfo(), isInitialized: true },\n session: { ...stytch.session.getInfo(), isInitialized: true },\n organization: { ...stytch.organization.getInfo(), isInitialized: true },\n } satisfies ClientState<true>;\n }, [stytch]);\n\n const getInitialState = () => {\n return {\n member: initialMember,\n session: initialMemberSession,\n organization: initialOrganization,\n } satisfies ClientState<false>;\n };\n\n const [{ member, session, organization }, 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 <StytchB2BContext.Provider value={ctx}>\n <StytchOrganizationContext.Provider value={organization}>\n <StytchMemberContext.Provider value={member}>\n <StytchMemberSessionContext.Provider value={session}>{children}</StytchMemberSessionContext.Provider>\n </StytchMemberContext.Provider>\n </StytchOrganizationContext.Provider>\n </StytchB2BContext.Provider>\n );\n};\n"],"names":["initialMember","member","fromCache","isInitialized","initialMemberSession","session","initialOrganization","organization","StytchB2BContext","createContext","isMounted","StytchMemberContext","StytchMemberSessionContext","StytchOrganizationContext","useIsMounted__INTERNAL","useContext","useStytchMember","invariant","noProviderError","useStytchMemberSession","useStytchOrganization","useStytchIsAuthorized","resourceId","action","client","useStytchB2BClient","isAuthorized","setIsAuthorized","useAsyncState","useEffect","isStytchSSRProxy","rbac","isAuthorizedSync","then","roles","ctx","withStytchB2BClient","Component","WithStytch","props","React","stytch","displayName","name","withStytchMember","WithStytchUser","stytchMember","stytchMemberIsInitialized","stytchMemberIsFromCache","withStytchMemberSession","WithStytchSession","stytchMemberSession","stytchMemberSessionIsInitialized","stytchMemberSessionIsFromCache","withStytchOrganization","WithStytchOrganization","stytchOrganization","stytchOrganizationIsInitialized","stytchOrganizationIsFromCache","withStytchPermissions","WithStytchPermissions","permissions","setPermissions","loaded","value","allPermissions","stytchPermissions","StytchB2BProvider","children","assumeHydrated","window","useMemo","getHydratedState","useCallback","self","getInfo","getInitialState","setClientState","assumeHydratedRef","useRef","updateState","oldState","mergeWithStableProps","current","onStateChange","Provider"],"mappings":"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"}
@@ -20,7 +20,7 @@ import { createB2CComponent } from '../bindings/createB2CComponent.mjs';
20
20
  * onEvent: (event) => console.log(event)
21
21
  * }}
22
22
  * />
23
- */ const IdentityProvider = createB2CComponent('IdentityProvider', IDPContainer);
23
+ */ const IdentityProvider = /* @__PURE__ */ createB2CComponent('IdentityProvider', IDPContainer);
24
24
 
25
25
  export { IdentityProvider };
26
26
  //# sourceMappingURL=IdentityProvider.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"IdentityProvider.mjs","sources":["../../../../../../../../../web/src/ui/react/b2c/IdentityProvider.tsx"],"sourcesContent":["import { IDPContainer } from '../../b2c/IDPContainer';\nimport { createB2CComponent } from '../bindings/createB2CComponent';\nimport { StytchProps } from './StytchLogin';\nimport { AuthTokenParams, IDPConsentManifestGenerator } from '../../../types';\n\nexport type IdentityProviderProps = Omit<StytchProps, 'config'> & {\n /**\n * Optional {@link IDPConsentManifestGenerator} to customize the consent screen.\n */\n getIDPConsentManifest?: IDPConsentManifestGenerator;\n /**\n * Optional {@link AuthTokenParams} to provide a trusted auth token to provide for attestation prior to running OAuth flow.\n */\n authTokenParams?: AuthTokenParams;\n};\n\n/**\n * The Stytch IDP component.\n * Parses OAuth Authorization params (client_id, scope, nonce, etc.) out of the page URL.\n * Requires the user to be logged in.\n * This component can only be used with a Stytch UI Client\n * passed into the StytchProvider.\n *\n * See the {@link https://stytch.com/docs/sdks online reference}\n *\n * @example\n * <IdentityProvider\n * presentation={{\n * theme: { primary: '#ff00f7' },\n * options: {},\n * }}\n * callbacks={{\n * onEvent: (event) => console.log(event)\n * }}\n * />\n */\nexport const IdentityProvider = createB2CComponent('IdentityProvider', IDPContainer);\n"],"names":["IdentityProvider","createB2CComponent","IDPContainer"],"mappings":";;;AAgBA;;;;;;;;;;;;;;;;;;;AAmBC,IACM,MAAMA,gBAAAA,GAAmBC,kBAAAA,CAAmB,oBAAoBC,YAAAA;;;;"}
1
+ {"version":3,"file":"IdentityProvider.mjs","sources":["../../../../../../../../../web/src/ui/react/b2c/IdentityProvider.tsx"],"sourcesContent":["import { IDPContainer } from '../../b2c/IDPContainer';\nimport { createB2CComponent } from '../bindings/createB2CComponent';\nimport { StytchProps } from './StytchLogin';\nimport { AuthTokenParams, IDPConsentManifestGenerator } from '../../../types';\n\nexport type IdentityProviderProps = Omit<StytchProps, 'config'> & {\n /**\n * Optional {@link IDPConsentManifestGenerator} to customize the consent screen.\n */\n getIDPConsentManifest?: IDPConsentManifestGenerator;\n /**\n * Optional {@link AuthTokenParams} to provide a trusted auth token to provide for attestation prior to running OAuth flow.\n */\n authTokenParams?: AuthTokenParams;\n};\n\n/**\n * The Stytch IDP component.\n * Parses OAuth Authorization params (client_id, scope, nonce, etc.) out of the page URL.\n * Requires the user to be logged in.\n * This component can only be used with a Stytch UI Client\n * passed into the StytchProvider.\n *\n * See the {@link https://stytch.com/docs/sdks online reference}\n *\n * @example\n * <IdentityProvider\n * presentation={{\n * theme: { primary: '#ff00f7' },\n * options: {},\n * }}\n * callbacks={{\n * onEvent: (event) => console.log(event)\n * }}\n * />\n */\nexport const IdentityProvider = /* @__PURE__ */ createB2CComponent('IdentityProvider', IDPContainer);\n"],"names":["IdentityProvider","createB2CComponent","IDPContainer"],"mappings":";;;AAgBA;;;;;;;;;;;;;;;;;;;AAmBC,IACM,MAAMA,gBAAAA,mBAAmCC,kBAAAA,CAAmB,oBAAoBC,YAAAA;;;;"}
@@ -116,7 +116,7 @@ const withStytchSession = (Component)=>{
116
116
  *
117
117
  * Remember - authorization checks for sensitive actions should always occur on the backend as well.
118
118
  * @example
119
- * const { isAuthorized } = useStytchIsAuthorized<Permissions>('documents', 'edit');
119
+ * const { isAuthorized } = useStytchIsAuthorized('documents', 'edit');
120
120
  * return <button disabled={!isAuthorized}>Edit</button>
121
121
  */ const useStytchIsAuthorized = (resourceId, action)=>{
122
122
  invariant(useIsMounted__INTERNAL(), noProviderError('useStytchIsAuthorized', 'StytchProvider'));