{"version":3,"file":"PasswordCreateAuthenticate.mjs","sources":["../../../../../../../../../../web/src/ui/b2c/screens/Secondary/PasswordCreateAuthenticate.tsx"],"sourcesContent":["import { useLingui } from '@lingui/react/macro';\nimport { OTPMethods } from '@stytch/core/public';\nimport React, { Dispatch } from 'react';\n\nimport Button from '../../../components/atoms/Button';\nimport Column from '../../../components/atoms/Column';\nimport Typography from '../../../components/atoms/Typography';\nimport Divider from '../../../components/molecules/Divider';\nimport TextColumn from '../../../components/molecules/TextColumn';\nimport { AppScreens, useConfig, useGlobalReducer } from '../../GlobalContextProvider';\nimport { Action } from '../../reducer';\nimport { hasProduct } from '../../utils';\nimport { PasswordAuthenticate } from '../Password/PasswordAuthenticate';\nimport { PasswordNewUser } from '../Password/PasswordNewUser';\nimport { PasswordlessAuthenticate } from './PasswordlessAuthenticate';\nimport { usePasswordlessAuthenticate } from './usePasswordlessAuthenticate';\n\nexport const PasswordCreateAuthenticate = () => {\n  const { t } = useLingui();\n  const { emailMagicLinksOptions, otpOptions, products } = useConfig();\n  const [state, dispatch] = useGlobalReducer();\n\n  const otpMethods = otpOptions?.methods ?? [];\n  const hasEmailMagicLink = hasProduct(products, 'emailMagicLinks') && !!emailMagicLinksOptions;\n  const hasOTPEmail = otpMethods.includes(OTPMethods.Email);\n  const secondaryType = hasOTPEmail ? 'otp' : hasEmailMagicLink ? 'eml' : undefined;\n  const userType = state.formState.passwordState.type;\n\n  const secondaryAuth = useSecondaryAuthenticate(secondaryType, { dispatch });\n\n  return (\n    <Column gap={2}>\n      {(() => {\n        switch (userType) {\n          case 'new':\n            return (\n              <Column gap={6}>\n                {secondaryAuth ? (\n                  <TextColumn\n                    header={t({ id: 'password.createAccount.title', message: 'Create an account' })}\n                    body={t({\n                      id: 'createAccount.title',\n                      message: 'Choose how you would like to create your account.',\n                    })}\n                  />\n                ) : (\n                  <TextColumn\n                    header={t({ id: 'password.setPassword.title', message: 'Set a password' })}\n                    body={t({\n                      id: 'password.createAccount.content',\n                      message: 'Finish creating your account by setting a password.',\n                    })}\n                  />\n                )}\n\n                {secondaryAuth && (\n                  <Button variant=\"primary\" onClick={secondaryAuth.handle} loading={secondaryAuth.isSubmitting}>\n                    {secondaryAuth.buttonText}\n                  </Button>\n                )}\n\n                {secondaryAuth && <Divider />}\n\n                <PasswordNewUser />\n              </Column>\n            );\n\n          case 'password':\n            return (\n              <Column gap={6}>\n                <Typography variant=\"header\">{t({ id: 'password.login.title', message: 'Log in' })}</Typography>\n\n                <PasswordAuthenticate />\n\n                {secondaryAuth && <Divider />}\n\n                {secondaryAuth && (\n                  <Button variant=\"outline\" onClick={secondaryAuth.handle} loading={secondaryAuth.isSubmitting}>\n                    {secondaryAuth.buttonText}\n                  </Button>\n                )}\n              </Column>\n            );\n\n          case 'passwordless':\n            return <PasswordlessAuthenticate secondaryType={secondaryType} />;\n        }\n      })()}\n\n      <Button variant=\"ghost\" onClick={() => dispatch({ type: 'transition', screen: AppScreens.Main })}>\n        {t({ id: 'button.goBack', message: 'Go back' })}\n      </Button>\n    </Column>\n  );\n};\n\nfunction useSecondaryAuthenticate(\n  secondaryType: 'eml' | 'otp' | undefined,\n  {\n    dispatch,\n  }: {\n    dispatch: Dispatch<Action>;\n  },\n) {\n  const { t } = useLingui();\n  const { sendLink, sendCode, isSubmitting } = usePasswordlessAuthenticate();\n\n  if (secondaryType == null) {\n    return undefined;\n  }\n\n  const buttonText =\n    secondaryType === 'eml'\n      ? t({\n          id: 'button.emailMagicLink',\n          message: 'Email me a login link',\n        })\n      : t({\n          id: 'button.emailOTP',\n          message: 'Email me a login code',\n        });\n\n  const handle =\n    secondaryType === 'eml'\n      ? async () => {\n          await sendLink();\n          dispatch({ type: 'transition', screen: AppScreens.EmailConfirmation });\n        }\n      : async () => {\n          await sendCode();\n          dispatch({ type: 'transition', screen: AppScreens.OTPAuthenticate });\n        };\n\n  return {\n    buttonText,\n    handle,\n    isSubmitting,\n  };\n}\n"],"names":["PasswordCreateAuthenticate","useLingui","emailMagicLinksOptions","otpOptions","products","useConfig","state","dispatch","useGlobalReducer","otpMethods","methods","hasEmailMagicLink","hasProduct","hasOTPEmail","includes","OTPMethods","Email","secondaryType","undefined","userType","formState","passwordState","type","secondaryAuth","useSecondaryAuthenticate","React","Column","gap","TextColumn","header","body","Button","variant","onClick","handle","loading","isSubmitting","buttonText","Divider","PasswordNewUser","Typography","PasswordAuthenticate","PasswordlessAuthenticate","screen","AppScreens","Main","sendLink","sendCode","usePasswordlessAuthenticate","EmailConfirmation","OTPAuthenticate"],"mappings":"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"}