{"version":3,"file":"index.cjs","sources":["../../../../web/src/assets/sso.tsx","../../../../web/src/assets/logo-color/Hubspot.tsx","../../../../web/src/assets/logo-color/Okta.tsx","../../../../web/src/messages/b2b/en.ts","../../../../web/src/utils/oauthProviderType.ts","../../../../../node_modules/swr/mutation/dist/index.mjs","../../../../web/src/ui/b2b/utils.ts","../../../../web/src/ui/b2b/hooks/useIsOnlyFloatingOneTap.ts","../../../../web/src/ui/b2b/hooks/useLastUsedAuthMethod.ts","../../../../web/src/ui/b2b/components/OAuthB2BButton.tsx","../../../../web/src/ui/b2b/components/B2BOneTap.tsx","../../../../web/src/ui/b2b/components/Icons.ts","../../../../web/src/ui/b2b/components/SSOButton.tsx","../../../../web/src/ui/b2b/hooks/useEmlDiscoverySend.ts","../../../../web/src/ui/b2b/hooks/useEmlLoginOrSignup.ts","../../../../web/src/ui/b2b/screens/useEmailDomain.ts","../../../../web/src/ui/b2b/screens/EmailConfirmation.tsx","../../../../web/src/ui/b2b/components/UsePasswordButton.tsx","../../../../web/src/ui/b2b/hooks/useEffectiveAuthConfig.ts","../../../../web/src/ui/b2b/getOtpCodeExpiration.ts","../../../../web/src/ui/b2b/hooks/useEmailOtpDiscoverySend.ts","../../../../web/src/ui/b2b/hooks/useEmailOtpLoginOrSignup.ts","../../../../web/src/ui/b2b/screens/useParseErrorMessage.ts","../../../../web/src/ui/b2b/screens/EmailForm.tsx","../../../../web/src/ui/b2b/screens/EmailMethodSelectionScreen.tsx","../../../../web/src/ui/b2b/screens/EmailOTPEntryScreen.tsx","../../../../web/src/ui/b2b/usePasswordInput.ts","../../../../web/src/ui/b2b/screens/PasswordAuthenticate.tsx","../../../../web/src/ui/b2b/screens/PasswordEmailForm.tsx","../../../../web/src/ui/b2b/screens/PasswordForgotForm.tsx","../../../../web/src/ui/b2b/screens/PasswordResetConfirmation.tsx","../../../../web/src/ui/b2b/screens/PasswordResetForm.tsx","../../../../web/src/ui/b2b/screens/PasswordSetNew.tsx","../../../../web/src/utils/assertUnreachable.ts","../../../../web/src/ui/b2b/types/authMethodKeys.ts","../../../../web/src/ui/b2b/screens/SsoAndOAuthButtons.tsx","../../../../web/src/ui/b2b/hooks/useSsoDiscoveryConnection.ts","../../../../web/src/ui/b2b/screens/SSODiscoveryEmail.tsx","../../../../web/src/ui/b2b/screens/SSODiscoveryFallback.tsx","../../../../web/src/ui/b2b/screens/SSODiscoveryMenu.tsx","../../../../web/src/ui/b2b/B2BProducts.tsx","../../../../web/src/ui/b2b/screens/Confirmation.tsx","../../../../web/src/ui/b2b/components/OrganizationRow.tsx","../../../../web/src/ui/b2b/screens/Discovery.tsx","../../../../web/src/ui/b2b/generateProductComponentsOrdering.ts","../../../../web/src/ui/b2b/screens/Main.tsx","../../../../web/src/ui/b2b/screens/MFAEnrollmentSelectionScreen.tsx","../../../../web/src/ui/b2b/screens/RecoveryCodeEntryScreen.tsx","../../../../web/src/ui/components/atoms/CodeContainer.tsx","../../../../web/src/ui/b2b/screens/RecoveryCodeSaveScreen.tsx","../../../../web/src/ui/b2b/screens/SMSOTPEnrollScreen.tsx","../../../../web/src/ui/b2b/screens/SMSOTPEntryScreen.tsx","../../../../web/src/ui/b2b/screens/TOTPEnrollManualScreen.tsx","../../../../web/src/ui/b2b/screens/TOTPEnrollQRScreen.tsx","../../../../web/src/ui/b2b/screens/TOTPEntryScreen.tsx","../../../../web/src/ui/b2b/Container.tsx","../../../../web/src/ui/b2b/InternalAppContainer.tsx","../../../../web/src/ui/b2b/hooks/useStytchMember.ts","../../../../web/src/ui/b2b/screens/IDPConsent.tsx","../../../../web/src/ui/b2b/App.tsx","../../../../web/src/ui/react/bindings/createB2BComponent.tsx","../../../../web/src/ui/react/b2b/B2BIdentityProvider.tsx","../../../../web/src/ui/react/b2b/Stytch.tsx","../../../src/b2b/components.ts","../../../src/b2b/index.ts"],"sourcesContent":["import React from 'react';\n\nimport { DEFAULT_ICON_SIZE, IconProps } from './types';\n\nexport const SSOIcon = ({ size = DEFAULT_ICON_SIZE, ...props }: IconProps) => (\n  <svg width={size} height={size} viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\" {...props}>\n    <g clipPath=\"url(#clip0_221_1596)\">\n      <path\n        d=\"M17.5125 10.53C17.0025 7.9425 14.73 6 12 6C9.8325 6 7.95 7.23 7.0125 9.03C4.755 9.27 3 11.1825 3 13.5C3 15.9825 5.0175 18 7.5 18H17.25C19.32 18 21 16.32 21 14.25C21 12.27 19.4625 10.665 17.5125 10.53Z\"\n        fill=\"currentColor\"\n      />\n    </g>\n    <g clipPath=\"url(#clip1_221_1596)\">\n      <path\n        d=\"M15.9684 13.1139L14.9987 14.0933L14.5152 13.6098L14.2501 13.3446L13.9849 13.6098L13.5001 14.0946L13.0152 13.6098L12.9054 13.4999H12.7501H12.6188H12.3532L12.2651 13.7504C12.0087 14.4788 11.3147 14.9999 10.5001 14.9999C9.46592 14.9999 8.62506 14.1591 8.62506 13.1249C8.62506 12.0908 9.46592 11.2499 10.5001 11.2499C11.3147 11.2499 12.0087 11.7711 12.2651 12.4994L12.3532 12.7499H12.6188H15.5969L15.9684 13.1139ZM9.00006 13.1249C9.00006 13.9508 9.6742 14.6249 10.5001 14.6249C11.3259 14.6249 12.0001 13.9508 12.0001 13.1249C12.0001 12.2991 11.3259 11.6249 10.5001 11.6249C9.6742 11.6249 9.00006 12.2991 9.00006 13.1249Z\"\n        fill=\"var(--st-background)\"\n        stroke=\"var(--st-background)\"\n        strokeWidth=\"0.75\"\n      />\n    </g>\n    <defs>\n      <clipPath id=\"clip0_221_1596\">\n        <rect width=\"18\" height=\"18\" transform=\"translate(3 3)\" />\n      </clipPath>\n      <clipPath id=\"clip1_221_1596\">\n        <rect width=\"8.25\" height=\"6\" transform=\"translate(8.25006 10.1251)\" />\n      </clipPath>\n    </defs>\n  </svg>\n);\n","import type { SVGProps } from 'react';\nimport * as React from 'react';\n\n/* AUTOGENERATED: DO NOT EDIT */\nimport _styles from '../logo.module.css';\nexport const HubspotIcon = (props: SVGProps<SVGSVGElement>): JSX.Element => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} fill=\"none\" {...props}>\n    <path\n      fill=\"#FF7A59\"\n      fillRule=\"evenodd\"\n      d=\"M13.93 13.97a2.4 2.4 0 0 1-2.43-2.4c0-1.34 1.09-2.42 2.43-2.42a2.4 2.4 0 0 1 2.43 2.41c0 1.33-1.08 2.41-2.43 2.41m.73-7.05V4.78c.56-.26.96-.83.96-1.49v-.05c0-.9-.75-1.64-1.66-1.64h-.05c-.92 0-1.67.74-1.67 1.64v.05c0 .66.4 1.23.96 1.5v2.13q-1.27.21-2.24.98L5 3.32q.07-.21.07-.46C5.08 1.83 4.24 1 3.2 1s-1.88.83-1.88 1.86a1.87 1.87 0 0 0 2.8 1.6l5.85 4.51a4.6 4.6 0 0 0 .07 5.29l-1.77 1.76a1.54 1.54 0 0 0-1.98 1.46 1.54 1.54 0 0 0 3.09 0q-.02-.23-.08-.44l1.76-1.74a4.75 4.75 0 0 0 7.62-3.74 4.7 4.7 0 0 0-4.02-4.64\"\n      clipRule=\"evenodd\"\n    />\n  </svg>\n);\n","import type { SVGProps } from 'react';\nimport * as React from 'react';\n\n/* AUTOGENERATED: DO NOT EDIT */\nimport _styles from '../logo.module.css';\nexport const OktaIcon = (props: SVGProps<SVGSVGElement>): JSX.Element => (\n  <svg xmlns=\"http://www.w3.org/2000/svg\" width={20} height={20} fill=\"none\" {...props}>\n    <path\n      fill=\"#191919\"\n      fillRule=\"evenodd\"\n      d=\"m10.9 1.13-.37 4.56a5 5 0 0 0-1.19.01l-.2-2.2q0-.12.11-.13h.38l-.18-2.24q.01-.12.11-.13h1.23q.11.01.11.13m-3.09.22q-.04-.1-.15-.08l-1.15.42q-.11.06-.07.16l.94 2.04-.36.13q-.1.06-.06.16l.95 2a4 4 0 0 1 1.12-.42zM5 2.62l2.65 3.73q-.51.33-.9.78l-1.6-1.56a.12.12 0 0 1 .01-.18l.3-.23-1.58-1.6a.12.12 0 0 1 0-.18l.94-.78a.12.12 0 0 1 .17.02M2.77 4.78q-.1-.05-.17.04l-.61 1.06a.12.12 0 0 0 .05.17L4.07 7l-.2.32a.12.12 0 0 0 .06.17l2.02.92q.22-.56.59-1.04zm-1.5 2.88q.03-.11.15-.1l4.42 1.16q-.17.57-.19 1.18l-2.21-.18a.12.12 0 0 1-.1-.14l.06-.37L1.16 9q-.11-.02-.1-.14zm-.16 2.99q-.12.02-.1.14l.2 1.2q.05.12.15.1l2.17-.56.07.37c0 .06.08.1.14.09l2.14-.59q-.19-.56-.22-1.17zm.7 3.17a.12.12 0 0 1 .06-.17L6 11.7q.24.55.62 1.02L4.8 14.01a.12.12 0 0 1-.17-.04l-.19-.33-1.84 1.28q-.1.05-.17-.04zm5.02-.86L3.6 16.21a.12.12 0 0 0 0 .18l.95.79q.1.06.17-.02l1.3-1.84.29.25q.1.07.18-.03l1.26-1.82a5 5 0 0 1-.93-.76m-.64 5.22a.12.12 0 0 1-.07-.16l1.91-4.15q.53.27 1.13.39L8.6 16.4a.12.12 0 0 1-.16.07l-.35-.12-.6 2.16q-.04.1-.15.08zm3.28-3.87-.37 4.56q0 .12.12.13h1.22q.12-.01.12-.13l-.18-2.23h.37q.12-.02.12-.14l-.2-2.2a4 4 0 0 1-1.2.01M13.9 1.97a.12.12 0 0 0-.07-.17l-1.15-.41q-.12-.03-.16.08l-.6 2.16-.35-.13q-.1-.02-.15.08l-.56 2.15q.6.12 1.12.39zm2.5 1.81-3.21 3.26a4 4 0 0 0-.93-.76l1.26-1.83a.12.12 0 0 1 .18-.03l.29.25 1.3-1.83a.12.12 0 0 1 .17-.02l.94.79q.09.08.01.17m1.75 2.56q.1-.05.05-.17l-.62-1.05a.12.12 0 0 0-.17-.04l-1.84 1.27-.2-.32q-.06-.1-.16-.04l-1.82 1.29q.38.46.62 1.02zM18.79 8l.2 1.2a.12.12 0 0 1-.1.15l-4.55.42a4 4 0 0 0-.23-1.17l2.14-.59q.12-.02.15.1l.06.37 2.17-.57q.12-.03.15.1zm-.2 4.43q.1.01.14-.1l.2-1.2a.12.12 0 0 0-.1-.15l-2.23-.2.06-.37a.12.12 0 0 0-.1-.14l-2.22-.18q-.01.6-.19 1.18l4.43 1.15m-1.19 2.75a.12.12 0 0 1-.17.04l-3.77-2.6q.36-.48.59-1.04l2.02.92q.1.06.05.16l-.19.33 2.03.96q.1.05.05.17zm-5.04-1.54 2.65 3.73q.08.08.17.02l.94-.79a.12.12 0 0 0 0-.17l-1.57-1.6.3-.23q.08-.09 0-.18l-1.59-1.56q-.4.46-.9.78m-.02 5.08q-.12.03-.16-.08l-1.2-4.41q.59-.14 1.1-.43l.96 2.01c.03.06 0 .14-.06.16l-.36.13.94 2.04q.04.1-.07.16z\"\n      clipRule=\"evenodd\"\n      className={_styles.darkInvert}\n    />\n  </svg>\n);\n","import { Messages } from '@lingui/core';\n\nimport { messages as _messages } from '../../../messages/b2b/en.json';\n\nexport const messages = _messages as unknown as Messages;\n","import { B2BOAuthProviderConfig, B2BOAuthProviders } from '@stytch/core/public';\n\nexport const getParamsFromB2BOAuthProviderConfig = (provider: B2BOAuthProviderConfig) => {\n  let providerType: B2BOAuthProviders;\n  let oneTap = false;\n  let customScopes: string[] = [];\n  let providerParams: Record<string, string> = {};\n  let cancelOnTapOutside: boolean | undefined = undefined;\n  if (typeof provider === 'string') {\n    providerType = provider;\n  } else {\n    providerType = provider.type;\n    if (provider.type === B2BOAuthProviders.Google && provider.one_tap) {\n      oneTap = provider.one_tap;\n      cancelOnTapOutside = provider.cancel_on_tap_outside;\n    }\n    customScopes = provider.customScopes || [];\n    providerParams = provider.providerParams || {};\n  }\n  return {\n    type: providerType,\n    one_tap: oneTap,\n    customScopes,\n    providerParams,\n    cancel_on_tap_outside: cancelOnTapOutside,\n  };\n};\n","import { useRef, useCallback } from 'react';\nimport useSWR, { useSWRConfig } from 'swr';\nimport { withMiddleware, useStateWithDeps, UNDEFINED, serialize, mergeObjects, getTimestamp, useIsomorphicLayoutEffect } from 'swr/_internal';\n\nconst mutation = ()=>{\n    return (key, fetcher, config = {})=>{\n        const { mutate  } = useSWRConfig();\n        const keyRef = useRef(key);\n        const fetcherRef = useRef(fetcher);\n        const configRef = useRef(config);\n        // Ditch all mutation results that happened earlier than this timestamp.\n        const ditchMutationsUntilRef = useRef(0);\n        const [stateRef, stateDependencies, setState] = useStateWithDeps({\n            data: UNDEFINED,\n            error: UNDEFINED,\n            isMutating: false\n        });\n        const currentState = stateRef.current;\n        const trigger = useCallback(async (arg, opts)=>{\n            const [serializedKey, resolvedKey] = serialize(keyRef.current);\n            if (!fetcherRef.current) {\n                throw new Error('Can’t trigger the mutation: missing fetcher.');\n            }\n            if (!serializedKey) {\n                throw new Error('Can’t trigger the mutation: missing key.');\n            }\n            // Disable cache population by default.\n            const options = mergeObjects(mergeObjects({\n                populateCache: false,\n                throwOnError: true\n            }, configRef.current), opts);\n            // Trigger a mutation, and also track the timestamp. Any mutation that happened\n            // earlier this timestamp should be ignored.\n            const mutationStartedAt = getTimestamp();\n            ditchMutationsUntilRef.current = mutationStartedAt;\n            setState({\n                isMutating: true\n            });\n            try {\n                const data = await mutate(serializedKey, fetcherRef.current(resolvedKey, {\n                    arg\n                }), // We must throw the error here so we can catch and update the states.\n                mergeObjects(options, {\n                    throwOnError: true\n                }));\n                // If it's reset after the mutation, we don't broadcast any state change.\n                if (ditchMutationsUntilRef.current <= mutationStartedAt) {\n                    setState({\n                        data,\n                        isMutating: false,\n                        error: undefined\n                    });\n                    options.onSuccess == null ? void 0 : options.onSuccess(data, serializedKey, options);\n                }\n                return data;\n            } catch (error) {\n                // If it's reset after the mutation, we don't broadcast any state change\n                // or throw because it's discarded.\n                if (ditchMutationsUntilRef.current <= mutationStartedAt) {\n                    setState({\n                        error: error,\n                        isMutating: false\n                    });\n                    options.onError == null ? void 0 : options.onError(error, serializedKey, options);\n                    if (options.throwOnError) {\n                        throw error;\n                    }\n                }\n            }\n        }, // eslint-disable-next-line react-hooks/exhaustive-deps\n        []);\n        const reset = useCallback(()=>{\n            ditchMutationsUntilRef.current = getTimestamp();\n            setState({\n                data: UNDEFINED,\n                error: UNDEFINED,\n                isMutating: false\n            });\n        // eslint-disable-next-line react-hooks/exhaustive-deps\n        }, []);\n        useIsomorphicLayoutEffect(()=>{\n            keyRef.current = key;\n            fetcherRef.current = fetcher;\n            configRef.current = config;\n        });\n        // We don't return `mutate` here as it can be pretty confusing (e.g. people\n        // calling `mutate` but they actually mean `trigger`).\n        // And also, `mutate` relies on the useSWR hook to exist too.\n        return {\n            trigger,\n            reset,\n            get data () {\n                stateDependencies.data = true;\n                return currentState.data;\n            },\n            get error () {\n                stateDependencies.error = true;\n                return currentState.error;\n            },\n            get isMutating () {\n                stateDependencies.isMutating = true;\n                return currentState.isMutating;\n            }\n        };\n    };\n};\n/**\n * A hook to define and manually trigger remote mutations like POST, PUT, DELETE and PATCH use cases.\n *\n * @link https://swr.vercel.app/docs/mutation\n * @example\n * ```jsx\n * import useSWRMutation from 'swr/mutation'\n *\n * const {\n *   data,\n *   error,\n *   trigger,\n *   reset,\n *   isMutating\n * } = useSWRMutation(key, fetcher, options?)\n * ```\n */ var index = withMiddleware(useSWR, mutation);\n\nexport { index as default };\n","import {\n  AuthFlowType,\n  B2BAuthenticateResponseWithMFA,\n  B2BDiscoveryAuthenticateResponse,\n  B2BMagicLinksDiscoveryAuthenticateResponse,\n  B2BOrganizationsGetBySlugResponse,\n  StytchAPIError,\n  StytchError,\n  StytchEvent,\n  StytchEventType,\n  StytchProjectConfigurationInput,\n} from '@stytch/core/public';\nimport { useEffect, useMemo, useState } from 'react';\nimport useSWRMutation, { MutationFetcher, SWRMutationConfiguration } from 'swr/mutation';\n\nimport { StytchB2BClient } from '../../b2b/StytchB2BClient';\nimport { StytchB2BExtendedLoginConfig } from '../../types';\nimport { readB2BInternals } from '../../utils/internal';\nimport { useConfig, useErrorCallback, useEventCallback, useGlobalReducer, useStytch } from './GlobalContextProvider';\nimport { Action } from './reducer';\nimport type { ProductId, StytchB2BProduct } from './StytchB2BProduct';\nimport { AppScreens } from './types/AppScreens';\nimport { ErrorType } from './types/ErrorType';\n\ntype RecursiveDotNotation<T> = T extends object\n  ? {\n      [K in keyof T]: K extends string\n        ? T[K] extends (...args: never[]) => unknown\n          ? K\n          : T[K] extends object\n            ? `${K}.${RecursiveDotNotation<T[K]>}`\n            : K\n        : never;\n    }[keyof T]\n  : never;\n\ntype ValidStytchMutationKey = `stytch.${RecursiveDotNotation<StytchB2BClient>}`;\n\nconst KeyToStytchEventMap = {\n  'stytch.magicLinks.authenticate': StytchEventType.B2BMagicLinkAuthenticate,\n  'stytch.sso.authenticate': StytchEventType.B2BSSOAuthenticate,\n  'stytch.sso.discoverConnections': StytchEventType.B2BSSODiscoverConnections,\n  'stytch.magicLinks.discovery.authenticate': StytchEventType.B2BMagicLinkDiscoveryAuthenticate,\n  'stytch.discovery.organizations.create': StytchEventType.B2BDiscoveryOrganizationsCreate,\n  'stytch.discovery.intermediateSessions.exchange': StytchEventType.B2BDiscoveryIntermediateSessionExchange,\n  'stytch.magicLinks.email.loginOrSignup': StytchEventType.B2BMagicLinkEmailLoginOrSignup,\n  'stytch.magicLinks.email.discovery.send': StytchEventType.B2BMagicLinkEmailDiscoverySend,\n  'stytch.oauth.authenticate': StytchEventType.B2BOAuthAuthenticate,\n  'stytch.oauth.discovery.authenticate': StytchEventType.B2BOAuthDiscoveryAuthenticate,\n  'stytch.otps.sms.send': StytchEventType.B2BSMSOTPSend,\n  'stytch.otps.sms.authenticate': StytchEventType.B2BSMSOTPAuthenticate,\n  'stytch.totp.create': StytchEventType.B2BTOTPCreate,\n  'stytch.totp.authenticate': StytchEventType.B2BTOTPAuthenticate,\n  'stytch.recoveryCodes.recover': StytchEventType.B2BRecoveryCodesRecover,\n  'stytch.impersonation.authenticate': StytchEventType.B2BImpersonationAuthenticate,\n  'stytch.otps.email.authenticate': StytchEventType.B2BOTPsEmailAuthenticate,\n  'stytch.otps.email.discovery.authenticate': StytchEventType.B2BOTPsEmailDiscoveryAuthenticate,\n  'stytch.otps.email.discovery.send': StytchEventType.B2BOTPsEmailDiscoverySend,\n  'stytch.otps.email.loginOrSignup': StytchEventType.B2BOTPsEmailLoginOrSignup,\n  'stytch.organization.getBySlug': StytchEventType.B2BOrganizationsGetBySlug,\n} satisfies Partial<Record<ValidStytchMutationKey, StytchEventType>>;\n\ntype StytchExternalMutationKey = keyof typeof KeyToStytchEventMap;\n\ntype StytchInternalMutationKey = `internal.${string}`;\n\nexport type StytchMutationKey = StytchExternalMutationKey | StytchInternalMutationKey;\n\nexport function getStytchEventByKey(key: StytchMutationKey): StytchEventType | undefined {\n  return KeyToStytchEventMap[key as StytchExternalMutationKey];\n}\n\nexport const useMutate = <TData, TError, TKey extends StytchMutationKey, TExtraArg = never>(\n  key: TKey,\n  fetcher: MutationFetcher<TData, TExtraArg, TKey>,\n  options: SWRMutationConfiguration<TData, TError, TExtraArg, TKey> = {},\n) => {\n  const onEvent = useEventCallback();\n  const onError = useErrorCallback();\n\n  const result = useSWRMutation<TData, TError, TKey, TExtraArg>(key, fetcher, {\n    throwOnError: false,\n    ...options,\n    onSuccess: (data, key, config) => {\n      const eventType = getStytchEventByKey(key as StytchMutationKey);\n      if (eventType) {\n        onEvent({ type: eventType, data } as StytchEvent<StytchProjectConfigurationInput>);\n      }\n\n      options.onSuccess?.(data, key, config);\n    },\n    onError: (error, key, config) => {\n      onError(error as StytchError);\n\n      options.onError?.(error, key, config);\n    },\n  });\n\n  // Hide the error while mutating. This helps avoid the errors continuing to show after the user has clicked submit\n  // and also ensures repeating errors causes <ErrorText> to re-render which is important for screenreaders to\n  // re-announce them\n  return result.isMutating ? { ...result, error: undefined } : result;\n};\n\n/**\n *\n * This hook triggers a request to retrieve the organization from the slug.\n * The hook only triggers the request if the SDK is being used in an organization flow,\n * and a slug pattern is present. The hook returns an isSearching boolean that can be used\n * to display a loading state while the search is in progress.\n */\nexport const useExtractSlug = () => {\n  const [state, dispatch] = useGlobalReducer();\n  const [pattern, setPattern] = useState<string | null | undefined>();\n  const config = useConfig();\n\n  const stytchClient = useStytch();\n  const slug = config.organizationSlug ?? extractFromPattern(pattern || null, window.location.href);\n\n  const { trigger, isMutating: isSearching } = useMutate<\n    B2BOrganizationsGetBySlugResponse,\n    StytchAPIError,\n    StytchExternalMutationKey,\n    { slug: string }\n  >(\n    'stytch.organization.getBySlug',\n    (_: string, { arg: { slug } }: { arg: { slug: string } }) =>\n      stytchClient.organization.getBySlug({ organization_slug: slug }),\n    {\n      onSuccess: ({ organization }) => {\n        if (organization === null) {\n          dispatch({\n            type: 'set_error_message_and_transition',\n            errorType: ErrorType.Organization,\n            canGoBack: false,\n          });\n        } else {\n          dispatch({\n            type: 'set_organization',\n            organization: {\n              ...organization,\n            },\n          });\n        }\n      },\n    },\n  );\n\n  useEffect(() => {\n    readB2BInternals(stytchClient)\n      .bootstrap.getAsync()\n      .then(({ slugPattern }) => {\n        setPattern(slugPattern);\n      });\n  }, [stytchClient]);\n\n  useEffect(() => {\n    if (\n      slug !== null &&\n      state.flowState.organization === null &&\n      state.screen === AppScreens.Main &&\n      state.flowState.type == AuthFlowType.Organization\n    ) {\n      trigger({ slug });\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps -- SDK-1354\n  }, [slug, state.flowState, state.screen]);\n\n  // The org is pending identification if the slug pattern has not yet been\n  // determined (i.e., `undefined`) or the organization request is in progress\n  const resultPending = pattern === undefined || isSearching;\n\n  return { slug, resultPending };\n};\n\nexport const useBootstrap = () => {\n  const stytchClient = useStytch();\n  const [bootstrap, setBootstrap] = useState(readB2BInternals(stytchClient).bootstrap.getSync());\n\n  useEffect(() => {\n    readB2BInternals(stytchClient)\n      .bootstrap.getAsync()\n      .then((data) => {\n        setBootstrap(data);\n      });\n  }, [stytchClient]);\n\n  return bootstrap;\n};\n\nexport const onAuthenticateSuccess = (\n  data: B2BAuthenticateResponseWithMFA<StytchProjectConfigurationInput>,\n  dispatch: React.Dispatch<Action>,\n  config: StytchB2BExtendedLoginConfig,\n) => {\n  dispatch({\n    type: 'primary_authenticate_success',\n    response: data,\n    includedMfaMethods: config.mfaProductInclude,\n  });\n};\n\nexport const onDiscoveryAuthenticateSuccess = (\n  data: B2BDiscoveryAuthenticateResponse | B2BMagicLinksDiscoveryAuthenticateResponse,\n  dispatch: React.Dispatch<Action>,\n) => {\n  dispatch({\n    type: 'set_discovery_state',\n    email: data.email_address,\n    discoveredOrganizations: data.discovered_organizations,\n  });\n};\n\nexport const extractFromPattern = (pattern: string | null, href: string): string | null => {\n  if (pattern === null) return null;\n\n  const url = new URL(href);\n  url.search = '';\n\n  const currentUrl = url.toString().trim();\n  const regexPattern = pattern.replace(/\\./g, '\\\\.').replace(/\\*/g, '(?:[^.]+)').replace('{{slug}}', '(.+)');\n\n  const regex = new RegExp(regexPattern);\n  const match = currentUrl.match(regex);\n\n  if (match && match[1]) {\n    return match?.[1];\n  }\n\n  return null;\n};\n\nexport function hasProduct(products: StytchB2BProduct[], product: ProductId) {\n  return products.some((p) => p.id === product);\n}\n\nexport function useProductComponents<Type extends 'screens' | 'mainScreen' | 'ssoAndOAuthButtons'>(\n  { products, organizationProducts }: { products: StytchB2BProduct[]; organizationProducts: StytchB2BProduct[] },\n  screenType: Type,\n) {\n  return useMemo(() => {\n    const map = {} as Required<StytchB2BProduct[Type]>;\n    for (const product of [...products, ...organizationProducts]) {\n      if (product[screenType]) Object.assign(map, product[screenType]);\n    }\n    return map;\n  }, [products, organizationProducts, screenType]);\n}\n","import { B2BOAuthProviders } from '@stytch/core/public';\nimport { useMemo } from 'react';\n\nimport { getParamsFromB2BOAuthProviderConfig } from '../../../utils/oauthProviderType';\nimport { useConfig } from '../GlobalContextProvider';\nimport { hasProduct } from '../utils';\n\nexport const useIsOnlyFloatingOneTap = () => {\n  const config = useConfig();\n  const isOnlyFloatingOneTap = useMemo(() => {\n    const oauthProvider = config.oauthOptions\n      ? getParamsFromB2BOAuthProviderConfig(config.oauthOptions?.providers[0])\n      : undefined;\n    const isGoogleOneTap = oauthProvider?.type === B2BOAuthProviders.Google && oauthProvider?.one_tap === true;\n    return (\n      config.products.length === 1 &&\n      hasProduct(config.products, 'oauth') &&\n      config.oauthOptions?.providers.length === 1 &&\n      isGoogleOneTap\n    );\n  }, [config]);\n\n  return isOnlyFloatingOneTap;\n};\n","import { useMemo } from 'react';\n\nimport { readB2BInternals } from '../../../utils/internal';\nimport { safeLocalStorage } from '../../../utils/storage';\nimport { useStytch } from '../GlobalContextProvider';\nimport { LastUsedMethod } from '../types/authMethodKeys';\n\n/**\n * Hook for managing the last used authentication method in B2B flows.\n * The returned value is not reactive and will not update when setLastUsedMethod is called.\n */\nexport function useLastUsedAuthMethod() {\n  const stytch = useStytch();\n  const { publicToken } = readB2BInternals(stytch);\n\n  // Deliberately not using useLocalStorage because we _don't_ want the buttons\n  // to reorder while the user is still seeing this page\n  const lastUsedMethod = useMemo(() => safeLocalStorage.getItem(publicToken, 'b2b_last_used_method'), [publicToken]);\n  const setLastUsedMethod = (method: LastUsedMethod) => {\n    safeLocalStorage.setItem(publicToken, 'b2b_last_used_method', method);\n  };\n\n  return [lastUsedMethod, setLastUsedMethod] as const;\n}\n","import { MessageDescriptor } from '@lingui/core';\nimport { msg } from '@lingui/core/macro';\nimport { useLingui } from '@lingui/react/macro';\nimport { B2BOAuthProviders } from '@stytch/core/public';\nimport React from 'react';\n\nimport Button from '../../components/atoms/Button';\nimport { IconRegistry } from '../../components/IconRegistry';\nimport { getButtonId, usePresentation } from '../../components/PresentationConfig';\nimport { useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport type { oauthIcons } from './Icons';\n\ntype OauthIconName = keyof typeof oauthIcons;\n\ninterface OAuthProviderInfo {\n  messageDescriptor: MessageDescriptor;\n}\n\nconst providerInfo: Record<B2BOAuthProviders, OAuthProviderInfo> = {\n  [B2BOAuthProviders.Google]: {\n    messageDescriptor: msg({ id: 'oauth.continueWithGoogle', message: 'Continue with Google' }),\n  },\n  [B2BOAuthProviders.Microsoft]: {\n    messageDescriptor: msg({ id: 'oauth.continueWithMicrosoft', message: 'Continue with Microsoft' }),\n  },\n  [B2BOAuthProviders.HubSpot]: {\n    messageDescriptor: msg({ id: 'oauth.continueWithHubSpot', message: 'Continue with HubSpot' }),\n  },\n  [B2BOAuthProviders.Slack]: {\n    messageDescriptor: msg({ id: 'oauth.continueWithSlack', message: 'Continue with Slack' }),\n  },\n  [B2BOAuthProviders.GitHub]: {\n    messageDescriptor: msg({ id: 'oauth.continueWithGitHub', message: 'Continue with GitHub' }),\n  },\n};\n\nexport type OauthB2BButtonProps = {\n  providerType: B2BOAuthProviders;\n  loginRedirectUrl?: string;\n  signupRedirectUrl?: string;\n  discoveryRedirectUrl?: string;\n  customScopes?: string[];\n  providerParams?: Record<string, string>;\n  onSuccess?: () => void;\n};\n\nexport const OAuthB2BButton = ({\n  providerType,\n  loginRedirectUrl,\n  signupRedirectUrl,\n  discoveryRedirectUrl,\n  customScopes,\n  providerParams,\n  onSuccess,\n}: OauthB2BButtonProps) => {\n  const { t } = useLingui();\n  const stytchClient = useStytch();\n  const [state] = useGlobalReducer();\n\n  const presentation = usePresentation();\n  const iconRegistry: IconRegistry<OauthIconName> = presentation.iconRegistry;\n  const id = getButtonId(`oauth-${providerType}`, presentation.options);\n\n  const provider = providerInfo[providerType];\n  let label: string = providerType;\n  let icon = null;\n  if (provider) {\n    const { messageDescriptor } = provider;\n    const Icon = iconRegistry[providerType];\n    label = t(messageDescriptor);\n    icon = <Icon />;\n  }\n\n  const onButtonClick = async () => {\n    const providerClient = stytchClient.oauth[providerType];\n\n    if (state.flowState.organization) {\n      await providerClient.start({\n        login_redirect_url: loginRedirectUrl,\n        signup_redirect_url: signupRedirectUrl,\n        custom_scopes: customScopes,\n        organization_id: state.flowState.organization.organization_id,\n        provider_params: providerParams,\n      });\n    } else {\n      await providerClient.discovery.start({\n        discovery_redirect_url: discoveryRedirectUrl,\n        custom_scopes: customScopes,\n        provider_params: providerParams,\n      });\n    }\n\n    onSuccess?.();\n  };\n\n  return (\n    <Button onClick={onButtonClick} variant=\"outline\" icon={icon} id={id}>\n      {label}\n    </Button>\n  );\n};\n","import { DEV, logger } from '@stytch/core';\nimport { B2BOAuthProviders, OneTapPositions } from '@stytch/core/public';\nimport type { CredentialResponse } from 'google-one-tap';\nimport React, { useCallback, useEffect, useState } from 'react';\n\nimport { GoogleOneTapClient } from '../../../oneTap/GoogleOneTapClient';\nimport { readB2BInternals } from '../../../utils/internal';\nimport LastUsed from '../../components/molecules/LastUsed';\nimport { ErrorMessages, OneTapErrors } from '../../components/organisms/OneTapError';\nimport { useIsMounted } from '../../hooks/useIsMounted';\nimport { useConfig, useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport { useIsOnlyFloatingOneTap } from '../hooks/useIsOnlyFloatingOneTap';\nimport { useLastUsedAuthMethod } from '../hooks/useLastUsedAuthMethod';\nimport { AppScreens } from '../types/AppScreens';\nimport { OAuthB2BButton } from './OAuthB2BButton';\n\nexport type B2BOneTapProps = {\n  customScopes?: string[];\n  providerParams?: Record<string, string>;\n  cancelOnTapOutside?: boolean;\n};\n\nexport const B2BGoogleOneTap = ({ customScopes, providerParams, cancelOnTapOutside }: B2BOneTapProps) => {\n  const stytch = useStytch();\n  const config = useConfig();\n  const isOnlyFloatingOneTap = useIsOnlyFloatingOneTap();\n  const [oneTapError, setOneTapError] = useState<OneTapErrors>();\n  const isMounted = useIsMounted();\n  const [state, dispatch] = useGlobalReducer();\n\n  const [lastUsedMethod, setLastUsedMethod] = useLastUsedAuthMethod();\n\n  /*\n   * Begin One Tap Loading / Initialization Logic\n   */\n  //\n  const attemptToLoadOneTap = useCallback(async () => {\n    const { oneTap } = readB2BInternals(stytch);\n    const clientResult = await oneTap.createOneTapClient();\n    if (!clientResult.success) {\n      if (clientResult.reason === 'oauth_config_not_found') {\n        setOneTapError(OneTapErrors.NoConfiguredOAuthClient);\n      } else if (clientResult.reason === 'default_provider_not_allowed') {\n        setOneTapError(OneTapErrors.DefaultProviderNotAllowed);\n      } else {\n        logger.error('Unable to load One Tap settings for project', clientResult);\n      }\n      return;\n    }\n    const { client } = clientResult;\n\n    /**\n     * One tap is composed of two calls, an init() call and a prompt() call\n     * the init() call takes in a parent_id where one tap should be shown\n     * prompt() does the actual showing. if the element does not exist,\n     * we show One Tap in the upper right corner\n     * if the element does exist, One Tap's lifecycle is tied to the lifecycle of said element\n     * here, we call init() then prompt() in the useeffect. If the component unmounts before\n     * prompt() is called, One Tap falls back to the element-does-not-exist behavior.\n     * Fix: add a check for whether the component is still rendered immediately before we\n     * call prompt, preventing this race condition\n     */\n    if (!isMounted.current) {\n      return;\n    }\n\n    let oneTapCallback: (response: CredentialResponse) => void;\n    if (state.flowState.organization) {\n      oneTapCallback = oneTap.createOnSuccessHandler({\n        organizationId: state.flowState.organization.organization_id,\n        signupRedirectUrl: config.oauthOptions?.signupRedirectURL,\n        loginRedirectUrl: config.oauthOptions?.loginRedirectURL,\n        onSuccess: oneTap.redirectOnSuccess,\n        onError: () => dispatch({ type: 'transition', screen: AppScreens.Error }),\n      });\n    } else {\n      oneTapCallback = oneTap.createOnDiscoverySuccessHandler({\n        discoveryRedirectUrl: config.oauthOptions?.discoveryRedirectURL,\n        onSuccess: oneTap.redirectOnSuccess,\n        onError: () => dispatch({ type: 'transition', screen: AppScreens.Error }),\n      });\n    }\n    const renderResult = await client.render({\n      callback: oneTapCallback,\n      style: {\n        position: OneTapPositions.floating,\n      },\n      cancelOnTapOutside,\n    });\n\n    // Check if the component has become unmounted during the async OT render process\n    // Kill the rest of the logic if so\n    if (!isMounted.current) {\n      client.cancel();\n      return;\n    }\n\n    if (!renderResult.success) {\n      if (renderResult.reason === 'unregistered_origin') {\n        setOneTapError(OneTapErrors.OriginNotAllowedForClient);\n      }\n      if (renderResult.reason === 'invalid_client') {\n        setOneTapError(OneTapErrors.InvalidOAuthClient);\n      }\n      logger.error('Unable to render One Tap prompt', renderResult);\n    }\n    return client;\n  }, [\n    stytch,\n    isMounted,\n    state.flowState.organization,\n    config.oauthOptions?.signupRedirectURL,\n    config.oauthOptions?.loginRedirectURL,\n    config.oauthOptions?.discoveryRedirectURL,\n    dispatch,\n    cancelOnTapOutside,\n  ]);\n\n  useEffect(() => {\n    let client: GoogleOneTapClient | undefined;\n    attemptToLoadOneTap()\n      .then(($client) => (client = $client))\n      .catch((err) => {\n        logger.error('Unable to render One Tap prompt', err);\n      });\n    return () => client?.cancel();\n  }, [attemptToLoadOneTap]);\n  /*\n   * End One Tap Loading / Initialization Logic\n   */\n\n  if (isOnlyFloatingOneTap) {\n    return null;\n  }\n\n  const fallbackButton = (\n    <OAuthB2BButton\n      providerType={B2BOAuthProviders.Google}\n      loginRedirectUrl={config.oauthOptions?.loginRedirectURL}\n      signupRedirectUrl={config.oauthOptions?.signupRedirectURL}\n      discoveryRedirectUrl={config.oauthOptions?.discoveryRedirectURL}\n      customScopes={customScopes}\n      providerParams={providerParams}\n      onSuccess={() => setLastUsedMethod(B2BOAuthProviders.Google)}\n    />\n  );\n\n  const fallbackWithLastUsed =\n    lastUsedMethod === B2BOAuthProviders.Google ? <LastUsed>{fallbackButton}</LastUsed> : fallbackButton;\n\n  if (oneTapError) {\n    return (\n      <>\n        {DEV(<ErrorMessages error={oneTapError} />)}\n        {fallbackWithLastUsed}\n      </>\n    );\n  }\n\n  return fallbackWithLastUsed;\n};\n","import {\n  GithubIcon,\n  GmailIcon,\n  GoogleIcon,\n  HubspotIcon,\n  MicrosoftIcon,\n  OktaIcon,\n  OutlookIcon,\n  SlackIcon,\n  YahooIcon,\n} from '../../../assets/logo-color';\n\nexport const oauthIcons = {\n  google: GoogleIcon,\n  microsoft: MicrosoftIcon,\n  hubspot: HubspotIcon,\n  slack: SlackIcon,\n  github: GithubIcon,\n};\n\nexport const ssoIcons = {\n  google: GoogleIcon,\n  microsoft: MicrosoftIcon,\n  okta: OktaIcon,\n};\n\nexport const emailIcons = {\n  gmail: GmailIcon,\n  outlook: OutlookIcon,\n  yahoo: YahooIcon,\n};\n\nexport type IconNames =\n  | keyof typeof oauthIcons //\n  | keyof typeof ssoIcons\n  | keyof typeof emailIcons;\n","import { useLingui } from '@lingui/react/macro';\nimport { SSOActiveConnection } from '@stytch/core/public';\nimport React from 'react';\n\nimport { SSOIcon } from '../../../assets';\nimport { SsoKnownIdp } from '../../../utils/KnownIdp';\nimport Button from '../../components/atoms/Button';\nimport { getButtonId, usePresentation } from '../../components/PresentationConfig';\nimport { useConfig, useStytch } from '../GlobalContextProvider';\nimport type { ssoIcons } from './Icons';\n\ntype SsoIconNames = keyof typeof ssoIcons;\n\nconst iconMap: Record<string, SsoIconNames> = {\n  'google-workspace': 'google',\n  'microsoft-entra': 'microsoft',\n  okta: 'okta',\n} satisfies Record<Exclude<SsoKnownIdp, 'generic'>, SsoIconNames>;\n\nexport interface SSOButtonProps {\n  connection: SSOActiveConnection;\n  onStart?: (connection: SSOActiveConnection) => void;\n}\n\nexport const SSOButton = ({ connection, onStart }: SSOButtonProps) => {\n  const { t } = useLingui();\n  const stytchClient = useStytch();\n  const { ssoOptions } = useConfig();\n  const { iconRegistry, options } = usePresentation();\n\n  const { connection_id, display_name, identity_provider } = connection;\n\n  const id = getButtonId(`sso-${display_name}`, options);\n\n  const onButtonClick = () =>\n    stytchClient.sso\n      .start({\n        connection_id,\n        signup_redirect_url: ssoOptions?.signupRedirectURL,\n        login_redirect_url: ssoOptions?.loginRedirectURL,\n        provider_params: ssoOptions?.providerParams,\n      })\n      .then(() => {\n        onStart?.(connection);\n      });\n\n  const iconName = iconMap[identity_provider];\n  const Icon = iconRegistry[iconName] ?? SSOIcon;\n\n  return (\n    <Button variant=\"outline\" onClick={onButtonClick} icon={<Icon />} id={id}>\n      {t({ id: 'provider.continueWith', message: `Continue with ${display_name}` })}\n    </Button>\n  );\n};\n","import { ResponseCommon, StytchAPIError } from '@stytch/core/public';\n\nimport { useConfig, useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport { StytchMutationKey, useMutate } from '../utils';\n\nexport const useEmlDiscoverySend = () => {\n  const [, dispatch] = useGlobalReducer();\n  const stytchClient = useStytch();\n  const config = useConfig();\n\n  return useMutate<ResponseCommon, StytchAPIError, StytchMutationKey, { email: string }>(\n    'stytch.magicLinks.email.discovery.send',\n    (_: string, { arg: { email } }: { arg: { email: string } }) =>\n      stytchClient.magicLinks.email.discovery.send({\n        email_address: email,\n        discovery_redirect_url: config.emailMagicLinksOptions?.discoveryRedirectURL,\n        login_template_id: config.emailMagicLinksOptions?.loginTemplateId,\n        locale: config.emailMagicLinksOptions?.locale,\n        discovery_expiration_minutes: config.emailMagicLinksOptions?.discoveryExpirationMinutes,\n      }),\n    {\n      onSuccess: () => {\n        dispatch({ type: 'transition', screen: AppScreens.EmailConfirmation });\n      },\n    },\n  );\n};\n","import { logger } from '@stytch/core';\nimport { ResponseCommon, StytchAPIError } from '@stytch/core/public';\n\nimport { useConfig, useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport { StytchMutationKey, useMutate } from '../utils';\n\nexport const useEmlLoginOrSignup = () => {\n  const [, dispatch] = useGlobalReducer();\n  const stytchClient = useStytch();\n  const config = useConfig();\n\n  return useMutate<ResponseCommon, StytchAPIError, StytchMutationKey, { email: string; organization_id: string }>(\n    'stytch.magicLinks.email.loginOrSignup',\n    (_: string, { arg: { email, organization_id } }: { arg: { email: string; organization_id: string } }) =>\n      stytchClient.magicLinks.email.loginOrSignup({\n        email_address: email,\n        organization_id,\n        login_redirect_url: config.emailMagicLinksOptions?.loginRedirectURL,\n        signup_redirect_url: config.emailMagicLinksOptions?.signupRedirectURL,\n        login_template_id: config.emailMagicLinksOptions?.loginTemplateId,\n        signup_template_id: config.emailMagicLinksOptions?.signupTemplateId,\n        locale: config.emailMagicLinksOptions?.locale,\n        login_expiration_minutes: config.emailMagicLinksOptions?.loginExpirationMinutes,\n        signup_expiration_minutes: config.emailMagicLinksOptions?.signupExpirationMinutes,\n      }),\n    {\n      onSuccess: () => {\n        dispatch({ type: 'transition', screen: AppScreens.EmailConfirmation });\n      },\n      onError: (e) => {\n        logger.error(e);\n      },\n    },\n  );\n};\n","import { useEffect, useState } from 'react';\n\nimport { readB2BInternals } from '../../../utils/internal';\nimport { useConfig, useStytch } from '../GlobalContextProvider';\n\n/**\n * Resolves the best email domain to use as a hint for login\n */\nexport const useEmailDomain = () => {\n  const stytch = useStytch();\n  const config = useConfig();\n  /**\n   * Read the emailDomains out of sync storage, then read out of async storage\n   * TODO - Should all bootstrap data live in the config somewhere?\n   */\n  const [emailDomains, setEmailDomains] = useState(() => {\n    const { emailDomains } = readB2BInternals(stytch).bootstrap.getSync();\n    return emailDomains;\n  });\n\n  useEffect(() => {\n    readB2BInternals(stytch)\n      .bootstrap.getAsync()\n      .then(({ emailDomains }) => {\n        setEmailDomains(emailDomains);\n      });\n  }, [stytch]);\n\n  // If a domain is explicitly passed in, use it!\n  if (config.emailMagicLinksOptions?.domainHint) {\n    return config.emailMagicLinksOptions?.domainHint;\n  }\n  // If there can only be one logical choice, use it!\n  if (emailDomains.length === 1) {\n    return emailDomains[0];\n  }\n  // If it isn't clear who sent the email\n  // we simply won't provide a hint!\n  return null;\n};\n","import { AuthFlowType } from '@stytch/core/public';\nimport React from 'react';\n\nimport { useCountdown } from '../../components/atoms/Countdown';\nimport { EmailConfirmationView } from '../../components/organisms/EmailConfirmationView';\nimport { useGlobalReducer } from '../GlobalContextProvider';\nimport { useEmlDiscoverySend } from '../hooks/useEmlDiscoverySend';\nimport { useEmlLoginOrSignup } from '../hooks/useEmlLoginOrSignup';\nimport { AppScreens } from '../types/AppScreens';\nimport { useEmailDomain } from './useEmailDomain';\n\nexport const EmailConfirmation = () => {\n  const [state, dispatch] = useGlobalReducer();\n  const emailDomain = useEmailDomain();\n  const countdown = useCountdown();\n\n  const { trigger: sendLoginOrSignupEml, isMutating: isSendingLoginOrSignupEml } = useEmlLoginOrSignup();\n  const { trigger: sendDiscoveryEml, isMutating: isSendingDiscoveryEml } = useEmlDiscoverySend();\n\n  const email = state.formState.emailState.userSuppliedEmail;\n\n  const goBack = () => {\n    dispatch({ type: 'set_user_supplied_email', email: '' });\n    dispatch({ type: 'transition', screen: AppScreens.Main });\n  };\n\n  const resend = async () => {\n    if (state.flowState.type === AuthFlowType.Discovery) {\n      await sendDiscoveryEml({ email });\n    } else if (state.flowState.type === AuthFlowType.Organization && state.flowState.organization) {\n      await sendLoginOrSignupEml({\n        email,\n        organization_id: state.flowState.organization.organization_id,\n      });\n    }\n  };\n\n  const isSubmitting = isSendingLoginOrSignupEml || isSendingDiscoveryEml;\n\n  return (\n    <EmailConfirmationView\n      emailDomain={emailDomain}\n      email={email}\n      goBack={goBack}\n      resend={resend}\n      countdown={countdown}\n      isSubmitting={isSubmitting}\n    />\n  );\n};\n","import { useLingui } from '@lingui/react/macro';\nimport React from 'react';\n\nimport Button from '../../components/atoms/Button';\nimport { useGlobalReducer } from '../GlobalContextProvider';\n\nconst UsePasswordButton = ({ email }: { email: string }) => {\n  const [, dispatch] = useGlobalReducer();\n  const { t } = useLingui();\n\n  const handleUsePassword = () => {\n    dispatch({ type: 'use_password_auth', email });\n  };\n\n  return (\n    <Button variant=\"ghost\" onClick={handleUsePassword}>\n      {t({ id: 'button.usePassword', message: 'Use a password instead' })}\n    </Button>\n  );\n};\n\nexport default UsePasswordButton;\n","import { B2BOAuthProviderConfig, B2BOAuthProviders } from '@stytch/core/public';\nimport { useMemo } from 'react';\n\nimport { isTruthy } from '../../../utils/isTruthy';\nimport { getParamsFromB2BOAuthProviderConfig } from '../../../utils/oauthProviderType';\nimport { useConfig, useGlobalReducer } from '../GlobalContextProvider';\nimport { ProductId, StytchB2BProduct } from '../StytchB2BProduct';\n\nexport type OauthProviderParams = {\n  type: B2BOAuthProviders;\n  one_tap: boolean;\n  customScopes: string[];\n  providerParams: Record<string, string>;\n  cancel_on_tap_outside: boolean | undefined;\n};\n\n// Note that the order of products here is used when displaying fallback auth\n// methods below\nconst productsToAuthMethods: Record<ProductId, string | undefined> = {\n  oauth: undefined, // OAuth methods are defined per-provider\n  sso: 'sso',\n  emailMagicLinks: 'magic_link',\n  emailOtp: 'email_otp',\n  passwords: 'password',\n};\n\nconst oauthProvidersToAuthMethods: Record<B2BOAuthProviders, string> = {\n  [B2BOAuthProviders.Google]: 'google_oauth',\n  [B2BOAuthProviders.Microsoft]: 'microsoft_oauth',\n  [B2BOAuthProviders.HubSpot]: 'hubspot_oauth',\n  [B2BOAuthProviders.Slack]: 'slack_oauth',\n  [B2BOAuthProviders.GitHub]: 'github_oauth',\n};\n\nconst authMethodsToProducts: Record<string, ProductId> = Object.fromEntries(\n  Object.entries(productsToAuthMethods).map(([product, authMethod]) => [authMethod, product]),\n);\n\nconst oauthMethodsToOauthProviders: Record<string, B2BOAuthProviders> = Object.fromEntries(\n  Object.entries(oauthProvidersToAuthMethods).map(([provider, method]) => [\n    method,\n    provider as keyof typeof oauthProvidersToAuthMethods,\n  ]),\n);\n\nconst authMethodToProduct = (authMethod: string): ProductId | undefined => {\n  if (authMethod in oauthMethodsToOauthProviders) {\n    return 'oauth';\n  }\n  return authMethodsToProducts[authMethod];\n};\n\nconst allOauthProviders = Object.values(B2BOAuthProviders);\n\nconst flattenConfigToAuthMethods = (products: StytchB2BProduct[], oauthProviders: B2BOAuthProviderConfig[]) =>\n  products\n    .flatMap((product) => {\n      if (product.id === 'oauth') {\n        return oauthProviders.map((provider) => {\n          const authMethod = oauthProvidersToAuthMethods[typeof provider === 'string' ? provider : provider.type];\n          if (authMethod) {\n            return authMethod;\n          }\n        });\n      } else {\n        const authMethod = productsToAuthMethods[product.id];\n        if (authMethod) {\n          return authMethod;\n        }\n      }\n    })\n    .filter(isTruthy);\n\nconst useOAuthProviderConfigs = () => {\n  const config = useConfig();\n  return useMemo(() => {\n    if (!config.oauthOptions?.providers) {\n      return [];\n    }\n\n    return config.oauthOptions.providers.map(getParamsFromB2BOAuthProviderConfig);\n  }, [config.oauthOptions?.providers]);\n};\n\nconst useRestrictedAuthMethods = () => {\n  const [state] = useGlobalReducer();\n\n  const { primaryAuthMethods } = state.primary;\n  const hasPrimaryAuthMethods = !!primaryAuthMethods;\n\n  const restrictedAuthMethods = useMemo(() => {\n    if (state.primary.primaryAuthMethods) {\n      return new Set(state.primary.primaryAuthMethods);\n    }\n\n    if (state.flowState.organization?.auth_methods === 'RESTRICTED') {\n      return new Set(state.flowState.organization?.allowed_auth_methods ?? []);\n    }\n  }, [\n    state.flowState.organization?.allowed_auth_methods,\n    state.flowState.organization?.auth_methods,\n    state.primary.primaryAuthMethods,\n  ]);\n\n  return { restrictedAuthMethods, hasPrimaryAuthMethods };\n};\n\nexport const useEffectiveAuthConfig = () => {\n  const [state] = useGlobalReducer();\n  const config = useConfig();\n\n  const { restrictedAuthMethods, hasPrimaryAuthMethods } = useRestrictedAuthMethods();\n\n  const oauthProviderConfigs = useOAuthProviderConfigs();\n\n  const flattenedConfiguredAuthMethods = useMemo(\n    () => flattenConfigToAuthMethods(config.products, oauthProviderConfigs),\n    [config.products, oauthProviderConfigs],\n  );\n\n  const authMethodsToShow = useMemo(() => {\n    // If there are no restrictions, use the auth methods from the UI config as-is\n    if (!restrictedAuthMethods) {\n      return flattenedConfiguredAuthMethods;\n    }\n\n    // If there are restrictions, filter the auth methods from the UI config\n    const restrictedAuthMethodsInUiConfig = flattenedConfiguredAuthMethods.filter((authMethod) =>\n      restrictedAuthMethods.has(authMethod),\n    );\n\n    // Use the filtered methods unless there are none _and_ the restrictions\n    // come from `primary_required` (not just org-level restrictions)\n    if (restrictedAuthMethodsInUiConfig.length > 0 || !hasPrimaryAuthMethods) {\n      return restrictedAuthMethodsInUiConfig;\n    }\n\n    // If the org restricts allowed auth methods, show all of the methods\n    // included in `primary_required`\n    if (state.flowState.organization?.auth_methods === 'RESTRICTED') {\n      return flattenConfigToAuthMethods(config.organizationProducts, allOauthProviders).filter((authMethod) =>\n        restrictedAuthMethods.has(authMethod),\n      );\n    }\n\n    // If the org doesn't have any auth method restrictions, default to email\n    // magic links\n    return ['magic_link'];\n  }, [\n    config.organizationProducts,\n    flattenedConfiguredAuthMethods,\n    hasPrimaryAuthMethods,\n    restrictedAuthMethods,\n    state.flowState.organization?.auth_methods,\n  ]);\n\n  const products = useMemo(() => {\n    const productIds = [...new Set(authMethodsToShow.map(authMethodToProduct).filter(isTruthy))];\n    return productIds.map((productId) => config.organizationProducts.find((p) => p.id === productId)).filter(isTruthy);\n  }, [authMethodsToShow, config.organizationProducts]);\n\n  const oauthProviderSettings = useMemo<OauthProviderParams[]>(\n    () =>\n      authMethodsToShow\n        .map((authMethod) => {\n          const provider = oauthMethodsToOauthProviders[authMethod];\n          if (provider) {\n            return (\n              oauthProviderConfigs.find((oauthProvider) => oauthProvider.type === provider) ??\n              getParamsFromB2BOAuthProviderConfig(provider)\n            );\n          }\n        })\n        .filter(isTruthy),\n    [authMethodsToShow, oauthProviderConfigs],\n  );\n\n  return { products, oauthProviderSettings };\n};\n","const DEFAULT_OTP_EXPIRATION_MS = 1000 * 60 * 10; // 10 minutes\n\nexport const getOtpCodeExpiration = () => new Date(Date.now() + DEFAULT_OTP_EXPIRATION_MS);\n","import { ResponseCommon, StytchAPIError } from '@stytch/core/public';\n\nimport { getOtpCodeExpiration } from '../getOtpCodeExpiration';\nimport { useConfig, useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport { StytchMutationKey, useMutate } from '../utils';\n\nexport const useEmailOtpDiscoverySend = ({ throwOnError }: { throwOnError?: boolean } = {}) => {\n  const [, dispatch] = useGlobalReducer();\n  const stytchClient = useStytch();\n  const config = useConfig();\n\n  return useMutate<ResponseCommon, StytchAPIError, StytchMutationKey, { email: string }>(\n    'stytch.otps.email.discovery.send',\n    (_key: string, { arg: { email } }: { arg: { email: string } }) =>\n      stytchClient.otps.email.discovery.send({\n        email_address: email,\n        login_template_id: config.emailOtpOptions?.loginTemplateId,\n        locale: config.emailOtpOptions?.locale,\n      }),\n    {\n      onSuccess: () => {\n        dispatch({ type: 'send_email_otp', codeExpiration: getOtpCodeExpiration() });\n      },\n      throwOnError,\n    },\n  );\n};\n","import { B2BOTPsEmailLoginOrSignupResponse, StytchAPIError } from '@stytch/core/public';\n\nimport { getOtpCodeExpiration } from '../getOtpCodeExpiration';\nimport { useConfig, useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport { StytchMutationKey, useMutate } from '../utils';\n\nexport const useEmailOtpLoginOrSignup = ({ throwOnError }: { throwOnError?: boolean } = {}) => {\n  const [, dispatch] = useGlobalReducer();\n  const stytchClient = useStytch();\n  const config = useConfig();\n\n  return useMutate<\n    B2BOTPsEmailLoginOrSignupResponse,\n    StytchAPIError,\n    StytchMutationKey,\n    { email: string; organization_id: string }\n  >(\n    'stytch.otps.email.loginOrSignup',\n    (_key: string, { arg: { email, organization_id } }: { arg: { email: string; organization_id: string } }) =>\n      stytchClient.otps.email.loginOrSignup({\n        email_address: email,\n        organization_id,\n        login_template_id: config.emailOtpOptions?.loginTemplateId,\n        signup_template_id: config.emailOtpOptions?.signupTemplateId,\n        locale: config.emailOtpOptions?.locale,\n      }),\n    {\n      onSuccess: () => {\n        dispatch({ type: 'send_email_otp', codeExpiration: getOtpCodeExpiration() });\n      },\n      throwOnError,\n    },\n  );\n};\n","import { useLingui } from '@lingui/react/macro';\nimport { StytchAPIError } from '@stytch/core/public';\n\nimport { getTranslatedError } from '../../../utils/getTranslatedError';\n\nconst JIT_PROVISIONING_ERRORS = ['email_jit_provisioning_not_allowed', 'invalid_email_for_jit_provisioning'];\n\n/**\n * Translates error message to user friendlier format including handling for JIT errors\n */\nexport const useParseErrorMessage = () => {\n  const { t } = useLingui();\n  return (error: StytchAPIError, { email, org: organizationName }: { email: string; org: string }) => {\n    if (JIT_PROVISIONING_ERRORS.includes(error.error_type)) {\n      return t({\n        id: 'error.jitIneligible',\n        message: `${email} does not have access to ${organizationName}. If you think this is a mistake, contact your admin`,\n      });\n    }\n    return getTranslatedError(error, t);\n  };\n};\n","import { useLingui } from '@lingui/react/macro';\nimport React, { useState } from 'react';\n\nimport { getTranslatedError } from '../../../utils/getTranslatedError';\nimport Button from '../../components/atoms/Button';\nimport Column from '../../components/atoms/Column';\nimport EmailInput from '../../components/molecules/EmailInput';\nimport UsePasswordButton from '../components/UsePasswordButton';\nimport { useGlobalReducer } from '../GlobalContextProvider';\nimport { useEffectiveAuthConfig } from '../hooks/useEffectiveAuthConfig';\nimport { useEmailOtpDiscoverySend } from '../hooks/useEmailOtpDiscoverySend';\nimport { useEmailOtpLoginOrSignup } from '../hooks/useEmailOtpLoginOrSignup';\nimport { useEmlDiscoverySend } from '../hooks/useEmlDiscoverySend';\nimport { useEmlLoginOrSignup } from '../hooks/useEmlLoginOrSignup';\nimport { AppScreens } from '../types/AppScreens';\nimport { hasProduct } from '../utils';\nimport { useParseErrorMessage } from './useParseErrorMessage';\n\nexport const EmailForm = ({ showPasswordButton }: { showPasswordButton: boolean }) => {\n  const [state, dispatch] = useGlobalReducer();\n  const [emailInput, setEmailInput] = useState(state.formState.passwordState.email);\n  const parseErrorMessage = useParseErrorMessage();\n  const { t } = useLingui();\n\n  const { products } = useEffectiveAuthConfig();\n  const enableEml = hasProduct(products, 'emailMagicLinks');\n  const enableOtp = hasProduct(products, 'emailOtp');\n\n  const providedEmail = state.primary.email;\n  const email = providedEmail || emailInput;\n\n  const { trigger: stytchEmlLoginOrSignup, error: emlError, isMutating: emlIsMutating } = useEmlLoginOrSignup();\n  const { trigger: stytchOtpLoginOrSignup, error: otpError, isMutating: otpIsMutating } = useEmailOtpLoginOrSignup();\n\n  const isMutating = emlIsMutating || otpIsMutating;\n  const error = emlError || otpError;\n\n  const organization = state.flowState.organization;\n  if (!organization) return <></>;\n\n  const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n    e.preventDefault();\n    dispatch({ type: 'set_user_supplied_email', email });\n\n    if (enableEml && enableOtp) {\n      dispatch({ type: 'transition', screen: AppScreens.EmailMethodSelection, history: 'push' });\n    } else if (enableEml) {\n      stytchEmlLoginOrSignup({ email, organization_id: organization.organization_id });\n    } else if (enableOtp) {\n      stytchOtpLoginOrSignup({ email, organization_id: organization.organization_id });\n    }\n  };\n\n  if (providedEmail) {\n    return (\n      <Column gap={2}>\n        {products\n          .filter((product) => product.id === 'emailMagicLinks' || product.id === 'emailOtp')\n          .map((product) => {\n            switch (product.id) {\n              case 'emailMagicLinks':\n                return (\n                  <Button\n                    key={product.id}\n                    onClick={() => {\n                      dispatch({ type: 'set_user_supplied_email', email });\n                      stytchEmlLoginOrSignup({ email, organization_id: organization.organization_id });\n                    }}\n                    loading={emlIsMutating}\n                    disabled={isMutating}\n                    variant=\"outline\"\n                  >\n                    {t({ id: 'button.emailLink', message: 'Email me a link' })}\n                  </Button>\n                );\n\n              case 'emailOtp':\n                return (\n                  <Button\n                    key={product.id}\n                    onClick={() => {\n                      dispatch({ type: 'set_user_supplied_email', email });\n                      stytchOtpLoginOrSignup({ email, organization_id: organization.organization_id });\n                    }}\n                    loading={otpIsMutating}\n                    disabled={isMutating}\n                    variant=\"outline\"\n                  >\n                    {t({ id: 'button.emailCode', message: 'Email me a code' })}\n                  </Button>\n                );\n            }\n          })}\n\n        {showPasswordButton && <UsePasswordButton email={email} />}\n      </Column>\n    );\n  }\n\n  return (\n    <Column as=\"form\" onSubmit={handleSubmit} gap={2}>\n      <EmailInput\n        email={email}\n        setEmail={setEmailInput}\n        hideLabel\n        error={error ? parseErrorMessage(error, { email, org: organization.organization_name }) : undefined}\n      />\n\n      <Button type=\"submit\" variant=\"primary\" loading={isMutating}>\n        {t({ id: 'button.continueWithEmail', message: 'Continue with email' })}\n      </Button>\n\n      {showPasswordButton && <UsePasswordButton email={email} />}\n    </Column>\n  );\n};\n\nexport const EmailDiscoveryForm = ({ showPasswordButton }: { showPasswordButton: boolean }) => {\n  const [state, dispatch] = useGlobalReducer();\n  const [email, setEmail] = useState(state.formState.passwordState.email);\n  const { t } = useLingui();\n\n  const { products } = useEffectiveAuthConfig();\n  const enableEml = products.some((p) => p.id === 'emailMagicLinks');\n  const enableOtp = products.some((p) => p.id === 'emailOtp');\n\n  const { trigger: stytchEmlDiscoverySend, error: emlError, isMutating: emlIsMutating } = useEmlDiscoverySend();\n  const { trigger: stytchOtpDiscoverySend, error: otpError, isMutating: otpIsMutating } = useEmailOtpDiscoverySend();\n\n  const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n    e.preventDefault();\n    dispatch({ type: 'set_user_supplied_email', email });\n\n    if (enableEml && enableOtp) {\n      dispatch({ type: 'transition', screen: AppScreens.EmailMethodSelection, history: 'push' });\n    } else if (enableEml) {\n      stytchEmlDiscoverySend({ email });\n    } else if (enableOtp) {\n      stytchOtpDiscoverySend({ email });\n    }\n  };\n\n  const isMutating = emlIsMutating || otpIsMutating;\n  const error = emlError || otpError;\n\n  return (\n    <Column as=\"form\" onSubmit={handleSubmit} gap={2}>\n      <EmailInput\n        email={email}\n        setEmail={setEmail}\n        hideLabel\n        error={error ? getTranslatedError(error, t) : undefined}\n      />\n\n      <Button type=\"submit\" variant=\"primary\" loading={isMutating}>\n        {t({ id: 'button.continueWithEmail', message: 'Continue with email' })}\n      </Button>\n\n      {showPasswordButton && <UsePasswordButton email={email} />}\n    </Column>\n  );\n};\n","import { MessageDescriptor } from '@lingui/core';\nimport { msg } from '@lingui/core/macro';\nimport { useLingui } from '@lingui/react/macro';\nimport { AuthFlowType } from '@stytch/core/public';\nimport React, { useMemo } from 'react';\n\nimport { getTranslatedError } from '../../../utils/getTranslatedError';\nimport { isTruthy } from '../../../utils/isTruthy';\nimport Button from '../../components/atoms/Button';\nimport Column from '../../components/atoms/Column';\nimport Typography from '../../components/atoms/Typography';\nimport ButtonColumn from '../../components/molecules/ButtonColumn';\nimport ErrorText from '../../components/molecules/ErrorText';\nimport { useGlobalReducer } from '../GlobalContextProvider';\nimport { useEffectiveAuthConfig } from '../hooks/useEffectiveAuthConfig';\nimport { useEmailOtpDiscoverySend } from '../hooks/useEmailOtpDiscoverySend';\nimport { useEmailOtpLoginOrSignup } from '../hooks/useEmailOtpLoginOrSignup';\nimport { useEmlDiscoverySend } from '../hooks/useEmlDiscoverySend';\nimport { useEmlLoginOrSignup } from '../hooks/useEmlLoginOrSignup';\nimport { ProductId } from '../StytchB2BProduct';\n\nconst options: Partial<Record<ProductId, { messageDescriptor: MessageDescriptor }>> = {\n  emailMagicLinks: {\n    messageDescriptor: msg({ id: 'emailMethodSelection.link', message: 'Email me a login link' }),\n  },\n  emailOtp: {\n    messageDescriptor: msg({ id: 'emailMethodSelection.code', message: 'Email me a login code' }),\n  },\n};\n\nexport const EmailMethodSelectionScreen = () => {\n  const { products } = useEffectiveAuthConfig();\n  const { t } = useLingui();\n\n  const [state, dispatch] = useGlobalReducer();\n\n  const {\n    trigger: sendDiscoveryEml,\n    isMutating: isSendingDiscoveryEml,\n    error: sendDiscoveryEmlError,\n    reset: resetSendDiscoveryEml,\n  } = useEmlDiscoverySend();\n\n  const {\n    trigger: sendDiscoveryOtp,\n    isMutating: isSendingDiscoveryOtp,\n    error: sendDiscoveryOtpError,\n    reset: resetSendDiscoveryOtp,\n  } = useEmailOtpDiscoverySend();\n\n  const {\n    trigger: sendLoginOrSignupEml,\n    isMutating: isSendingLoginOrSignupEml,\n    error: sendLoginOrSignupEmlError,\n    reset: resetSendLoginOrSignupEml,\n  } = useEmlLoginOrSignup();\n\n  const {\n    trigger: sendLoginOrSignupOtp,\n    isMutating: isSendingLoginOrSignupOtp,\n    error: sendLoginOrSignupOtpError,\n    reset: resetSendLoginOrSignupOtp,\n  } = useEmailOtpLoginOrSignup();\n\n  const isSending =\n    isSendingDiscoveryEml || isSendingDiscoveryOtp || isSendingLoginOrSignupEml || isSendingLoginOrSignupOtp;\n  const error =\n    sendDiscoveryEmlError || sendDiscoveryOtpError || sendLoginOrSignupEmlError || sendLoginOrSignupOtpError;\n\n  const handleChooseMethod = (method: ProductId) => {\n    resetSendDiscoveryEml();\n    resetSendDiscoveryOtp();\n    resetSendLoginOrSignupEml();\n    resetSendLoginOrSignupOtp();\n\n    switch (method) {\n      case 'emailMagicLinks':\n        if (state.flowState.type === AuthFlowType.Discovery) {\n          sendDiscoveryEml({ email: state.formState.emailState.userSuppliedEmail });\n        } else if (state.flowState.type === AuthFlowType.Organization && state.flowState.organization) {\n          sendLoginOrSignupEml({\n            email: state.formState.emailState.userSuppliedEmail,\n            organization_id: state.flowState.organization.organization_id,\n          });\n        }\n        break;\n      case 'emailOtp':\n        if (state.flowState.type === AuthFlowType.Discovery) {\n          sendDiscoveryOtp({ email: state.formState.emailState.userSuppliedEmail });\n        } else if (state.flowState.type === AuthFlowType.Organization && state.flowState.organization) {\n          sendLoginOrSignupOtp({\n            email: state.formState.emailState.userSuppliedEmail,\n            organization_id: state.flowState.organization.organization_id,\n          });\n        }\n        break;\n    }\n  };\n\n  const displayOptions = useMemo(\n    () =>\n      products\n        .map((product) => {\n          const option = options[product.id];\n          if (!option) return;\n\n          return {\n            option: product.id,\n            messageDescriptor: option.messageDescriptor,\n          };\n        })\n        .filter(isTruthy),\n    [products],\n  );\n\n  const handleBack = () => {\n    dispatch({ type: 'navigate_back' });\n  };\n\n  return (\n    <Column gap={6}>\n      <Typography variant=\"header\">\n        {t({ id: 'emailMethodSelection.title', message: 'Select how you’d like to continue' })}\n      </Typography>\n      <ButtonColumn>\n        {displayOptions.map(({ option, messageDescriptor }) => (\n          <Button\n            key={option}\n            variant=\"outline\"\n            disabled={isSending}\n            onClick={() => {\n              handleChooseMethod(option);\n            }}\n          >\n            {t(messageDescriptor)}\n          </Button>\n        ))}\n\n        {error && <ErrorText>{getTranslatedError(error, t)}</ErrorText>}\n\n        <Button variant=\"ghost\" onClick={handleBack}>\n          {t({ id: 'button.goBack', message: 'Go back' })}\n        </Button>\n      </ButtonColumn>\n    </Column>\n  );\n};\n","import { useLingui } from '@lingui/react/macro';\nimport {\n  AuthFlowType,\n  B2BDiscoveryOTPEmailAuthenticateResponse,\n  B2BOTPsEmailAuthenticateResponse,\n  StytchAPIError,\n} from '@stytch/core/public';\nimport React from 'react';\n\nimport { getTranslatedError } from '../../../utils/getTranslatedError';\nimport Button from '../../components/atoms/Button';\nimport Column from '../../components/atoms/Column';\nimport { useCountdown } from '../../components/atoms/Countdown';\nimport ButtonColumn from '../../components/molecules/ButtonColumn';\nimport { LoadingScreen } from '../../components/molecules/Loading';\nimport { ResendOTPButton } from '../../components/organisms/ResendOTPButton';\nimport { SentOTPEntry } from '../../components/organisms/SentOTPEntry';\nimport { useConfig, useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport { useEmailOtpDiscoverySend } from '../hooks/useEmailOtpDiscoverySend';\nimport { useEmailOtpLoginOrSignup } from '../hooks/useEmailOtpLoginOrSignup';\nimport { onAuthenticateSuccess, onDiscoveryAuthenticateSuccess, StytchMutationKey, useMutate } from '../utils';\n\nexport const EmailOTPEntryScreen = () => {\n  const stytchClient = useStytch();\n  const config = useConfig();\n  const { t } = useLingui();\n\n  const [state, dispatch] = useGlobalReducer();\n  const { codeExpiration } = state.formState.otpState;\n  const resendCountdown = useCountdown();\n  const { userSuppliedEmail } = state.formState.emailState;\n\n  const emailOtp = useEmailOtpLoginOrSignup({ throwOnError: true });\n  const emailOtpDiscovery = useEmailOtpDiscoverySend({ throwOnError: true });\n\n  const isSending = emailOtp.isMutating || emailOtpDiscovery.isMutating;\n  const sendError = emailOtp.error || emailOtpDiscovery.error;\n\n  const discoveryAuthenticate = useMutate<\n    B2BDiscoveryOTPEmailAuthenticateResponse,\n    unknown,\n    StytchMutationKey,\n    { otp: string; email: string }\n  >(\n    'stytch.otps.email.discovery.authenticate',\n    (_: string, { arg: { otp, email } }: { arg: { otp: string; email: string } }) =>\n      stytchClient.otps.email.discovery.authenticate({\n        code: otp,\n        email_address: email,\n      }),\n    {\n      onSuccess: (data) => {\n        onDiscoveryAuthenticateSuccess(data, dispatch);\n      },\n      throwOnError: true,\n    },\n  );\n\n  const authenticate = useMutate<\n    B2BOTPsEmailAuthenticateResponse,\n    unknown,\n    StytchMutationKey,\n    { otp: string; emailAddress: string; organizationId: string; sessionDurationMinutes: number }\n  >(\n    'stytch.otps.email.authenticate',\n    (\n      _: string,\n      {\n        arg: { otp, emailAddress, organizationId, sessionDurationMinutes },\n      }: { arg: { otp: string; emailAddress: string; organizationId: string; sessionDurationMinutes: number } },\n    ) =>\n      stytchClient.otps.email.authenticate({\n        code: otp,\n        email_address: emailAddress,\n        organization_id: organizationId,\n        session_duration_minutes: sessionDurationMinutes,\n      }),\n    {\n      onSuccess: (data) => {\n        onAuthenticateSuccess(data, dispatch, config);\n      },\n      throwOnError: true,\n    },\n  );\n\n  const isAuthenticatingAny = discoveryAuthenticate.isMutating || authenticate.isMutating;\n  const error = discoveryAuthenticate.error || authenticate.error || sendError;\n  const errorMessage = error ? getTranslatedError(error as StytchAPIError, t) : undefined;\n\n  const resetAll = () => {\n    for (const resp of [emailOtp, emailOtpDiscovery, authenticate, discoveryAuthenticate]) {\n      resp.reset();\n    }\n  };\n\n  const handleSubmit = async (otp: string) => {\n    resetAll();\n\n    try {\n      if (state.flowState.type === AuthFlowType.Discovery) {\n        await discoveryAuthenticate.trigger({\n          otp,\n          email: userSuppliedEmail,\n        });\n      } else if (\n        state.flowState.type === AuthFlowType.Organization &&\n        state.flowState.organization &&\n        state.formState.emailState.userSuppliedEmail\n      ) {\n        await authenticate.trigger({\n          otp,\n          emailAddress: state.formState.emailState.userSuppliedEmail,\n          organizationId: state.flowState.organization.organization_id,\n          sessionDurationMinutes: config.sessionOptions.sessionDurationMinutes,\n        });\n      }\n    } catch {\n      resendCountdown.clear();\n    }\n  };\n\n  const handleResendOTP = async () => {\n    resetAll();\n\n    if (isSending) return;\n\n    if (state.flowState.type === AuthFlowType.Discovery) {\n      await emailOtpDiscovery.trigger({ email: userSuppliedEmail });\n    } else if (state.flowState.type === AuthFlowType.Organization && state.flowState.organization) {\n      await emailOtp.trigger({\n        email: userSuppliedEmail,\n        organization_id: state.flowState.organization.organization_id,\n      });\n    }\n  };\n\n  const handleBack = () => {\n    dispatch({ type: 'navigate_back' });\n  };\n\n  return (\n    <Column gap={6}>\n      {codeExpiration !== null ? (\n        <SentOTPEntry\n          isSubmitting={isAuthenticatingAny}\n          onSubmit={handleSubmit}\n          errorMessage={errorMessage}\n          expiration={codeExpiration.getTime()}\n          formattedDestination={userSuppliedEmail}\n        />\n      ) : (\n        <LoadingScreen />\n      )}\n\n      <ButtonColumn>\n        <ResendOTPButton countdown={resendCountdown} resendOTP={handleResendOTP} isSubmitting={isAuthenticatingAny} />\n        <Button variant=\"ghost\" onClick={handleBack}>\n          {t({ id: 'button.goBack', message: 'Go back' })}\n        </Button>\n      </ButtonColumn>\n    </Column>\n  );\n};\n","import { useLingui } from '@lingui/react/macro';\nimport { DEFAULT_SESSION_DURATION_MINUTES } from '@stytch/core';\nimport { OrganizationBySlugMatch, StytchAPIError, StytchEventType } from '@stytch/core/public';\nimport { useState } from 'react';\n\nimport { B2BSubscriptionDataLayer } from '../../SubscriptionService';\nimport { getTranslatedError } from '../../utils/getTranslatedError';\nimport { readB2BInternals } from '../../utils/internal';\nimport { useConfig, useErrorCallback, useEventCallback, useGlobalReducer, useStytch } from './GlobalContextProvider';\nimport { AppScreens } from './types/AppScreens';\nimport { onAuthenticateSuccess } from './utils';\n\nexport const usePasswordInput = () => {\n  const [state, dispatch] = useGlobalReducer();\n  const config = useConfig();\n  const stytch = useStytch();\n  const { t } = useLingui();\n\n  const onEvent = useEventCallback();\n  const onError = useErrorCallback();\n\n  const [email, setEmail] = useState(state.formState.passwordState.email);\n  const [password, setPassword] = useState('');\n  const [errorMessage, setErrorMessage] = useState('');\n  const [isSubmitting, setIsSubmitting] = useState(false);\n  const organization = state.flowState.organization;\n\n  const submitPassword = (organization_id: string) => {\n    setErrorMessage('');\n    setIsSubmitting(true);\n    stytch.passwords\n      .authenticate({\n        email_address: email,\n        organization_id: organization_id,\n        password: password,\n        session_duration_minutes: config.sessionOptions?.sessionDurationMinutes ?? DEFAULT_SESSION_DURATION_MINUTES,\n        locale: config.passwordOptions?.locale,\n      })\n      .then((data) => {\n        setIsSubmitting(false);\n        onEvent({ type: StytchEventType.B2BPasswordAuthenticate, data });\n        onAuthenticateSuccess(data, dispatch, config);\n      })\n      .catch((err: StytchAPIError) => {\n        setIsSubmitting(false);\n        onError(err);\n        setErrorMessage(getTranslatedError(err, t));\n      });\n  };\n\n  const submitDiscoveryPassword = () => {\n    setErrorMessage('');\n    setIsSubmitting(true);\n    stytch.passwords.discovery\n      .authenticate({\n        email_address: email,\n        password: password,\n      })\n      .then((data) => {\n        setIsSubmitting(false);\n        onEvent({ type: StytchEventType.B2BPasswordDiscoveryAuthenticate, data });\n        dispatch({\n          type: 'set_discovery_state',\n          email: data.email_address,\n          discoveredOrganizations: data.discovered_organizations,\n        });\n        dispatch({ type: 'transition', screen: AppScreens.Discovery });\n      })\n      .catch((err: StytchAPIError) => {\n        setIsSubmitting(false);\n        onError(err);\n        setErrorMessage(getTranslatedError(err, t));\n      });\n  };\n\n  const emailEligibleForJITProvisioning = (\n    { email_jit_provisioning, email_allowed_domains }: OrganizationBySlugMatch,\n    email: string,\n  ) => {\n    switch (email_jit_provisioning) {\n      case 'ALL_ALLOWED':\n        return true;\n      case 'NOT_ALLOWED':\n        return false;\n      case 'RESTRICTED': {\n        const emailDomain = email.split('@').pop();\n        return emailDomain != null && email_allowed_domains.includes(emailDomain);\n      }\n    }\n  };\n\n  const handleNonMemberReset = () => {\n    if (!organization) {\n      return;\n    }\n\n    if (!emailEligibleForJITProvisioning(organization, email)) {\n      setIsSubmitting(false);\n      const organizationName = organization.organization_name;\n      setErrorMessage(\n        t({\n          id: 'error.emailNoAccessToOrg',\n          message: `${email} does not have access to ${organizationName}. If you think this is a mistake, contact your admin.`,\n        }),\n      );\n      return;\n    }\n\n    const dataLayer = readB2BInternals(stytch).dataLayer as B2BSubscriptionDataLayer;\n    dataLayer.setItem('reset-email-value', email);\n    stytch.magicLinks.email\n      .loginOrSignup({\n        email_address: email,\n        organization_id: organization.organization_id,\n        login_redirect_url: config.passwordOptions?.resetPasswordRedirectURL,\n        signup_redirect_url: config.passwordOptions?.resetPasswordRedirectURL,\n        login_template_id: config.emailMagicLinksOptions?.loginTemplateId,\n        signup_template_id: config.emailMagicLinksOptions?.signupTemplateId,\n        locale: config.emailMagicLinksOptions?.locale,\n      })\n      .then(() => {\n        setIsSubmitting(false);\n        dispatch({ type: 'set_password_state', email: email });\n        dispatch({ type: 'transition', screen: AppScreens.PasswordResetVerifyConfirmation });\n      })\n      .catch((err: StytchAPIError) => {\n        onError(err);\n        setErrorMessage(getTranslatedError(err, t));\n        setIsSubmitting(false);\n      });\n  };\n\n  return {\n    stytch,\n    onError,\n    email,\n    setEmail,\n    password,\n    setPassword,\n    organization,\n    errorMessage,\n    setErrorMessage,\n    isSubmitting,\n    setIsSubmitting,\n    submitPassword,\n    submitDiscoveryPassword,\n    handleNonMemberReset,\n  };\n};\n","import { useLingui } from '@lingui/react/macro';\nimport React from 'react';\n\nimport { EMAIL_REGEX } from '../../../utils';\nimport Button from '../../components/atoms/Button';\nimport Column from '../../components/atoms/Column';\nimport Typography from '../../components/atoms/Typography';\nimport ButtonColumn from '../../components/molecules/ButtonColumn';\nimport EmailInput from '../../components/molecules/EmailInput';\nimport { PasswordInput } from '../../components/molecules/PasswordInput';\nimport { useGlobalReducer } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport { usePasswordInput } from '../usePasswordInput';\n\nexport const PasswordsAuthenticate = () => {\n  const [, dispatch] = useGlobalReducer();\n  const { t } = useLingui();\n\n  const {\n    email,\n    setEmail,\n    password,\n    setPassword,\n    organization,\n    errorMessage,\n    setErrorMessage,\n    isSubmitting,\n    submitPassword,\n    submitDiscoveryPassword,\n  } = usePasswordInput();\n\n  const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n    e.preventDefault();\n    if (!email.match(EMAIL_REGEX)) {\n      setErrorMessage(t({ id: 'error.invalidEmailAddress', message: 'Invalid email address' }));\n    } else {\n      if (!organization) {\n        submitDiscoveryPassword();\n      } else {\n        submitPassword(organization.organization_id);\n      }\n    }\n  };\n\n  const onGetHelp = () => {\n    dispatch({ type: 'set_password_state', email: email });\n    dispatch({ type: 'transition', screen: AppScreens.PasswordForgotForm });\n  };\n\n  return (\n    <Column gap={6}>\n      <Typography variant=\"header\">\n        {t({ id: 'password.login.title', message: 'Log in with email and password' })}\n      </Typography>\n\n      <Column as=\"form\" onSubmit={handleSubmit} gap={4}>\n        <EmailInput email={email} setEmail={setEmail} />\n\n        <PasswordInput password={password} setPassword={setPassword} type=\"current\" error={errorMessage} />\n\n        <ButtonColumn>\n          <Button variant=\"primary\" loading={isSubmitting} type=\"submit\">\n            {t({ id: 'button.continue', message: 'Continue' })}\n          </Button>\n\n          <Button variant=\"outline\" onClick={onGetHelp}>\n            {t({ id: 'link.signupResetPassword', message: 'Sign up or reset password' })}\n          </Button>\n\n          <Button variant=\"ghost\" onClick={() => dispatch({ type: 'transition', screen: AppScreens.Main })}>\n            {t({ id: 'button.goBack', message: 'Go back' })}\n          </Button>\n        </ButtonColumn>\n      </Column>\n    </Column>\n  );\n};\n","import { useLingui } from '@lingui/react/macro';\nimport { StytchAPIError } from '@stytch/core/public';\nimport React, { useState } from 'react';\n\nimport { EMAIL_REGEX } from '../../../utils';\nimport { readB2BInternals } from '../../../utils/internal';\nimport Button from '../../components/atoms/Button';\nimport Column from '../../components/atoms/Column';\nimport EmailInput from '../../components/molecules/EmailInput';\nimport { PasswordInput } from '../../components/molecules/PasswordInput';\nimport { useGlobalReducer } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport { usePasswordInput } from '../usePasswordInput';\nimport { useParseErrorMessage } from './useParseErrorMessage';\n\nexport const PasswordsEmailForm = () => {\n  const [, dispatch] = useGlobalReducer();\n  const { t } = useLingui();\n\n  const parseErrorMessages = useParseErrorMessage();\n\n  const {\n    stytch,\n    email,\n    setEmail,\n    password,\n    setPassword,\n    organization,\n    errorMessage,\n    setErrorMessage,\n    isSubmitting,\n    setIsSubmitting,\n    submitPassword,\n    submitDiscoveryPassword,\n    handleNonMemberReset,\n  } = usePasswordInput();\n\n  const [hideInput, setHideInput] = useState(!!organization && !email);\n\n  const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n    e.preventDefault();\n    if (!organization) {\n      // Discovery flow\n      submitDiscoveryPassword();\n      return;\n    }\n\n    const organization_id = organization.organization_id;\n\n    // If we have processed the email, submit the password field\n    if (!hideInput) {\n      submitPassword(organization_id);\n      return;\n    }\n\n    // Validate we have a member with a password. Otherwise, check if we can jit\n    // provision and kickoff verification and session reset\n    if (!email.match(EMAIL_REGEX)) {\n      setErrorMessage(t({ id: 'error.invalidEmailAddress', message: 'Invalid email address' }));\n      return;\n    }\n    setErrorMessage('');\n    setIsSubmitting(true);\n    readB2BInternals(stytch)\n      .searchManager.searchMember(email, organization.organization_id)\n      .then(({ member }) => {\n        if (member) {\n          setHideInput(false);\n          setIsSubmitting(false);\n          dispatch({ type: 'set_password_state', email });\n          return;\n        }\n        // No member password flow: verify email and use reset by session\n        handleNonMemberReset();\n      })\n      .catch((err: StytchAPIError) => {\n        setIsSubmitting(false);\n        setErrorMessage(parseErrorMessages(err, { email, org: organization_id }));\n      });\n  };\n\n  const onGetHelp = () => {\n    dispatch({ type: 'set_password_state', email: email });\n    dispatch({ type: 'transition', screen: AppScreens.PasswordForgotForm });\n  };\n\n  return (\n    <Column as=\"form\" onSubmit={handleSubmit} gap={2}>\n      <EmailInput email={email} setEmail={setEmail} error={hideInput ? errorMessage : undefined} />\n\n      {!hideInput && (\n        <PasswordInput password={password} setPassword={setPassword} type=\"current\" error={errorMessage} />\n      )}\n\n      <Button variant=\"primary\" loading={isSubmitting} type=\"submit\">\n        {t({ id: 'button.continue', message: 'Continue' })}\n      </Button>\n\n      {!hideInput && (\n        <Button variant=\"outline\" onClick={onGetHelp}>\n          {t({ id: 'link.signupResetPassword', message: 'Sign up or reset password' })}\n        </Button>\n      )}\n    </Column>\n  );\n};\n","import { useLingui } from '@lingui/react/macro';\nimport { StytchAPIError, StytchEventType } from '@stytch/core/public';\nimport React from 'react';\n\nimport { EMAIL_REGEX } from '../../../utils';\nimport { getTranslatedError } from '../../../utils/getTranslatedError';\nimport { readB2BInternals } from '../../../utils/internal';\nimport Button from '../../components/atoms/Button';\nimport Column from '../../components/atoms/Column';\nimport Typography from '../../components/atoms/Typography';\nimport ButtonColumn from '../../components/molecules/ButtonColumn';\nimport EmailInput from '../../components/molecules/EmailInput';\nimport { useConfig, useEventCallback, useGlobalReducer } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport { usePasswordInput } from '../usePasswordInput';\n\nexport const PasswordsForgotForm = () => {\n  const [, dispatch] = useGlobalReducer();\n  const config = useConfig();\n  const onEvent = useEventCallback();\n  const { t } = useLingui();\n\n  const {\n    stytch,\n    email,\n    setEmail,\n    organization,\n    errorMessage,\n    setErrorMessage,\n    isSubmitting,\n    setIsSubmitting,\n    handleNonMemberReset,\n  } = usePasswordInput();\n\n  const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n    e.preventDefault();\n    if (!email.match(EMAIL_REGEX)) {\n      setErrorMessage(t({ id: 'error.invalidEmailAddress', message: 'Invalid email address' }));\n      return;\n    }\n    setErrorMessage('');\n    setIsSubmitting(true);\n    if (organization) {\n      readB2BInternals(stytch)\n        .searchManager.searchMember(email, organization.organization_id)\n        .then(({ member }) => {\n          if (!member) {\n            handleNonMemberReset();\n            return;\n          }\n          // Member password flow: call reset password start instead\n          stytch.passwords\n            .resetByEmailStart({\n              email_address: email,\n              organization_id: organization.organization_id,\n              login_redirect_url: config.passwordOptions?.loginRedirectURL,\n              reset_password_redirect_url: config.passwordOptions?.resetPasswordRedirectURL,\n              reset_password_expiration_minutes: config.passwordOptions?.resetPasswordExpirationMinutes,\n              reset_password_template_id: config.passwordOptions?.resetPasswordTemplateId,\n              verify_email_template_id: config.passwordOptions?.verifyEmailTemplateId,\n              locale: config.passwordOptions?.locale,\n            })\n            .then((data) => {\n              setIsSubmitting(false);\n              onEvent({ type: StytchEventType.B2BPasswordResetByEmailStart, data });\n              dispatch({ type: 'set_password_state', email: email });\n              dispatch({ type: 'transition', screen: AppScreens.PasswordSetNewConfirmation });\n            })\n            .catch((err: StytchAPIError) => {\n              setIsSubmitting(false);\n              setErrorMessage(getTranslatedError(err, t));\n            });\n        })\n        .catch((err: StytchAPIError) => {\n          setIsSubmitting(false);\n          setErrorMessage(getTranslatedError(err, t));\n        });\n    } else {\n      // Discovery password flow: call discovery reset password start instead. This flow doesn't need a member object\n      stytch.passwords.discovery\n        .resetByEmailStart({\n          email_address: email,\n          discovery_redirect_url: config.passwordOptions?.discoveryRedirectURL,\n          reset_password_redirect_url: config.passwordOptions?.resetPasswordRedirectURL,\n          reset_password_expiration_minutes: config.passwordOptions?.resetPasswordExpirationMinutes,\n          reset_password_template_id: config.passwordOptions?.resetPasswordTemplateId,\n          verify_email_template_id: config.passwordOptions?.verifyEmailTemplateId,\n          locale: config.passwordOptions?.locale,\n        })\n        .then(() => {\n          setIsSubmitting(false);\n          dispatch({ type: 'set_password_state', email: email });\n          dispatch({ type: 'transition', screen: AppScreens.PasswordSetNewConfirmation });\n        })\n        .catch((err: StytchAPIError) => {\n          setIsSubmitting(false);\n          setErrorMessage(getTranslatedError(err, t));\n        });\n    }\n  };\n\n  return (\n    <Column as=\"form\" gap={6} onSubmit={handleSubmit}>\n      <Typography variant=\"header\">\n        {t({ id: 'password.forgot.title', message: 'Check your email for help signing in' })}\n      </Typography>\n      <Typography variant=\"body\">\n        {!organization\n          ? t({\n              id: 'password.forgot.content.discovery',\n              message:\n                \"We'll email you a verification link to sign up for an account or reset your password if you have one.\",\n            })\n          : t({\n              id: 'password.forgot.content.organization',\n              message:\n                \"We'll email you a login link to sign in to your account directly or reset your password if you have one.\",\n            })}\n      </Typography>\n\n      <EmailInput email={email} setEmail={setEmail} error={errorMessage} />\n\n      <ButtonColumn>\n        <Button variant=\"primary\" loading={isSubmitting} type=\"submit\">\n          {t({ id: 'button.continue', message: 'Continue' })}\n        </Button>\n        <Button variant=\"ghost\" onClick={() => dispatch({ type: 'transition', screen: AppScreens.Main })}>\n          {t({ id: 'button.goBack', message: 'Go back' })}\n        </Button>\n      </ButtonColumn>\n    </Column>\n  );\n};\n","import { Trans } from '@lingui/react';\nimport { useLingui } from '@lingui/react/macro';\nimport React from 'react';\n\nimport Button from '../../components/atoms/Button';\nimport EmailActionLayout from '../../components/molecules/EmailActionLayout';\nimport { emailProviderInfo, EmailProviderLink } from '../../components/molecules/EmailProviderLink';\nimport { useGlobalReducer } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport { useEmailDomain } from './useEmailDomain';\n\nexport const PasswordResetConfirmation = () => {\n  const { t } = useLingui();\n\n  const [state, dispatch] = useGlobalReducer();\n  const emailDomain = useEmailDomain();\n  const email = state.formState.passwordState.email;\n\n  const reset = () => {\n    dispatch({ type: 'set_user_supplied_email', email: '' });\n    dispatch({ type: 'transition', screen: AppScreens.Main });\n  };\n\n  return (\n    <EmailActionLayout\n      header={t({\n        id: 'password.verification.title',\n        message: 'Verify your email first.',\n      })}\n      description={\n        <Trans\n          id=\"password.verification.content\"\n          message=\"A login link was sent to you at <bold>{email}</bold>.\"\n          components={{ bold: <b /> }}\n          values={{ email }}\n        />\n      }\n      additionalActions={\n        <>\n          <EmailProviderLink emailDomain={emailDomain} providerInfo={emailProviderInfo.gmail} />\n          <EmailProviderLink emailDomain={emailDomain} providerInfo={emailProviderInfo.outlook} />\n          <Button variant=\"ghost\" onClick={reset}>\n            {t({ id: 'button.retry', message: 'Try again' })}\n          </Button>\n        </>\n      }\n    />\n  );\n};\n","import { useLingui } from '@lingui/react/macro';\nimport { DEFAULT_SESSION_DURATION_MINUTES } from '@stytch/core';\nimport { StytchAPIError, StytchEventType } from '@stytch/core/public';\nimport React, { useEffect, useMemo, useState } from 'react';\n\nimport { B2BSubscriptionDataLayer } from '../../../SubscriptionService';\nimport { debounce, noop } from '../../../utils';\nimport { clearStytchTokenParams } from '../../../utils/createAuthUrlHandler';\nimport { getTranslatedError } from '../../../utils/getTranslatedError';\nimport { readB2BInternals } from '../../../utils/internal';\nimport Button from '../../components/atoms/Button';\nimport Column from '../../components/atoms/Column';\nimport Typography from '../../components/atoms/Typography';\nimport EmailInput from '../../components/molecules/EmailInput';\nimport { getNewPasswordProps, PasswordError, PasswordErrorProps } from '../../components/molecules/PasswordError';\nimport { PasswordInput } from '../../components/molecules/PasswordInput';\nimport { useConfig, useErrorCallback, useEventCallback, useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport { onAuthenticateSuccess, useBootstrap as useB2BBootstrap } from '../utils';\n\nexport const PasswordResetForm = () => {\n  const stytchClient = useStytch();\n  const config = useConfig();\n  const [, dispatch] = useGlobalReducer();\n  const bootstrap = useB2BBootstrap();\n  const { t } = useLingui();\n\n  const onEvent = useEventCallback();\n  const onError = useErrorCallback();\n\n  const [resetToken, resetTokenType] = useMemo(() => {\n    const parsed = stytchClient.parseAuthenticateUrl();\n    if (!parsed) return ['', ''];\n    return [parsed.token, parsed.tokenType];\n  }, [stytchClient]);\n\n  const dataLayer = readB2BInternals(stytchClient).dataLayer as B2BSubscriptionDataLayer;\n  const email = dataLayer.getItem('reset-email-value');\n  const [password, setPassword] = useState('');\n  const [errorMessage, setErrorMessage] = useState('');\n  const [passwordError, setPasswordError] = useState<PasswordErrorProps>({ policy: 'notLoaded' });\n  const [isSubmitting, setIsSubmitting] = useState(false);\n\n  const updateStrengthCheck = useMemo(\n    () =>\n      debounce((password: string) => {\n        setErrorMessage('');\n        return stytchClient.passwords\n          .strengthCheck({ password })\n          .then(({ score, valid_password, zxcvbn_feedback, luds_feedback, strength_policy, breached_password }) => {\n            const common = {\n              passwordInvalid: !valid_password,\n              isPasswordBreached: breached_password,\n            };\n\n            if (strength_policy === 'zxcvbn') {\n              setPasswordError({\n                policy: strength_policy,\n                ...common,\n                passwordScore: score,\n                passwordWarning: zxcvbn_feedback.warning,\n                passwordSuggestions: zxcvbn_feedback.suggestions,\n              });\n            } else if (strength_policy === 'luds') {\n              setPasswordError({\n                policy: strength_policy,\n                ...common,\n                missingCharacters: luds_feedback.missing_characters,\n                missingComplexity: luds_feedback.missing_complexity,\n              });\n            }\n          })\n          .catch((e: StytchAPIError) => {\n            setErrorMessage(getTranslatedError(e, t));\n          });\n      }),\n    [stytchClient.passwords, t],\n  );\n\n  useEffect(() => {\n    if (resetTokenType === 'multi_tenant_magic_links') {\n      stytchClient.magicLinks\n        .authenticate({\n          magic_links_token: resetToken,\n          session_duration_minutes: config.sessionOptions?.sessionDurationMinutes ?? DEFAULT_SESSION_DURATION_MINUTES,\n          locale: config.emailMagicLinksOptions?.locale,\n        })\n        .then((data) => {\n          clearStytchTokenParams();\n          dispatch({\n            type: 'primary_authenticate_success',\n            response: data,\n            includedMfaMethods: config.mfaProductInclude,\n            resetTokenType,\n          });\n        })\n        .catch((e: StytchAPIError) => {\n          setErrorMessage(getTranslatedError(e, t));\n          onError(e);\n        });\n      return;\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps -- SDK-1354\n  }, [resetTokenType]);\n\n  const onPasswordChange = (password: string) => {\n    setPassword(password);\n    updateStrengthCheck(password);\n  };\n\n  const handleSubmit = (e: React.FormEvent<HTMLFormElement>) => {\n    e.preventDefault();\n    setErrorMessage('');\n    setIsSubmitting(true);\n\n    if (resetTokenType == 'multi_tenant_passwords') {\n      stytchClient.passwords\n        .resetByEmail({\n          password_reset_token: resetToken,\n          password,\n          session_duration_minutes: config.sessionOptions?.sessionDurationMinutes ?? DEFAULT_SESSION_DURATION_MINUTES,\n          locale: config.passwordOptions?.locale,\n        })\n        .then((data) => {\n          setIsSubmitting(false);\n          onEvent({ type: StytchEventType.B2BPasswordResetByEmail, data });\n          onAuthenticateSuccess(data, dispatch, config);\n        })\n        .catch((e: StytchAPIError) => {\n          onError(e);\n          setErrorMessage(getTranslatedError(e, t));\n          setIsSubmitting(false);\n        });\n    } else if (resetTokenType == 'discovery') {\n      stytchClient.passwords.discovery\n        .resetByEmail({\n          password_reset_token: resetToken,\n          password,\n        })\n        .then((data) => {\n          setIsSubmitting(false);\n          onEvent({ type: StytchEventType.B2BDiscoveryPasswordReset, data });\n          dispatch({\n            type: 'set_discovery_state',\n            email: data.email_address,\n            discoveredOrganizations: data.discovered_organizations,\n          });\n          dispatch({ type: 'transition', screen: AppScreens.Discovery });\n        })\n        .catch((e: StytchAPIError) => {\n          onError(e);\n          setErrorMessage(getTranslatedError(e, t));\n          setIsSubmitting(false);\n        });\n    } else {\n      stytchClient.passwords\n        .resetBySession({ password })\n        .then((data) => {\n          setIsSubmitting(false);\n          onEvent({ type: StytchEventType.B2BPasswordResetBySession, data });\n          dispatch({ type: 'transition', screen: AppScreens.LoggedIn });\n        })\n        .catch((e: StytchAPIError) => {\n          onError(e);\n          setErrorMessage(getTranslatedError(e, t));\n          setIsSubmitting(false);\n        });\n    }\n  };\n\n  const passwordInputProps = getNewPasswordProps(bootstrap, passwordError.policy);\n\n  return (\n    <Column gap={6} as=\"form\" onSubmit={handleSubmit}>\n      <Typography variant=\"header\">{t({ id: 'password.setNew.title', message: 'Set a new password' })}</Typography>\n\n      <Column gap={2}>\n        {email ? <EmailInput email={email} setEmail={noop} disabled /> : null}\n\n        <PasswordInput\n          password={password}\n          setPassword={onPasswordChange}\n          error={errorMessage}\n          {...passwordInputProps}\n        />\n\n        <PasswordError bootstrap={bootstrap} {...passwordError} />\n\n        <Button\n          variant=\"primary\"\n          loading={isSubmitting}\n          type=\"submit\"\n          disabled={passwordError.policy === 'notLoaded' || passwordError.passwordInvalid}\n        >\n          {t({ id: 'button.continue', message: 'Continue' })}\n        </Button>\n      </Column>\n    </Column>\n  );\n};\n","import { Trans } from '@lingui/react';\nimport { useLingui } from '@lingui/react/macro';\nimport { StytchEventType } from '@stytch/core/public';\nimport React from 'react';\n\nimport EmailActionLayout from '../../components/molecules/EmailActionLayout';\nimport { useConfig, useEventCallback, useGlobalReducer } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport { usePasswordInput } from '../usePasswordInput';\n\nexport const PasswordSetNew = () => {\n  const [, dispatch] = useGlobalReducer();\n  const onEvent = useEventCallback();\n  const config = useConfig();\n  const { t } = useLingui();\n\n  const { stytch, onError, email, organization, setIsSubmitting } = usePasswordInput();\n\n  const resendResetPassword = () => {\n    if (!organization) {\n      return stytch.passwords.discovery\n        .resetByEmailStart({\n          email_address: email,\n          discovery_redirect_url: config.passwordOptions?.discoveryRedirectURL,\n          reset_password_redirect_url: config.passwordOptions?.resetPasswordRedirectURL,\n          reset_password_expiration_minutes: config.passwordOptions?.resetPasswordExpirationMinutes,\n          reset_password_template_id: config.passwordOptions?.resetPasswordTemplateId,\n          verify_email_template_id: config.passwordOptions?.verifyEmailTemplateId,\n          locale: config.passwordOptions?.locale,\n        })\n        .then((data) => {\n          setIsSubmitting(false);\n          onEvent({ type: StytchEventType.B2BPasswordDiscoveryResetStart, data });\n        });\n    } else {\n      return stytch.passwords\n        .resetByEmailStart({\n          email_address: email,\n          organization_id: organization.organization_id,\n          login_redirect_url: config.passwordOptions?.loginRedirectURL,\n          reset_password_redirect_url: config.passwordOptions?.resetPasswordRedirectURL,\n          reset_password_expiration_minutes: config.passwordOptions?.resetPasswordExpirationMinutes,\n          reset_password_template_id: config.passwordOptions?.resetPasswordTemplateId,\n          verify_email_template_id: config.passwordOptions?.verifyEmailTemplateId,\n          locale: config.passwordOptions?.locale,\n        })\n        .then((data) => {\n          setIsSubmitting(false);\n          onEvent({ type: StytchEventType.B2BPasswordResetByEmailStart, data });\n        })\n        .catch((e: Error) => {\n          onError(e);\n          throw e;\n        });\n    }\n  };\n\n  return (\n    <EmailActionLayout\n      header={t({ id: 'password.reset.emailSent.title', message: 'Check your email' })}\n      description={\n        <Trans\n          id=\"password.reset.emailSent.content\"\n          message=\"A login link was sent to you at <bold>{email}</bold>.\"\n          components={{ bold: <b /> }}\n          values={{ email }}\n        />\n      }\n      resend={resendResetPassword}\n      goBack={() => dispatch({ type: 'transition', screen: AppScreens.Main })}\n    />\n  );\n};\n","export const assertUnreachable: (_: never) => never = () => {\n  throw new Error('Assertion failure');\n};\n","import { B2BOAuthProviders, SSOActiveConnection } from '@stytch/core/public';\n\nimport { OauthProviderParams } from '../hooks/useEffectiveAuthConfig';\n\n// This file contains a combined type to identify OAuth providers and SSO connections,\n// used to help with rendering these buttons and storing the last used method.\n// Extracting the logic for generating the key helps make it more consistent\n\nexport type LastUsedMethod = B2BOAuthProviders | `sso:${string}`;\n\n/* eslint-disable lingui/no-unlocalized-strings */\n\nexport function getSsoMethodKey(method: SSOActiveConnection): LastUsedMethod {\n  return `sso:${method.connection_id}`;\n}\n\nexport function extractConnectionId(method: string | null): string | undefined {\n  return method?.startsWith('sso:') ? method.slice(4) : undefined;\n}\n\nexport type AuthButton =\n  | { type: 'oauth'; provider: OauthProviderParams }\n  | { type: 'sso'; connection: SSOActiveConnection }\n  | { type: 'sso-discovery' };\n\nexport function getButtonKey(button: AuthButton) {\n  if (button.type === 'oauth') {\n    return button.provider.type;\n  } else if (button.type === 'sso') {\n    return getSsoMethodKey(button.connection);\n  } else {\n    return 'sso-discovery';\n  }\n}\n","import { useLingui } from '@lingui/react/macro';\nimport { arrayUtils } from '@stytch/core';\nimport { AuthFlowType, B2BOAuthProviders } from '@stytch/core/public';\nimport React from 'react';\n\nimport { assertUnreachable } from '../../../utils/assertUnreachable';\nimport Button from '../../components/atoms/Button';\nimport ButtonColumn from '../../components/molecules/ButtonColumn';\nimport LastUsed from '../../components/molecules/LastUsed';\nimport { getButtonId, usePresentation } from '../../components/PresentationConfig';\nimport { useConfig, useGlobalReducer } from '../GlobalContextProvider';\nimport { OauthProviderParams, useEffectiveAuthConfig } from '../hooks/useEffectiveAuthConfig';\nimport { useLastUsedAuthMethod } from '../hooks/useLastUsedAuthMethod';\nimport { AppScreens, ButtonComponent, MainScreenComponent } from '../types/AppScreens';\nimport { AuthButton as AuthButtonType, getButtonKey, getSsoMethodKey } from '../types/authMethodKeys';\nimport { useProductComponents } from '../utils';\n\n// OAuth helper functions\nexport const getCustomScopesForProvider = (\n  oauthProvider: {\n    type: B2BOAuthProviders;\n    one_tap: boolean;\n    customScopes: string[];\n    providerParams: Record<string, string>;\n    cancel_on_tap_outside?: boolean;\n  },\n  oauthOptionsCustomScopes: string[] | undefined,\n) => {\n  let currentCustomScopes = oauthProvider.customScopes;\n  if (Object.keys(currentCustomScopes).length == 0) {\n    currentCustomScopes = oauthOptionsCustomScopes as string[];\n  }\n  return currentCustomScopes;\n};\n\nexport const getProviderParamsForProvider = (\n  oauthProvider: {\n    type: B2BOAuthProviders;\n    one_tap: boolean;\n    customScopes: string[];\n    providerParams: Record<string, string>;\n    cancel_on_tap_outside?: boolean;\n  },\n  oauthOptionsProviderParams: Record<string, string> | undefined,\n  email: string | undefined,\n) => {\n  let currentProviderParams = oauthProvider.providerParams;\n  if (Object.keys(currentProviderParams).length == 0) {\n    currentProviderParams = oauthOptionsProviderParams ?? {};\n  }\n\n  if (\n    email &&\n    (oauthProvider.type === B2BOAuthProviders.Google || oauthProvider.type === B2BOAuthProviders.Microsoft) &&\n    !('login_hint' in currentProviderParams)\n  ) {\n    currentProviderParams = {\n      ...currentProviderParams,\n      login_hint: email,\n    };\n  }\n\n  return currentProviderParams;\n};\n\nexport const SsoAndOAuthButtons = ({ buttons }: { buttons: ButtonComponent[] }) => {\n  const { t } = useLingui();\n  const [state, dispatch] = useGlobalReducer();\n  const { oauthProviderSettings = [] } = useEffectiveAuthConfig();\n  const presentation = usePresentation();\n\n  const [lastUsedMethod, setLastUsedMethod] = useLastUsedAuthMethod();\n\n  const config = useConfig();\n  const { loginRedirectURL, signupRedirectURL, discoveryRedirectURL, customScopes, providerParams } =\n    config.oauthOptions ?? {};\n\n  const { B2BGoogleOneTap, OAuthB2BButton, SSOButton } = useProductComponents(config, 'ssoAndOAuthButtons')!;\n\n  // Determine which buttons need to be displayed\n  const isDiscoveryFlow = state.flowState.type === AuthFlowType.Discovery;\n  const authButtons = buttons.flatMap<AuthButtonType>((button) => {\n    if (button === MainScreenComponent.OAuthButtons) {\n      return oauthProviderSettings.map((provider) => ({ type: 'oauth', provider }));\n    } else if (button === MainScreenComponent.SSOButtons) {\n      return isDiscoveryFlow\n        ? { type: 'sso-discovery' }\n        : (state.flowState.organization?.sso_active_connections?.map((connection) => ({ type: 'sso', connection })) ??\n            []);\n    } else {\n      assertUnreachable(button);\n    }\n  });\n\n  if (authButtons.length === 0) {\n    return null;\n  }\n\n  // Reorder providers based on last used\n  const [reorderedButtons, foundLastUsedOAuth] = arrayUtils.moveToFront(\n    authButtons,\n    (button) => getButtonKey(button) === lastUsedMethod,\n  );\n\n  // Helper function to create OAuth button component\n  const createOAuthButton = (oauthProvider: OauthProviderParams) => {\n    const providerProps = {\n      customScopes: getCustomScopesForProvider(oauthProvider, customScopes),\n      providerParams: getProviderParamsForProvider(oauthProvider, providerParams, state.primary.email),\n    };\n\n    if (oauthProvider.one_tap) {\n      return (\n        <B2BGoogleOneTap\n          key={oauthProvider.type}\n          {...providerProps}\n          cancelOnTapOutside={oauthProvider.cancel_on_tap_outside}\n        />\n      );\n    }\n\n    return (\n      <OAuthB2BButton\n        key={oauthProvider.type}\n        providerType={oauthProvider.type}\n        loginRedirectUrl={loginRedirectURL}\n        signupRedirectUrl={signupRedirectURL}\n        discoveryRedirectUrl={discoveryRedirectURL}\n        onSuccess={() => setLastUsedMethod(oauthProvider.type)}\n        {...providerProps}\n      />\n    );\n  };\n\n  return (\n    <ButtonColumn>\n      {reorderedButtons.map((button, index) => {\n        const buttonComponent = (() => {\n          switch (button.type) {\n            case 'oauth':\n              return createOAuthButton(button.provider);\n\n            case 'sso':\n              return (\n                <SSOButton\n                  key={button.connection.display_name}\n                  connection={button.connection}\n                  onStart={() => setLastUsedMethod(getSsoMethodKey(button.connection))}\n                />\n              );\n\n            case 'sso-discovery':\n              return (\n                <Button\n                  key=\"sso-discovery\"\n                  variant=\"outline\"\n                  id={getButtonId('sso-discovery', presentation.options)}\n                  onClick={() => {\n                    dispatch({ type: 'transition', screen: AppScreens.SSODiscoveryEmail, history: 'push' });\n                  }}\n                >\n                  {t({ id: 'provider.continueWithSSO', message: 'Use single sign-on' })}\n                </Button>\n              );\n\n            default:\n              assertUnreachable(button);\n          }\n        })();\n\n        return foundLastUsedOAuth && index === 0 ? (\n          <LastUsed key={getButtonKey(button)}>{buttonComponent}</LastUsed>\n        ) : (\n          buttonComponent\n        );\n      })}\n    </ButtonColumn>\n  );\n};\n","import { useStytch } from '../GlobalContextProvider';\nimport { useMutate } from '../utils';\n\nexport const useSsoDiscoveryConnection = () => {\n  const stytch = useStytch();\n\n  return useMutate(\n    'stytch.sso.discoverConnections',\n    async (_key, { arg: { emailAddress } }: { arg: { emailAddress: string } }) =>\n      await stytch.sso.discoverConnections(emailAddress),\n    { throwOnError: true },\n  );\n};\n","import { useLingui } from '@lingui/react/macro';\nimport React, { useState } from 'react';\n\nimport { extractErrorMessage } from '../../../utils/extractErrorMessage';\nimport Button from '../../components/atoms/Button';\nimport Column from '../../components/atoms/Column';\nimport Typography from '../../components/atoms/Typography';\nimport EmailInput from '../../components/molecules/EmailInput';\nimport { useConfig, useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport { useSsoDiscoveryConnection } from '../hooks/useSsoDiscoveryConnection';\n\nexport const SSODiscoveryEmail = () => {\n  const [, dispatch] = useGlobalReducer();\n  const [email, setEmail] = useState('');\n  const { t } = useLingui();\n\n  const [error, setError] = useState<string>();\n  const [isLoading, setIsLoading] = useState(false);\n\n  const { trigger } = useSsoDiscoveryConnection();\n\n  const stytch = useStytch();\n  const { ssoOptions } = useConfig();\n\n  const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n    e.preventDefault();\n    setError(undefined);\n\n    const tryGetConnections = async () => {\n      try {\n        const response = await trigger({ emailAddress: email });\n\n        if (!response) {\n          return [];\n        }\n\n        return response.connections;\n      } catch (e) {\n        setError(\n          extractErrorMessage(\n            e,\n            t({\n              id: 'ssoDiscovery.email.error.unknown',\n              message: 'Something went wrong. Try again later or contact your admin for help.',\n            }),\n          ),\n        );\n      }\n    };\n\n    try {\n      setIsLoading(true);\n\n      const connections = await tryGetConnections();\n\n      if (connections?.length === 1) {\n        const [connection] = connections;\n        await stytch.sso.start({\n          connection_id: connection.connection_id,\n          login_redirect_url: ssoOptions?.loginRedirectURL,\n          signup_redirect_url: ssoOptions?.signupRedirectURL,\n        });\n\n        // We intentionally leave `isLoading` set to `true` since we're expecting\n        // the user to be redirected\n        return;\n      }\n\n      setIsLoading(false);\n\n      if (connections) {\n        dispatch({ type: 'set_sso_discovery_state', connections });\n      }\n    } catch (e) {\n      setIsLoading(false);\n      throw e;\n    }\n  };\n\n  const handleBack = () => {\n    dispatch({ type: 'navigate_back' });\n  };\n\n  return (\n    <Column gap={6}>\n      <Typography variant=\"header\">\n        {t({ id: 'ssoDiscovery.email.title', message: 'Enter your email to continue' })}\n      </Typography>\n\n      <Column as=\"form\" onSubmit={handleSubmit} gap={2}>\n        <EmailInput email={email} setEmail={setEmail} hideLabel error={error} />\n\n        <Button variant=\"primary\" loading={isLoading} type=\"submit\">\n          {t({ id: 'button.continue', message: 'Continue' })}\n        </Button>\n\n        <Button variant=\"ghost\" onClick={handleBack}>\n          {t({ id: 'button.goBack', message: 'Go back' })}\n        </Button>\n      </Column>\n    </Column>\n  );\n};\n","import { useLingui } from '@lingui/react/macro';\nimport React, { useState } from 'react';\n\nimport Button from '../../components/atoms/Button';\nimport Column from '../../components/atoms/Column';\nimport Typography from '../../components/atoms/Typography';\nimport Input from '../../components/molecules/Input';\nimport { useConfig, useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport { useMutate } from '../utils';\n\nexport const SSODiscoveryFallback = () => {\n  const [, dispatch] = useGlobalReducer();\n  const [slug, setSlug] = useState('');\n  const [error, setError] = useState<string>();\n  const [isSubmitting, setIsSubmitting] = useState(false);\n  const stytchClient = useStytch();\n  const { ssoOptions } = useConfig();\n  const { t } = useLingui();\n\n  const { trigger: lookupOrganization } = useMutate(\n    'stytch.organization.getBySlug',\n    async (_: string, { arg: { slug } }: { arg: { slug: string } }) =>\n      stytchClient.organization.getBySlug({ organization_slug: slug }),\n    {\n      onError: () => {\n        setError(t({ id: 'ssoDiscovery.fallback.error.unknown', message: 'An error occurred. Please try again.' }));\n        setIsSubmitting(false);\n      },\n    },\n  );\n\n  const handleSubmit = async (e: React.FormEvent<HTMLFormElement>) => {\n    e.preventDefault();\n    setError(undefined);\n    setIsSubmitting(true);\n\n    const result = await lookupOrganization({ slug });\n    if (result) {\n      const { organization } = result;\n      if (organization === null) {\n        setError(\n          t({ id: 'ssoDiscovery.fallback.error.orgNotFound', message: 'Organization not found. Please try again.' }),\n        );\n        setIsSubmitting(false);\n      } else if (organization.sso_active_connections.length === 1) {\n        const [connection] = organization.sso_active_connections;\n        await stytchClient.sso.start({\n          connection_id: connection.connection_id,\n          login_redirect_url: ssoOptions?.loginRedirectURL,\n          signup_redirect_url: ssoOptions?.signupRedirectURL,\n        });\n      } else {\n        dispatch({\n          type: 'set_organization',\n          organization,\n        });\n        dispatch({ type: 'transition', screen: AppScreens.Main });\n      }\n    }\n  };\n\n  const handleTryAnotherMethod = () => {\n    dispatch({ type: 'transition', screen: AppScreens.Main });\n  };\n\n  const handleBack = () => {\n    dispatch({ type: 'navigate_back' });\n  };\n\n  return (\n    <Column gap={6}>\n      <Typography variant=\"header\">\n        {t({ id: 'ssoDiscovery.fallback.title', message: \"Sorry, we couldn't find any connections\" })}\n      </Typography>\n      <Typography>\n        {t({\n          id: 'ssoDiscovery.fallback.content',\n          message:\n            \"Please input the Organization's unique slug to continue. If you don't know the unique slug, log in through another method to view all of your available Organizations.\",\n        })}\n      </Typography>\n\n      <Column as=\"form\" onSubmit={handleSubmit} gap={2}>\n        <Input\n          id=\"organization-slug\"\n          hideLabel\n          label={t({ id: 'formField.orgSlug.label', message: 'Organization slug' })}\n          value={slug}\n          onChange={(e) => setSlug(e.target.value)}\n          placeholder={t({ id: 'formField.orgSlug.label', message: 'Organization slug' })}\n          error={error}\n        />\n\n        <Button variant=\"primary\" loading={isSubmitting} type=\"submit\" disabled={!slug || isSubmitting}>\n          {t({ id: 'button.continue', message: 'Continue' })}\n        </Button>\n\n        <Button variant=\"outline\" onClick={handleTryAnotherMethod}>\n          {t({ id: 'ssoDiscovery.fallback.button.reset', message: 'Try another method' })}\n        </Button>\n\n        <Button variant=\"ghost\" onClick={handleBack}>\n          {t({ id: 'button.goBack', message: 'Go back' })}\n        </Button>\n      </Column>\n    </Column>\n  );\n};\n","import { useLingui } from '@lingui/react/macro';\nimport { arrayUtils } from '@stytch/core';\nimport { SSOActiveConnection } from '@stytch/core/public';\nimport * as React from 'react';\n\nimport Button from '../../components/atoms/Button';\nimport Column from '../../components/atoms/Column';\nimport Typography from '../../components/atoms/Typography';\nimport LastUsed from '../../components/molecules/LastUsed';\nimport { SSOButton } from '../components/SSOButton';\nimport { useGlobalReducer } from '../GlobalContextProvider';\nimport { useLastUsedAuthMethod } from '../hooks/useLastUsedAuthMethod';\nimport { extractConnectionId, getSsoMethodKey } from '../types/authMethodKeys';\n\nconst SSOButtons = ({ availableConnections }: { availableConnections: SSOActiveConnection[] }) => {\n  const [lastUsedMethod, setLastUsedMethod] = useLastUsedAuthMethod();\n  const lastUsedSso = extractConnectionId(lastUsedMethod);\n\n  const [connections, foundLastUsed] = arrayUtils.moveToFront(\n    availableConnections,\n    (connection) => connection.connection_id === lastUsedSso,\n  );\n\n  return (\n    <Column gap={2}>\n      {connections.map((provider, index) => {\n        const button = (\n          <SSOButton\n            key={provider.display_name}\n            connection={provider}\n            onStart={(connection) => setLastUsedMethod(getSsoMethodKey(connection))}\n          />\n        );\n\n        return foundLastUsed && index === 0 ? <LastUsed key={provider.display_name}>{button}</LastUsed> : button;\n      })}\n    </Column>\n  );\n};\n\nexport const SSODiscoveryMenu = () => {\n  const [state, dispatch] = useGlobalReducer();\n  const { t } = useLingui();\n\n  const handleBack = () => {\n    dispatch({ type: 'navigate_back' });\n  };\n\n  return (\n    <Column gap={6}>\n      <Typography variant=\"header\">\n        {t({ id: 'ssoDiscovery.title', message: 'Select a connection to continue' })}\n      </Typography>\n\n      <Column gap={4}>\n        <SSOButtons availableConnections={state.formState.ssoDiscoveryState.connections} />\n\n        <Button variant=\"ghost\" onClick={handleBack}>\n          {t({ id: 'button.goBack', message: 'Go back' })}\n        </Button>\n      </Column>\n    </Column>\n  );\n};\n","'use client';\n\nimport React from 'react';\n\nimport { B2BGoogleOneTap } from './components/B2BOneTap';\nimport { emailIcons, oauthIcons, ssoIcons } from './components/Icons';\nimport { OAuthB2BButton } from './components/OAuthB2BButton';\nimport { SSOButton } from './components/SSOButton';\nimport { EmailConfirmation } from './screens/EmailConfirmation';\nimport { EmailDiscoveryForm, EmailForm } from './screens/EmailForm';\nimport { EmailMethodSelectionScreen } from './screens/EmailMethodSelectionScreen';\nimport { EmailOTPEntryScreen } from './screens/EmailOTPEntryScreen';\nimport { PasswordsAuthenticate } from './screens/PasswordAuthenticate';\nimport { PasswordsEmailForm } from './screens/PasswordEmailForm';\nimport { PasswordsForgotForm } from './screens/PasswordForgotForm';\nimport { PasswordResetConfirmation } from './screens/PasswordResetConfirmation';\nimport { PasswordResetForm } from './screens/PasswordResetForm';\nimport { PasswordSetNew } from './screens/PasswordSetNew';\nimport { SsoAndOAuthButtons } from './screens/SsoAndOAuthButtons';\nimport { SSODiscoveryEmail } from './screens/SSODiscoveryEmail';\nimport { SSODiscoveryFallback } from './screens/SSODiscoveryFallback';\nimport { SSODiscoveryMenu } from './screens/SSODiscoveryMenu';\nimport { StytchB2BProduct } from './StytchB2BProduct';\nimport { AppScreens, MainScreenComponent } from './types/AppScreens';\n\nconst EmailFormWithoutPassword = () => <EmailForm showPasswordButton={false} />;\nconst EmailFormWithPassword = () => <EmailForm showPasswordButton />;\nconst EmailDiscoveryFormWithoutPassword = () => <EmailDiscoveryForm showPasswordButton={false} />;\nconst EmailDiscoveryFormWithPassword = () => <EmailDiscoveryForm showPasswordButton />;\n\nexport const emailMagicLinks: StytchB2BProduct = {\n  id: 'emailMagicLinks',\n  screens: {\n    [AppScreens.EmailConfirmation]: EmailConfirmation,\n    [AppScreens.EmailMethodSelection]: EmailMethodSelectionScreen,\n  },\n  mainScreen: {\n    [MainScreenComponent.EmailForm]: EmailFormWithoutPassword,\n    [MainScreenComponent.EmailDiscoveryForm]: EmailDiscoveryFormWithoutPassword,\n    [MainScreenComponent.PasswordEmailCombined]: EmailFormWithPassword,\n    [MainScreenComponent.PasswordEmailCombinedDiscovery]: EmailDiscoveryFormWithPassword,\n  },\n  icons: emailIcons,\n};\n\nexport const emailOtp: StytchB2BProduct = {\n  id: 'emailOtp',\n  screens: {\n    [AppScreens.EmailOTPEntry]: EmailOTPEntryScreen,\n    [AppScreens.EmailMethodSelection]: EmailMethodSelectionScreen,\n    [AppScreens.EmailConfirmation]: EmailConfirmation,\n  },\n  mainScreen: {\n    [MainScreenComponent.EmailForm]: EmailFormWithoutPassword,\n    [MainScreenComponent.EmailDiscoveryForm]: EmailDiscoveryFormWithoutPassword,\n    [MainScreenComponent.PasswordEmailCombined]: EmailFormWithPassword,\n    [MainScreenComponent.PasswordEmailCombinedDiscovery]: EmailDiscoveryFormWithPassword,\n  },\n  icons: emailIcons,\n};\n\nexport const sso: StytchB2BProduct = {\n  id: 'sso',\n  screens: {\n    [AppScreens.SSODiscoveryEmail]: SSODiscoveryEmail,\n    [AppScreens.SSODiscoveryMenu]: SSODiscoveryMenu,\n    [AppScreens.SSODiscoveryFallback]: SSODiscoveryFallback,\n  },\n  ssoAndOAuthButtons: {\n    SsoAndOAuthButtons,\n    SSOButton,\n  },\n  icons: ssoIcons,\n};\n\nexport const passwords: StytchB2BProduct = {\n  id: 'passwords',\n  screens: {\n    [AppScreens.PasswordEmailForm]: PasswordsEmailForm,\n    [AppScreens.PasswordAuthenticate]: PasswordsAuthenticate,\n    [AppScreens.PasswordForgotForm]: PasswordsForgotForm,\n    [AppScreens.PasswordSetNewConfirmation]: PasswordSetNew,\n    [AppScreens.PasswordResetForm]: PasswordResetForm,\n    [AppScreens.PasswordResetVerifyConfirmation]: PasswordResetConfirmation,\n  },\n  mainScreen: {\n    [MainScreenComponent.PasswordsEmailForm]: PasswordsEmailForm,\n    [MainScreenComponent.PasswordEmailCombined]: EmailFormWithPassword,\n    [MainScreenComponent.PasswordEmailCombinedDiscovery]: EmailDiscoveryFormWithPassword,\n  },\n  icons: emailIcons,\n};\n\nexport const oauth: StytchB2BProduct = {\n  id: 'oauth',\n  screens: {},\n  ssoAndOAuthButtons: {\n    SsoAndOAuthButtons,\n    B2BGoogleOneTap,\n    OAuthB2BButton,\n  },\n  icons: oauthIcons,\n};\n","import { StytchEventType } from '@stytch/core/public';\nimport * as React from 'react';\n\nimport { Confirmation } from '../../components/molecules/Confirmation';\nimport { useMountEffect } from '../../hooks/useMountEffect';\nimport { useEventCallback } from '../GlobalContextProvider';\n\nexport const ConfirmationScreen = () => {\n  const onEvent = useEventCallback();\n  useMountEffect(() => {\n    onEvent({ type: StytchEventType.AuthenticateFlowComplete, data: {} });\n  });\n\n  return <Confirmation />;\n};\n","import { Organization } from '@stytch/core/public';\nimport classNames from 'classnames';\nimport React from 'react';\n\nimport { buttonClassNames } from '../../components/atoms/Button';\nimport VerticalTransition, { hoverTriggerClass } from '../../components/atoms/VerticalTransition';\nimport { Badge } from '../../components/molecules/Badge';\nimport styles from './OrganizationRow.module.css';\n\nexport type OrganizationRowProps = {\n  organization: Organization;\n  action?: string;\n  onClick: () => void;\n};\n\nconst Arrow = () => (\n  <svg\n    className={styles.arrow}\n    width=\"20\"\n    height=\"20\"\n    viewBox=\"0 0 20 20\"\n    fill=\"none\"\n    xmlns=\"http://www.w3.org/2000/svg\"\n  >\n    <path\n      d=\"M14.707 10L10.3535 14.3545L9.64648 13.6475L12.793 10.5H6V9.5H12.793L9.64648 6.35352L10.3535 5.64648L14.707 10Z\"\n      fill=\"currentColor\"\n    />\n  </svg>\n);\n\nconst OrganizationRow = ({ organization, action, onClick }: OrganizationRowProps) => {\n  const { organization_name, organization_logo_url } = organization;\n\n  const logo = organization_logo_url ? (\n    <img className={styles.logo} src={organization_logo_url} alt=\"\" />\n  ) : (\n    <div className={styles.logo} role=\"presentation\">\n      {\n        // The Array.from() accounts for two byte Unicode characters\n        Array.from(organization_name)[0]\n      }\n    </div>\n  );\n\n  return (\n    <button\n      className={classNames(\n        styles.organizationRow,\n        hoverTriggerClass,\n        buttonClassNames({\n          variant: 'outline',\n          // Not a block even though it looks like it to avoid the inheriting the centering style\n        }),\n      )}\n      onClick={onClick}\n    >\n      <div className={styles.left}>\n        {logo}\n        <div className={styles.nameText}>{organization_name}</div>\n      </div>\n\n      <VerticalTransition\n        trigger=\"hover\"\n        rootClassName={styles.right}\n        className={styles.rightContent}\n        primary={action && <Badge>{action}</Badge>}\n        secondary={<Arrow />}\n      />\n    </button>\n  );\n};\n\nexport default OrganizationRow;\n","import { useLingui } from '@lingui/react/macro';\nimport {\n  B2BDiscoveryIntermediateSessionsExchangeResponse,\n  B2BDiscoveryOrganizationsCreateResponse,\n  DirectLoginForSingleMembershipConfig,\n  DiscoveredOrganization,\n  StytchAPIError,\n  StytchProjectConfigurationInput,\n} from '@stytch/core/public';\nimport React, { useCallback, useEffect } from 'react';\n\nimport Button from '../../components/atoms/Button';\nimport Column from '../../components/atoms/Column';\nimport Typography from '../../components/atoms/Typography';\nimport ButtonColumn from '../../components/molecules/ButtonColumn';\nimport { LoadingScreen, LoggingInScreen } from '../../components/molecules/Loading';\nimport OrganizationRow from '../components/OrganizationRow';\nimport { useConfig, useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport { ErrorType } from '../types/ErrorType';\nimport { onAuthenticateSuccess, StytchMutationKey, useBootstrap, useMutate } from '../utils';\n\nconst isJoinViaJitType = (type: DiscoveredOrganization['membership']['type']) =>\n  type === 'eligible_to_join_by_email_domain' || type === 'eligible_to_join_by_oauth_tenant';\n\nconst DiscoverNoOrganizations = () => {\n  const [state, dispatch] = useGlobalReducer();\n  const stytchClient = useStytch();\n  const config = useConfig();\n  const { createOrganizationEnabled } = useBootstrap();\n  const { t } = useLingui();\n  const goBack = () => dispatch({ type: 'transition', screen: AppScreens.Main });\n\n  const { trigger: stytchCreateOrganization, isMutating: isCreateLoading } = useMutate<\n    B2BDiscoveryOrganizationsCreateResponse<StytchProjectConfigurationInput>,\n    StytchAPIError,\n    StytchMutationKey\n  >(\n    'stytch.discovery.organizations.create',\n    () =>\n      stytchClient.discovery.organizations.create({\n        session_duration_minutes: config.sessionOptions.sessionDurationMinutes,\n      }),\n    {\n      onSuccess: (data: B2BDiscoveryOrganizationsCreateResponse<StytchProjectConfigurationInput>) => {\n        onAuthenticateSuccess(data, dispatch, config);\n      },\n      onError: (error) => {\n        dispatch({\n          type: 'set_error_message_and_transition',\n          errorType:\n            error.error_type === 'action_not_allowed_email_domain_is_claimed'\n              ? ErrorType.OrganizationDiscoveryClaimedDomain\n              : ErrorType.Default,\n          canGoBack: true,\n        });\n      },\n    },\n  );\n\n  const shouldAutomaticallyCreateOrganization =\n    createOrganizationEnabled && config.directCreateOrganizationForNoMembership;\n\n  useEffect(() => {\n    if (shouldAutomaticallyCreateOrganization) {\n      stytchCreateOrganization();\n    }\n  }, [shouldAutomaticallyCreateOrganization, stytchCreateOrganization]);\n\n  if (shouldAutomaticallyCreateOrganization || isCreateLoading) {\n    return <LoadingScreen />;\n  }\n\n  const email = state.formState.discoveryState.email;\n\n  if (createOrganizationEnabled && !config.disableCreateOrganization) {\n    return (\n      <Column gap={6}>\n        <Typography variant=\"header\">\n          {t({ id: 'organizationDiscovery.noOrgs.create.title', message: 'Create an organization to get started' })}\n        </Typography>\n\n        <Typography variant=\"body\">\n          {t({\n            id: 'organizationDiscovery.noOrgs.create.content',\n            message: `${email} does not have an account. Think this is a mistake? Try a different email address, or contact your admin.`,\n          })}\n        </Typography>\n\n        <ButtonColumn>\n          <Button variant=\"primary\" onClick={() => stytchCreateOrganization()}>\n            {t({ id: 'button.createAnOrganization', message: 'Create an organization' })}\n          </Button>\n          <Button variant=\"ghost\" onClick={goBack}>\n            {t({ id: 'button.goBack', message: 'Go back' })}\n          </Button>\n        </ButtonColumn>\n      </Column>\n    );\n  }\n\n  return (\n    <Column gap={6}>\n      <Typography variant=\"header\">\n        {t({\n          id: 'organizationDiscovery.noOrgs.title',\n          message: `${email} does not belong to any organizations.`,\n        })}\n      </Typography>\n      <Typography variant=\"body\">\n        {t({\n          id: 'organizationDiscovery.noOrgs.content',\n          message: 'Make sure your email address is correct. Otherwise, you might need to be invited by your admin.',\n        })}\n      </Typography>\n      <Button variant=\"outline\" onClick={goBack}>\n        {t({ id: 'button.tryDifferentEmailAddress', message: 'Try a different email address' })}\n      </Button>\n    </Column>\n  );\n};\n\nconst shouldAllowDirectLoginToOrganization = (\n  organizations: DiscoveredOrganization[],\n  config?: DirectLoginForSingleMembershipConfig,\n): DiscoveredOrganization | null => {\n  // If direct login is not enabled, return false\n  if (!config?.status) {\n    return null;\n  }\n\n  // Count active memberships\n  const activeOrganizations = organizations.filter((org) => org.membership.type === 'active_member');\n\n  // Check for pending invites or JIT provisioning, depending on config\n  const hasBlockingConditions = organizations.some(\n    (org) =>\n      ((org.membership.type === 'pending_member' || org.membership.type === 'invited_member') &&\n        !config.ignoreInvites) ||\n      (isJoinViaJitType(org.membership.type) && !config.ignoreJitProvisioning),\n  );\n\n  // Allow direct login if there is exactly one active membership and no blocking conditions\n  return activeOrganizations.length === 1 && !hasBlockingConditions ? activeOrganizations[0] : null;\n};\n\nexport const Discovery = () => {\n  const [state, dispatch] = useGlobalReducer();\n  const stytchClient = useStytch();\n  const config = useConfig();\n  const { t } = useLingui();\n  const shouldDirectLoginConfigEnabled = !!config.directLoginForSingleMembership?.status;\n  const { createOrganizationEnabled } = useBootstrap();\n\n  useEffect(() => {\n    if (isExchangeInProgress) {\n      // If there is already an exchange in progress, don't do anything\n      return;\n    }\n\n    const directLoginOrganization = shouldAllowDirectLoginToOrganization(\n      state.formState.discoveryState.discoveredOrganizations,\n      config.directLoginForSingleMembership,\n    );\n\n    if (shouldDirectLoginConfigEnabled && directLoginOrganization !== null) {\n      handleDiscoveryOrganizationStart(directLoginOrganization);\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps -- SDK-1354\n  }, [\n    shouldDirectLoginConfigEnabled,\n    state.formState.discoveryState.discoveredOrganizations,\n    config.directLoginForSingleMembership,\n  ]);\n\n  const handleDiscoveryOrganizationStart = (discoveredOrganization: DiscoveredOrganization) => {\n    const organization = discoveredOrganization.organization;\n\n    if (discoveredOrganization.primary_required) {\n      const allowedAuthMethods = discoveredOrganization.primary_required.allowed_auth_methods;\n      if (\n        allowedAuthMethods &&\n        allowedAuthMethods.length === 1 &&\n        allowedAuthMethods[0] === 'sso' &&\n        organization.sso_default_connection_id\n      ) {\n        startSso(organization.sso_default_connection_id);\n      } else {\n        dispatch({\n          type: 'select_discovered_organization',\n          discoveredOrganization,\n        });\n      }\n    } else {\n      stytchDiscoveryExchange({ organizationId: organization.organization_id });\n    }\n  };\n\n  const startSso = useCallback(\n    (connectionId: string) => {\n      stytchClient.sso.start({\n        connection_id: connectionId,\n        login_redirect_url: config.ssoOptions?.loginRedirectURL,\n        signup_redirect_url: config.ssoOptions?.signupRedirectURL,\n      });\n    },\n    [stytchClient, config.ssoOptions],\n  );\n\n  const { trigger: stytchDiscoveryExchange, isMutating: isExchangeInProgress } = useMutate<\n    B2BDiscoveryIntermediateSessionsExchangeResponse<StytchProjectConfigurationInput>,\n    StytchAPIError,\n    StytchMutationKey,\n    { organizationId: string }\n  >(\n    `stytch.discovery.intermediateSessions.exchange`,\n    (_: string, { arg: { organizationId } }: { arg: { organizationId: string } }) =>\n      stytchClient.discovery.intermediateSessions.exchange({\n        organization_id: organizationId,\n        session_duration_minutes: config.sessionOptions.sessionDurationMinutes,\n      }),\n    {\n      onSuccess: (data: B2BDiscoveryIntermediateSessionsExchangeResponse<StytchProjectConfigurationInput>) => {\n        onAuthenticateSuccess(data, dispatch, config);\n      },\n      onError: (error) => {\n        dispatch({\n          type: 'set_error_message_and_transition',\n          errorType:\n            error.error_type === 'action_not_allowed_email_domain_is_claimed'\n              ? ErrorType.OrganizationDiscoveryClaimedDomain\n              : ErrorType.Default,\n          canGoBack: true,\n        });\n      },\n    },\n  );\n\n  const { trigger: stytchCreateOrganization, isMutating: isCreateLoading } = useMutate<\n    B2BDiscoveryOrganizationsCreateResponse<StytchProjectConfigurationInput>,\n    StytchAPIError,\n    StytchMutationKey\n  >(\n    'stytch.discovery.organizations.create',\n    () =>\n      stytchClient.discovery.organizations.create({\n        session_duration_minutes: config.sessionOptions.sessionDurationMinutes,\n      }),\n    {\n      onSuccess: (data: B2BDiscoveryOrganizationsCreateResponse<StytchProjectConfigurationInput>) => {\n        onAuthenticateSuccess(data, dispatch, config);\n      },\n      onError: (error) => {\n        dispatch({\n          type: 'set_error_message_and_transition',\n          errorType:\n            error.error_type === 'action_not_allowed_email_domain_is_claimed'\n              ? ErrorType.OrganizationDiscoveryClaimedDomain\n              : ErrorType.Default,\n          canGoBack: true,\n        });\n      },\n    },\n  );\n\n  if (isExchangeInProgress) {\n    return <LoggingInScreen />;\n  }\n\n  if (isCreateLoading) {\n    return <LoadingScreen />;\n  }\n\n  if (state.formState.discoveryState.discoveredOrganizations.length === 0) {\n    return <DiscoverNoOrganizations />;\n  }\n\n  const organizationButtons = state.formState.discoveryState.discoveredOrganizations.map((discoveredOrganization) => {\n    const { organization, membership } = discoveredOrganization;\n\n    let action: string | undefined;\n    if (isJoinViaJitType(membership.type) || membership.type === 'pending_member')\n      action = t({ id: 'organizationDiscovery.join', message: 'Join' });\n    else if (membership.type === 'invited_member')\n      action = t({ id: 'organizationDiscovery.acceptInvite', message: 'Accept Invite' });\n\n    return (\n      <OrganizationRow\n        key={organization.organization_id}\n        organization={organization}\n        action={action}\n        onClick={() => handleDiscoveryOrganizationStart(discoveredOrganization)}\n      ></OrganizationRow>\n    );\n  });\n\n  const createOrganizationButton =\n    createOrganizationEnabled && !config.disableCreateOrganization ? (\n      <Button variant=\"outline\" onClick={() => stytchCreateOrganization()}>\n        {t({ id: 'button.createAnOrganization', message: 'Create an organization' })}\n      </Button>\n    ) : null;\n\n  const goBackButton = (\n    <Button variant=\"ghost\" onClick={() => dispatch({ type: 'transition', screen: AppScreens.Main })}>\n      {t({ id: 'button.goBack', message: 'Go back' })}\n    </Button>\n  );\n\n  return (\n    <Column gap={6}>\n      <Typography variant=\"header\">\n        {t({ id: 'organizationDiscovery.title', message: 'Select an organization to continue' })}\n      </Typography>\n\n      {createOrganizationButton ? (\n        // Display with divider if the Create Organization Button can be shown,\n        // otherwise just show everything together\n        <ButtonColumn\n          top={organizationButtons}\n          bottom={\n            <>\n              {createOrganizationButton}\n              {goBackButton}\n            </>\n          }\n        />\n      ) : (\n        <Column gap={4}>\n          <ButtonColumn>{organizationButtons}</ButtonColumn>\n          {goBackButton}\n        </Column>\n      )}\n    </Column>\n  );\n};\n","import { AuthFlowType } from '@stytch/core/public';\n\nimport { StytchB2BProduct } from './StytchB2BProduct';\nimport { ButtonComponent, MainScreenComponent } from './types/AppScreens';\nimport { FlowState } from './types/AppState';\n\nexport const isButtonsComponent = (component: MainScreenComponent): component is ButtonComponent =>\n  component === MainScreenComponent.OAuthButtons || component === MainScreenComponent.SSOButtons;\n\n/*\n  Here we are generating the ordering and which components will be displayed.\n  We use the MainScreenComponent enum this because there is some complex logic here, and\n  we want to be able to unit test.\n\n  Rules we want to follow when generating the components:\n  1. If we're displaying both an email-based method (email magic links and/or email OTPs) and passwords,\n  we need to display them together as a single wrapped component. The index of this wrapped component is\n  equivalent to the first index of either email-based method or passwords in the config products list.\n  2. If we have both buttons and input, we want to display a divider between the last 2 elements.\n  3. Some components have both a discovery and a non-discovery version. We want to display the correct version\n  based on the flow type (found in state).\n  4. We want to display the components in the order that they are listed in the config.\n\n  This function should be considered the source of truth for which components to render\n  and what order to render them in as of 6/21/23.\n*/\nexport const generateProductComponentsOrdering = (\n  products: StytchB2BProduct[],\n  flowState: FlowState,\n): MainScreenComponent[][] => {\n  const flowStateType = flowState.type;\n  const productsSet = new Set(products.map((p) => p.id));\n  const displayEmailAndPasswordsTogether =\n    (productsSet.has('emailMagicLinks') || productsSet.has('emailOtp')) && productsSet.has('passwords');\n  const emailPasswordCombinedComponent =\n    flowStateType === AuthFlowType.Organization\n      ? MainScreenComponent.PasswordEmailCombined\n      : MainScreenComponent.PasswordEmailCombinedDiscovery;\n\n  const productComponentsSet = products.reduce((components, product) => {\n    switch (product.id) {\n      case 'emailMagicLinks':\n      case 'emailOtp':\n        if (displayEmailAndPasswordsTogether) {\n          components.add(emailPasswordCombinedComponent);\n        } else {\n          components.add(\n            flowStateType === AuthFlowType.Organization\n              ? MainScreenComponent.EmailForm\n              : MainScreenComponent.EmailDiscoveryForm,\n          );\n        }\n        break;\n      case 'oauth':\n        components.add(MainScreenComponent.OAuthButtons);\n        break;\n      case 'sso': {\n        const isSsoValid =\n          flowStateType === AuthFlowType.Discovery ||\n          (flowStateType === AuthFlowType.Organization &&\n            (flowState.organization?.sso_active_connections?.length ?? 0) > 0);\n        if (isSsoValid) {\n          components.add(MainScreenComponent.SSOButtons);\n        }\n        break;\n      }\n      case 'passwords':\n        components.add(\n          displayEmailAndPasswordsTogether ? emailPasswordCombinedComponent : MainScreenComponent.PasswordsEmailForm,\n        );\n        break;\n    }\n    return components;\n  }, new Set<MainScreenComponent>());\n\n  return Array.from(productComponentsSet).reduce<MainScreenComponent[][]>((groups, component, i, arr) => {\n    const prevComponent = i > 0 ? arr[i - 1] : undefined;\n\n    // Group consecutive components with buttons\n    const shouldJoinPreviousGroup = prevComponent && isButtonsComponent(component) && isButtonsComponent(prevComponent);\n\n    if (shouldJoinPreviousGroup) {\n      groups[groups.length - 1].push(component);\n    } else {\n      // If the previous group was a different type than this group, prepend a divider\n      const prevGroup = groups.length > 0 ? groups[groups.length - 1] : undefined;\n      if (prevGroup && isButtonsComponent(prevGroup[0]) !== isButtonsComponent(component)) {\n        groups.push([MainScreenComponent.Divider]);\n      }\n\n      groups.push([component]);\n    }\n    return groups;\n  }, []);\n};\n","import { useLingui } from '@lingui/react/macro';\nimport { AuthFlowType } from '@stytch/core/public';\nimport React from 'react';\n\nimport Column from '../../components/atoms/Column';\nimport Typography from '../../components/atoms/Typography';\nimport Divider from '../../components/molecules/Divider';\nimport { LoadingScreen } from '../../components/molecules/Loading';\nimport { usePresentation } from '../../components/PresentationConfig';\nimport { generateProductComponentsOrdering, isButtonsComponent } from '../generateProductComponentsOrdering';\nimport { useConfig, useGlobalReducer } from '../GlobalContextProvider';\nimport { useEffectiveAuthConfig } from '../hooks/useEffectiveAuthConfig';\nimport { ButtonComponent, MainScreenComponent } from '../types/AppScreens';\nimport { useProductComponents } from '../utils';\n\nfunction isButtonGroup(group: MainScreenComponent[]): group is ButtonComponent[] {\n  return group.every(isButtonsComponent);\n}\n\nexport const MainScreen = () => {\n  const { options } = usePresentation();\n  const [state] = useGlobalReducer();\n  const { t } = useLingui();\n\n  const { primaryAuthMethods, email, emailVerified } = state.primary;\n\n  const config = useConfig();\n  const { products } = useEffectiveAuthConfig();\n\n  const isLoading = state.flowState.type === AuthFlowType.Organization && !state.flowState.organization;\n\n  // Generate ordering and types of product components\n  const productComponentsOrdering = generateProductComponentsOrdering(products, state.flowState);\n  const mainScreenComponents = useProductComponents(config, 'mainScreen')!;\n  const { SsoAndOAuthButtons } = useProductComponents(config, 'ssoAndOAuthButtons')!;\n\n  const organizationName = state.flowState.organization?.organization_name;\n  let title: string;\n  switch (state.flowState.type) {\n    case AuthFlowType.Discovery:\n      title = t({ id: 'login.title', message: 'Sign up or log in' });\n      break;\n    case AuthFlowType.PasswordReset:\n      title = '';\n      break;\n    default:\n      title = organizationName\n        ? t({\n            id: 'organizationLogin.title',\n            message: `Continue to ${organizationName}`,\n          })\n        : t({\n            id: 'organizationLogin.titleUnknown',\n            message: 'Continue to ...',\n            comment: 'Used instead of organizationLogin.title when the organization name is not available',\n          });\n      break;\n  }\n\n  // Show a targeted message if the member has an unverified email address and\n  // additional primary auth is required\n  const showVerifyEmailCopy = email && emailVerified === false && primaryAuthMethods;\n\n  if (isLoading) {\n    return <LoadingScreen />;\n  }\n\n  return (\n    <Column gap={6}>\n      {!options.hideHeaderText &&\n        (showVerifyEmailCopy ? (\n          <>\n            <Typography variant=\"header\">\n              {t({ id: 'emailVerification.title', message: 'Verify your email' })}\n            </Typography>\n\n            <Typography>\n              {t({\n                id: 'emailVerification.content',\n                message: 'Confirm your email address with one of the following:',\n              })}\n            </Typography>\n          </>\n        ) : (\n          title && (\n            <Typography variant=\"header\" align=\"center\">\n              {title}\n            </Typography>\n          )\n        ))}\n\n      <Column gap={4}>\n        {productComponentsOrdering.map((group) =>\n          isButtonGroup(group) ? (\n            <SsoAndOAuthButtons key=\"buttons\" buttons={group} />\n          ) : (\n            group.map((component, index) => {\n              const Component = mainScreenComponents[component];\n              if (Component) {\n                return <Component key={component} />;\n              }\n              if (component === MainScreenComponent.Divider) {\n                return <Divider key={'divider' + index} />;\n              }\n              return null;\n            })\n          ),\n        )}\n      </Column>\n    </Column>\n  );\n};\n","import { MessageDescriptor } from '@lingui/core';\nimport { msg } from '@lingui/core/macro';\nimport { useLingui } from '@lingui/react/macro';\nimport { StringLiteralFromEnum } from '@stytch/core';\nimport { B2BMFAProducts } from '@stytch/core/public';\nimport React, { useMemo } from 'react';\n\nimport Button from '../../components/atoms/Button';\nimport Column from '../../components/atoms/Column';\nimport Typography from '../../components/atoms/Typography';\nimport ButtonColumn from '../../components/molecules/ButtonColumn';\nimport { getEnabledMethods } from '../getEnabledMethods';\nimport { useConfig, useGlobalReducer } from '../GlobalContextProvider';\nimport { B2B_MFA_METHODS } from '../reducer/mfa';\nimport { AppScreens } from '../types/AppScreens';\n\nconst mfaOptions: Record<\n  StringLiteralFromEnum<B2BMFAProducts>,\n  {\n    messageDescriptor: MessageDescriptor;\n    screen: AppScreens;\n  }\n> = {\n  [B2BMFAProducts.totp]: {\n    messageDescriptor: msg({ id: 'mfa.enrollment.option.totp', message: 'Use an authenticator app' }),\n    screen: AppScreens.TOTPEnrollmentQRCode,\n  },\n  [B2BMFAProducts.smsOtp]: {\n    messageDescriptor: msg({ id: 'mfa.enrollment.option.sms', message: 'Text me a code' }),\n    screen: AppScreens.SMSOTPEnrollment,\n  },\n};\n\nexport const MFAEnrollmentSelectionScreen = () => {\n  const { t } = useLingui();\n  const { mfaProductInclude, mfaProductOrder } = useConfig();\n\n  const [state, dispatch] = useGlobalReducer();\n\n  // This screen should only be shown if primary info is available\n  const { organizationMfaOptionsSupported } = state.mfa.primaryInfo!;\n\n  const handleNavigate = (screen: AppScreens) => {\n    dispatch({\n      type: 'transition',\n      screen,\n      history: 'push',\n    });\n  };\n\n  const displayOptions = useMemo(() => {\n    const optionsToDisplay = getEnabledMethods({\n      allMethods: B2B_MFA_METHODS,\n      orgSupportedMethods: organizationMfaOptionsSupported,\n      uiIncludedMethods: mfaProductInclude,\n    });\n\n    const result: StringLiteralFromEnum<B2BMFAProducts>[] = [];\n    for (const option of mfaProductOrder ?? B2B_MFA_METHODS) {\n      if (optionsToDisplay.has(option)) {\n        result.push(option);\n        optionsToDisplay.delete(option);\n      }\n    }\n\n    result.push(...optionsToDisplay);\n    return result;\n  }, [mfaProductInclude, mfaProductOrder, organizationMfaOptionsSupported]);\n\n  return (\n    <Column gap={6}>\n      <Typography variant=\"header\">\n        {t({ id: 'mfa.enrollment.title', message: 'Set up Multi-Factor Authentication' })}\n      </Typography>\n\n      <Typography variant=\"body\">\n        {t({\n          id: 'mfa.enrollment.content',\n          message: 'Your organization requires an additional form of verification to make your account more secure.',\n        })}\n      </Typography>\n\n      <ButtonColumn>\n        {displayOptions.map((option) => {\n          const { messageDescriptor, screen } = mfaOptions[option];\n          return (\n            <Button key={option} variant=\"outline\" onClick={() => handleNavigate(screen)}>\n              {t(messageDescriptor)}\n            </Button>\n          );\n        })}\n      </ButtonColumn>\n    </Column>\n  );\n};\n","import { useLingui } from '@lingui/react/macro';\nimport { RecoveryCodeRecoverResponse, StytchProjectConfigurationInput } from '@stytch/core/public';\nimport React, { FormEvent, useState } from 'react';\n\nimport Button from '../../components/atoms/Button';\nimport Column from '../../components/atoms/Column';\nimport Typography from '../../components/atoms/Typography';\nimport ButtonColumn from '../../components/molecules/ButtonColumn';\nimport Input from '../../components/molecules/Input';\nimport { useConfig, useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport { StytchMutationKey, useMutate } from '../utils';\nimport styles from './RecoveryCodeEntryScreen.module.css';\n\nexport const RecoveryCodeEntryScreen = () => {\n  const stytchClient = useStytch();\n  const {\n    sessionOptions: { sessionDurationMinutes },\n  } = useConfig();\n  const { t } = useLingui();\n\n  const [state, dispatch] = useGlobalReducer();\n\n  // This screen should only be shown if primary info is available\n  const { memberId, organizationId } = state.mfa.primaryInfo!;\n\n  const {\n    trigger: authenticate,\n    isMutating: isSubmitting,\n    error,\n  } = useMutate<\n    RecoveryCodeRecoverResponse<StytchProjectConfigurationInput>,\n    unknown,\n    StytchMutationKey,\n    { recoveryCode: string; memberId: string; organizationId: string; sessionDurationMinutes: number }\n  >(\n    'stytch.recoveryCodes.recover',\n    (\n      _: string,\n      {\n        arg: { recoveryCode, memberId, organizationId, sessionDurationMinutes },\n      }: { arg: { recoveryCode: string; memberId: string; organizationId: string; sessionDurationMinutes: number } },\n    ) =>\n      stytchClient.recoveryCodes.recover({\n        recovery_code: recoveryCode,\n        member_id: memberId,\n        organization_id: organizationId,\n        session_duration_minutes: sessionDurationMinutes,\n      }),\n    {\n      throwOnError: false,\n      onSuccess: () => {\n        dispatch({ type: 'recovery_code/authenticate_success' });\n      },\n    },\n  );\n\n  const [recoveryCode, setRecoveryCode] = useState('');\n  const errorMessage = error\n    ? t({ id: 'recoveryCodes.entry.error.invalidCode', message: 'Invalid backup code, please try again.' })\n    : undefined;\n\n  const handleSubmit = async (e: FormEvent) => {\n    e.preventDefault();\n    authenticate({ recoveryCode, memberId, organizationId, sessionDurationMinutes });\n  };\n\n  return (\n    <Column as=\"form\" gap={6} onSubmit={handleSubmit}>\n      <Typography variant=\"header\">{t({ id: 'recoveryCodes.entry.title', message: 'Enter backup code' })}</Typography>\n      <Typography variant=\"body\">\n        {t({\n          id: 'recoveryCodes.entry.content',\n          message: 'Enter one of the backup codes you saved when setting up your authenticator app.',\n        })}\n      </Typography>\n\n      <Input\n        id=\"recovery-code\"\n        className={styles.input}\n        value={recoveryCode}\n        onChange={(e) => {\n          setRecoveryCode(e.target.value);\n        }}\n        placeholder={t({ id: 'formField.backupCode.placeholder', message: 'Enter backup code' })}\n        label={t({ id: 'formField.backupCode.ariaLabel', message: 'Backup code' })}\n        hideLabel\n        required\n        autoComplete=\"off\"\n        spellCheck={false}\n        error={errorMessage}\n      />\n\n      <ButtonColumn>\n        <Button variant=\"primary\" loading={isSubmitting} type=\"submit\" disabled={!recoveryCode || isSubmitting}>\n          {t({ id: 'button.continue', message: 'Continue' })}\n        </Button>\n        <Button variant=\"ghost\" onClick={() => dispatch({ type: 'navigate_back' })}>\n          {t({ id: 'button.goBack', message: 'Go back' })}\n        </Button>\n      </ButtonColumn>\n    </Column>\n  );\n};\n","import classNames from 'classnames';\nimport React, { HTMLAttributes } from 'react';\n\nimport styles from './CodeContainer.module.css';\n\nexport type CodeContainerProps = HTMLAttributes<HTMLDivElement>;\n\nconst CodeContainer: React.FC<CodeContainerProps> = ({ children, className, ...props }) => (\n  <div className={classNames(className, styles.container)} {...props}>\n    {children}\n  </div>\n);\n\nexport default CodeContainer;\n","import { useLingui } from '@lingui/react/macro';\nimport React, { CSSProperties, useMemo } from 'react';\n\nimport Button, { ButtonAnchor } from '../../components/atoms/Button';\nimport CodeContainer from '../../components/atoms/CodeContainer';\nimport Column from '../../components/atoms/Column';\nimport { errorToast } from '../../components/atoms/Toast';\nimport Typography from '../../components/atoms/Typography';\nimport VerticalTransition, { useTimedBoolean } from '../../components/atoms/VerticalTransition';\nimport ButtonColumn from '../../components/molecules/ButtonColumn';\nimport TextColumn from '../../components/molecules/TextColumn';\nimport { useGlobalReducer } from '../GlobalContextProvider';\nimport styles from './RecoveryCodeSaveScreen.module.css';\n\nexport const RecoveryCodeSaveScreen = () => {\n  const [state, dispatch] = useGlobalReducer();\n  const { t } = useLingui();\n\n  // This screen should only be shown if TOTP enrollment is available\n  const { recoveryCodes } = state.mfa.totp.enrollment!;\n\n  const handleContinue = () => {\n    dispatch({ type: 'recovery_code/save_acknowledge' });\n  };\n\n  const fileContent = useMemo(() => {\n    const newline = navigator.platform === 'Win32' ? '\\r\\n' : '\\n';\n    const blob = new Blob([recoveryCodes.join(newline)], { type: 'text/plain' });\n    return URL.createObjectURL(blob);\n  }, [recoveryCodes]);\n\n  const organizationName = state.flowState.organization?.organization_name;\n  const filename = organizationName\n    ? t({ id: 'recoveryCodes.filename.withOrganizationName', message: `${organizationName}-backup-codes` })\n    : t({\n        id: 'recoveryCodes.filename.noOrganizationName',\n        message: 'backup-codes',\n      });\n\n  const [copied, setCopied] = useTimedBoolean(3);\n  const handleCodesCopy = async () => {\n    try {\n      await navigator.clipboard.writeText(recoveryCodes.join('\\n'));\n      setCopied(true);\n    } catch {\n      errorToast({\n        message: t({ id: 'recoveryCodes.save.toast.copyFailed', message: \"Couldn't copy codes to clipboard\" }),\n      });\n    }\n  };\n\n  const maxCodeLength = Math.max(...recoveryCodes.map((code) => code.length));\n\n  return (\n    <Column gap={6}>\n      <TextColumn\n        header={t({ id: 'recoveryCodes.save.title', message: 'Save your backup codes!' })}\n        body={t({\n          id: 'recoveryCodes.save.content',\n          message: 'This is the only time you will be able to access and save your backup codes.',\n        })}\n      />\n\n      <CodeContainer>\n        <Typography font=\"mono\">\n          <ul className={styles.codes} style={{ '--st-max-code-length': maxCodeLength + 'ch' } as CSSProperties}>\n            {recoveryCodes.map((code, i) => (\n              <li key={i}>{code}</li>\n            ))}\n          </ul>\n        </Typography>\n      </CodeContainer>\n\n      <ButtonColumn>\n        {/* eslint-disable-next-line lingui/no-unlocalized-strings */}\n        <ButtonAnchor variant=\"primary\" href={fileContent} download={filename + '.txt'}>\n          <VerticalTransition\n            primary={t({ id: 'recoveryCodes.save.button.download', message: 'Download .txt file' })}\n            secondary={t({ id: 'recoveryCodes.save.button.copied', message: 'Copied!' })}\n            triggered={copied}\n          />\n        </ButtonAnchor>\n        <Button variant=\"outline\" onClick={handleCodesCopy}>\n          {t({ id: 'recoveryCodes.save.button.copyAll', message: 'Copy all to clipboard' })}\n        </Button>\n        <Button variant=\"ghost\" onClick={handleContinue}>\n          {t({ id: 'recoveryCodes.save.button.done', message: 'Done' })}\n        </Button>\n      </ButtonColumn>\n    </Column>\n  );\n};\n","import { useLingui } from '@lingui/react/macro';\nimport { COUNTRIES_LIST, CountryCode } from '@stytch/core';\nimport { B2BSMSSendResponse, StytchAPIError, StytchSDKError } from '@stytch/core/public';\nimport React, { FormEvent } from 'react';\n\nimport { getTranslatedError } from '../../../utils/getTranslatedError';\nimport { formatNumberToIncludeCountryCode } from '../../../utils/handleParsePhoneNumber';\nimport { readB2BInternals } from '../../../utils/internal';\nimport Button from '../../components/atoms/Button';\nimport Column from '../../components/atoms/Column';\nimport Typography from '../../components/atoms/Typography';\nimport ButtonColumn from '../../components/molecules/ButtonColumn';\nimport PhoneInput, { getPhoneNumberProps } from '../../components/molecules/PhoneInput';\nimport { useConfig, useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport { canGoBack } from '../reducer/navigation';\nimport { StytchMutationKey, useMutate } from '../utils';\n\n// eslint-disable-next-line lingui/no-unlocalized-strings\nconst DEFAULT_COUNTRY_CODE = 'US' satisfies CountryCode;\n\n/**\n * Thrown when the user provides a phone number that cannot be parsed.\n */\nclass InvalidPhoneNumberError extends StytchSDKError {\n  constructor() {\n    // eslint-disable-next-line lingui/no-unlocalized-strings\n    super('InvalidPhoneNumberError', 'Invalid phone number');\n  }\n}\n\nexport const SMSOTPEnrollScreen = () => {\n  const stytchClient = useStytch();\n  const [state, dispatch] = useGlobalReducer();\n  const { t } = useLingui();\n  const { smsOtpOptions } = useConfig();\n  const {\n    mfa: {\n      smsOtp: { isSending, sendError, enrolledNumber },\n    },\n  } = state;\n\n  // This screen should only be shown if primary info is available\n  const { memberId, organizationId } = state.mfa.primaryInfo!;\n\n  const [countryCode, setCountryCode] = React.useState<CountryCode>(\n    enrolledNumber?.countryCode ?? DEFAULT_COUNTRY_CODE,\n  );\n  const [phoneNumber, setPhoneNumber] = React.useState(enrolledNumber?.phoneNumber ?? '');\n\n  const errorMessage = React.useMemo(() => {\n    if (!sendError) return undefined;\n\n    if (sendError instanceof InvalidPhoneNumberError) {\n      return t({\n        id: 'error.invalidPhoneNumber',\n        message: 'Phone number format is invalid. Ensure the phone number is in the E.164 format.',\n      });\n    }\n\n    return getTranslatedError(sendError as StytchAPIError, t);\n  }, [sendError, t]);\n\n  const { parsePhoneNumber, getExampleNumber } = getPhoneNumberProps(readB2BInternals(stytchClient).clientsideServices);\n\n  const { trigger: sendSms } = useMutate<\n    B2BSMSSendResponse,\n    unknown,\n    StytchMutationKey,\n    { parsedNumber: string; locale?: string }\n  >(\n    'stytch.otps.sms.send',\n    async (_: string, { arg: { parsedNumber, locale } }: { arg: { parsedNumber: string; locale?: string } }) => {\n      return stytchClient.otps.sms.send({\n        mfa_phone_number: parsedNumber,\n        member_id: memberId,\n        organization_id: organizationId,\n        locale: locale,\n      });\n    },\n    {\n      onSuccess: (response) => {\n        dispatch({\n          type: 'sms_otp/send_success',\n          response,\n          countryCode,\n          phoneNumber,\n          formattedPhoneNumber: `+${COUNTRIES_LIST[countryCode]} ${phoneNumber}`,\n        });\n      },\n      onError: (error) => {\n        dispatch({\n          type: 'sms_otp/send_error',\n          error,\n        });\n      },\n    },\n  );\n\n  const handleSubmit = async (e: FormEvent) => {\n    e.preventDefault();\n\n    dispatch({ type: 'sms_otp/send' });\n    try {\n      // We parse the phone number here (rather than inside `sendSms`) because we\n      // don't want validation errors to be surfaced through the global error\n      // callback\n\n      const parsedNumber = await formatNumberToIncludeCountryCode({\n        parsePhoneNumber,\n        phoneNumber,\n        country: countryCode,\n      });\n\n      if (!parsedNumber.isValid) {\n        throw new InvalidPhoneNumberError();\n      }\n\n      await sendSms({ parsedNumber: parsedNumber.number, locale: smsOtpOptions?.locale });\n    } catch (error) {\n      dispatch({\n        type: 'sms_otp/send_error',\n        error,\n      });\n    }\n  };\n\n  return (\n    <Column as=\"form\" gap={6} onSubmit={handleSubmit}>\n      <Typography variant=\"header\">\n        {t({\n          id: 'mfa.smsEnrollment.title',\n          message: 'Enter your phone number to set up Multi-Factor Authentication',\n        })}\n      </Typography>\n\n      <Typography variant=\"body\">\n        {t({\n          id: 'mfa.smsEnrollment.content',\n          message: 'Your organization requires an additional form of verification to make your account more secure.',\n        })}\n      </Typography>\n\n      <PhoneInput\n        country={countryCode}\n        setCountry={setCountryCode}\n        phone={phoneNumber}\n        setPhone={setPhoneNumber}\n        parsePhoneNumber={parsePhoneNumber}\n        getExampleNumber={getExampleNumber}\n        error={errorMessage}\n      />\n\n      <ButtonColumn>\n        <Button variant=\"primary\" loading={isSending} type=\"submit\" disabled={!phoneNumber || isSending}>\n          {t({ id: 'button.continue', message: 'Continue' })}\n        </Button>\n        {canGoBack(state) && (\n          <Button variant=\"ghost\" onClick={() => dispatch({ type: 'navigate_back' })}>\n            {t({ id: 'button.goBack', message: 'Go back' })}\n          </Button>\n        )}\n      </ButtonColumn>\n    </Column>\n  );\n};\n","import { useLingui } from '@lingui/react/macro';\nimport {\n  B2BMFAProducts,\n  B2BSMSAuthenticateResponse,\n  B2BSMSSendResponse,\n  StytchAPIError,\n  StytchProjectConfigurationInput,\n} from '@stytch/core/public';\nimport React, { useEffect, useMemo } from 'react';\n\nimport { getTranslatedError } from '../../../utils/getTranslatedError';\nimport { formatNumber } from '../../../utils/handleParsePhoneNumber';\nimport { readB2BInternals } from '../../../utils/internal';\nimport Button from '../../components/atoms/Button';\nimport Column from '../../components/atoms/Column';\nimport { useCountdown } from '../../components/atoms/Countdown';\nimport { errorToast } from '../../components/atoms/Toast';\nimport ButtonColumn from '../../components/molecules/ButtonColumn';\nimport { LoadingScreen } from '../../components/molecules/Loading';\nimport { ResendOTPButton } from '../../components/organisms/ResendOTPButton';\nimport { SentOTPEntry } from '../../components/organisms/SentOTPEntry';\nimport { useConfig, useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport { StytchMutationKey, useMutate } from '../utils';\n\nexport const SMSOTPEntryScreen = () => {\n  const stytchClient = useStytch();\n  const {\n    sessionOptions: { sessionDurationMinutes },\n    smsOtpOptions,\n  } = useConfig();\n  const { t } = useLingui();\n\n  const [state, dispatch] = useGlobalReducer();\n  const {\n    mfa: { isEnrolling, smsOtp, primaryInfo },\n  } = state;\n\n  const { codeExpiration, formattedDestination } = smsOtp;\n\n  // This screen should only be shown if primary info is available\n  const { enrolledMfaMethods, memberId, memberPhoneNumber, organizationId, organizationMfaOptionsSupported } =\n    primaryInfo!;\n\n  const resendCountdown = useCountdown();\n\n  const {\n    trigger: sendSms,\n    isMutating: isSending,\n    error: sendError,\n  } = useMutate<\n    B2BSMSSendResponse,\n    unknown,\n    StytchMutationKey,\n    { memberId: string; organizationId: string; locale?: string }\n  >(\n    'stytch.otps.sms.send',\n    (\n      _: string,\n      {\n        arg: { memberId, organizationId, locale },\n      }: { arg: { memberId: string; organizationId: string; locale?: string } },\n    ) => {\n      dispatch({ type: 'sms_otp/send' });\n      return stytchClient.otps.sms.send({ member_id: memberId, organization_id: organizationId, locale });\n    },\n    {\n      onSuccess: (response) => {\n        dispatch({ type: 'sms_otp/send_success', response });\n      },\n      onError: (error) => {\n        const message = getTranslatedError(error as StytchAPIError, t);\n        if (message) {\n          errorToast({ message });\n        }\n        dispatch({ type: 'sms_otp/send_error', error: message });\n      },\n      // Throw on error to ensure promise is rejected\n      throwOnError: true,\n    },\n  );\n\n  const {\n    trigger: authenticate,\n    isMutating: isAuthenticating,\n    error: authenticateError,\n  } = useMutate<\n    B2BSMSAuthenticateResponse<StytchProjectConfigurationInput>,\n    unknown,\n    StytchMutationKey,\n    { otp: string; memberId: string; organizationId: string; sessionDurationMinutes: number }\n  >(\n    'stytch.otps.sms.authenticate',\n    (\n      _: string,\n      {\n        arg: { otp, memberId, organizationId, sessionDurationMinutes },\n      }: { arg: { otp: string; memberId: string; organizationId: string; sessionDurationMinutes: number } },\n    ) =>\n      stytchClient.otps.sms.authenticate({\n        code: otp,\n        member_id: memberId,\n        organization_id: organizationId,\n        session_duration_minutes: sessionDurationMinutes,\n      }),\n    {\n      onSuccess: () => {\n        dispatch({ type: 'sms_otp/authenticate_success' });\n      },\n      onError: () => {\n        resendCountdown.clear();\n      },\n    },\n  );\n\n  const shouldCreate = codeExpiration === null && !isSending && !sendError;\n  useEffect(() => {\n    if (shouldCreate) {\n      sendSms({ memberId, organizationId, locale: smsOtpOptions?.locale }).catch(() => {\n        // error in the UI is handled through the error object so we just swallow it here when auto-sending\n      });\n    }\n  }, [memberId, organizationId, sendSms, shouldCreate, smsOtpOptions?.locale]);\n\n  useEffect(() => {\n    if (!formattedDestination && memberPhoneNumber) {\n      const handleFormatNumber = async () => {\n        const parsePhoneNumber = (phoneNumber: string) =>\n          readB2BInternals(stytchClient).clientsideServices.parsedPhoneNumber({\n            phoneNumber,\n          });\n\n        const national = await formatNumber({\n          parsePhoneNumber,\n          phoneNumber: memberPhoneNumber,\n        });\n\n        dispatch({\n          type: 'sms_otp/format_destination',\n          formattedPhoneNumber: national,\n        });\n      };\n\n      handleFormatNumber();\n    }\n  }, [dispatch, formattedDestination, stytchClient, memberPhoneNumber]);\n\n  const isTotpAvailable = useMemo(\n    () =>\n      !isEnrolling &&\n      enrolledMfaMethods.includes(B2BMFAProducts.totp) &&\n      (organizationMfaOptionsSupported.length === 0 || organizationMfaOptionsSupported.includes(B2BMFAProducts.totp)),\n    [enrolledMfaMethods, isEnrolling, organizationMfaOptionsSupported],\n  );\n  const errorMessage = authenticateError\n    ? t({ id: 'error.passcodeInvalid', message: 'Invalid passcode, please try again.' })\n    : undefined;\n\n  // The user can go back to change their phone number if either:\n  // - we are in an enrollment flow\n  // - they are not enrolled in any MFA methods at all\n  // - they are not enrolled in any of the limited MFA methods supported by the organization\n  const canGoBack = useMemo(\n    () =>\n      isEnrolling ||\n      enrolledMfaMethods.length === 0 ||\n      (organizationMfaOptionsSupported.length > 0 &&\n        !enrolledMfaMethods.some((enrolledMethod) => organizationMfaOptionsSupported.includes(enrolledMethod))),\n    [enrolledMfaMethods, isEnrolling, organizationMfaOptionsSupported],\n  );\n\n  const handleSubmit = (otp: string) => {\n    authenticate({ otp, memberId, organizationId, sessionDurationMinutes });\n  };\n\n  const handleSwitchToTotp = () => {\n    dispatch({ type: 'transition', history: 'push', screen: AppScreens.TOTPEntry });\n  };\n\n  const handleResendOTP = async () => {\n    await sendSms({ memberId, organizationId, locale: smsOtpOptions?.locale });\n  };\n\n  const handleBack = () => {\n    dispatch({ type: 'navigate_back' });\n  };\n\n  const resendButton = (\n    <ResendOTPButton countdown={resendCountdown} isSubmitting={isAuthenticating} resendOTP={handleResendOTP} />\n  );\n  const switchToTotpButton = isTotpAvailable && (\n    <Button variant=\"ghost\" onClick={handleSwitchToTotp}>\n      {t({ id: 'mfa.methods.authenticatorApp', message: 'Use an authenticator app' })}\n    </Button>\n  );\n  const backButton = canGoBack && (\n    <Button variant=\"ghost\" onClick={handleBack}>\n      {t({ id: 'button.goBack', message: 'Go back' })}\n    </Button>\n  );\n\n  return (\n    <Column gap={6}>\n      {codeExpiration !== null ? (\n        <SentOTPEntry\n          isSubmitting={isAuthenticating}\n          onSubmit={handleSubmit}\n          errorMessage={errorMessage}\n          expiration={codeExpiration.getTime()}\n          formattedDestination={formattedDestination ?? memberPhoneNumber ?? ''}\n        />\n      ) : (\n        <LoadingScreen />\n      )}\n\n      {switchToTotpButton && backButton ? (\n        <ButtonColumn\n          top={resendButton}\n          bottom={\n            <>\n              {switchToTotpButton}\n              {backButton}\n            </>\n          }\n        />\n      ) : (\n        <ButtonColumn>\n          {resendButton}\n          {switchToTotpButton}\n          {backButton}\n        </ButtonColumn>\n      )}\n    </Column>\n  );\n};\n","import { useLingui } from '@lingui/react/macro';\nimport React, { CSSProperties, useLayoutEffect, useRef, useState } from 'react';\n\nimport Button from '../../components/atoms/Button';\nimport CodeContainer from '../../components/atoms/CodeContainer';\nimport Column from '../../components/atoms/Column';\nimport { errorToast } from '../../components/atoms/Toast';\nimport Typography from '../../components/atoms/Typography';\nimport VerticalTransition, { useTimedBoolean } from '../../components/atoms/VerticalTransition';\nimport ButtonColumn from '../../components/molecules/ButtonColumn';\nimport TextColumn from '../../components/molecules/TextColumn';\nimport { useGlobalReducer } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport styles from './TOTPEnrollManualScreen.module.css';\n\nconst CHUNK_SIZE = 4;\n\nexport const TOTPEnrollManualScreen = () => {\n  const [state, dispatch] = useGlobalReducer();\n  const { t } = useLingui();\n\n  const [copied, setCopied] = useTimedBoolean(3);\n\n  // This screen should only be shown if TOTP enrollment is available\n  const { secret } = state.mfa.totp.enrollment!;\n\n  const displaySecret = secret.toLowerCase();\n  const secretChunked = displaySecret.split(new RegExp(`(.{${CHUNK_SIZE}})`, 'g')).filter(Boolean);\n\n  const { codeRef, columnCount } = useColumnCount(secretChunked.length);\n\n  const handleBack = () => dispatch({ type: 'navigate_back' });\n\n  const handleContinue = () => {\n    dispatch({ type: 'transition', history: 'push', screen: AppScreens.TOTPEntry });\n  };\n\n  const handleCodeCopy = async () => {\n    try {\n      await navigator.clipboard.writeText(displaySecret);\n      setCopied(true);\n    } catch {\n      errorToast({\n        message: t({ id: 'mfa.totpEnrollment.toast.copyFailed', message: \"Couldn't copy code to clipboard\" }),\n      });\n\n      // Select all text instead as fallback\n      const selection = window.getSelection();\n      if (codeRef.current && selection) {\n        selection.empty();\n        const range = document.createRange();\n        range.selectNodeContents(codeRef.current);\n        selection.addRange(range);\n      }\n    }\n  };\n\n  return (\n    <Column gap={6}>\n      <TextColumn\n        header={t({ id: 'mfa.totpEnrollment.title', message: 'Having trouble scanning the QR code?' })}\n        body={t({\n          id: 'mfa.totpEnrollment.content',\n          message: 'Click to copy the code below. Enter into your authenticator app to link your account.',\n        })}\n      />\n\n      {/* No additional keyboard support since there's a copy code button below */}\n      <CodeContainer className={styles.codeContainer} onClick={handleCodeCopy}>\n        {/* This Typography element is on the outside because we need the 1ch gap to also be in monospace */}\n        <Typography\n          ref={codeRef}\n          className={styles.code}\n          style={\n            {\n              '--st-column-count': columnCount,\n              '--st-chunk-size': CHUNK_SIZE + 'ch',\n            } as CSSProperties\n          }\n          font=\"mono\"\n        >\n          {secretChunked.map((part, i) => (\n            <span key={i}>{part}</span>\n          ))}\n        </Typography>\n      </CodeContainer>\n\n      <ButtonColumn>\n        <Button variant=\"primary\" onClick={handleCodeCopy}>\n          <VerticalTransition\n            primary={t({ id: 'mfa.totpEnrollment.copyCode.label', message: 'Copy to clipboard' })}\n            secondary={t({ id: 'mfa.totpEnrollment.copyCode.codeCopied', message: 'Copied!' })}\n            triggered={copied}\n          />\n        </Button>\n        <Button variant=\"outline\" onClick={handleContinue}>\n          {t({ id: 'button.continue', message: 'Continue' })}\n        </Button>\n        <Button variant=\"ghost\" onClick={handleBack}>\n          {t({ id: 'button.totpQrRetry', message: 'Try to scan the QR code again' })}\n        </Button>\n      </ButtonColumn>\n    </Column>\n  );\n};\n\n// Balance out the rows - this is fairly complex, but there's not any way to really do this in CSS only\n// so instead we read the width of the container and the chunks below it, then use that to calculate\n// first the number of rows, then how many chunks can evenly fit per row\nfunction useColumnCount(chunksCount: number) {\n  const codeRef = useRef<HTMLDivElement>(null);\n  const [columnCount, setColumnCount] = useState<number>();\n\n  useLayoutEffect(() => {\n    const updateRowCount = () => {\n      if (!codeRef.current) return;\n\n      // Get the width of the container and inner spans\n      const containerWidth = codeRef.current.clientWidth;\n      const spanWidth = Math.max(\n        ...Array.from(codeRef.current.querySelectorAll('span')).map((elem) => elem.clientWidth),\n      );\n\n      // Find the number of columns to display. First compute the raw number\n      // Note we don't check how many rows are currently rendered because this number is already affected by\n      // the current row count.\n      const fittedColumns = Math.floor(containerWidth / spanWidth);\n      // Then account for gaps (1ch each, so 1/CHUNK_SIZE per gap)\n      const fittedColumnsWithGaps = fittedColumns - Math.floor(fittedColumns / CHUNK_SIZE);\n      // Number of rows is count / columns\n      const rows = Math.ceil(chunksCount / fittedColumnsWithGaps);\n      // And finally the closest even column count is count / rows\n      const evenColumns = Math.ceil(chunksCount / rows);\n\n      setColumnCount(evenColumns);\n    };\n\n    updateRowCount();\n\n    if (!window.ResizeObserver || !codeRef.current) return;\n    const observer = new ResizeObserver(updateRowCount);\n    observer.observe(codeRef.current);\n    return () => observer.disconnect();\n  }, [chunksCount]);\n\n  return {\n    codeRef,\n    columnCount,\n  };\n}\n","import { useLingui } from '@lingui/react/macro';\nimport { StytchAPIError, StytchError, StytchEventType } from '@stytch/core/public';\nimport React from 'react';\nimport useSWR from 'swr';\n\nimport { getTranslatedError } from '../../../utils/getTranslatedError';\nimport Button from '../../components/atoms/Button';\nimport Column from '../../components/atoms/Column';\nimport { errorToast } from '../../components/atoms/Toast';\nimport Typography from '../../components/atoms/Typography';\nimport ButtonColumn from '../../components/molecules/ButtonColumn';\nimport { LoadingScreen } from '../../components/molecules/Loading';\nimport { useErrorCallback, useEventCallback, useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport styles from './TOTPEnrollQRScreen.module.css';\n\nexport const TOTPEnrollQRScreen = () => {\n  const stytchClient = useStytch();\n  const [state, dispatch] = useGlobalReducer();\n  const onEvent = useEventCallback();\n  const onError = useErrorCallback();\n\n  const { t } = useLingui();\n\n  // This screen should only be shown if primary info and TOTP enrollment are\n  // available\n  const { memberId, organizationId } = state.mfa.primaryInfo!;\n\n  const { data } = useSWR(\n    ['stytch.totp.create', memberId, organizationId],\n    () => stytchClient.totp.create({ member_id: memberId, organization_id: organizationId }),\n    {\n      revalidateOnFocus: false,\n      revalidateOnReconnect: false,\n      revalidateIfStale: false,\n\n      onSuccess: (response) => {\n        onEvent({ type: StytchEventType.B2BTOTPCreate, data: response });\n        // Store the enrollment object so we can show recovery code after authenticating\n        dispatch({ type: 'totp/create_success', response, memberId, organizationId });\n      },\n      onError: (error) => {\n        const message = getTranslatedError(error as StytchAPIError, t);\n        if (message) {\n          errorToast({ message });\n        }\n        onError(error as StytchError);\n      },\n    },\n  );\n\n  const handleShowManualCode = () => {\n    dispatch({ type: 'totp/show_code', method: 'manual' });\n  };\n\n  const handleContinue = () => {\n    dispatch({ type: 'transition', history: 'push', screen: AppScreens.TOTPEntry });\n  };\n\n  return (\n    <Column gap={6}>\n      <Typography variant=\"header\">\n        {t({ id: 'totp.setupQr.title', message: 'Scan the QR code to link your authenticator app' })}\n      </Typography>\n\n      <Typography variant=\"body\">\n        {t({\n          id: 'totp.setupQr.content',\n          message:\n            'Your organization requires an additional form of verification to make your account more secure. If you don’t have an authenticator app, you’ll need to install one first.',\n        })}\n      </Typography>\n\n      {data ? (\n        <>\n          <img\n            alt={t({ id: 'mfaTotpEnrollment.qrAltText', message: 'QR code for TOTP enrollment' })}\n            src={data.qr_code}\n            className={styles.qr}\n          />\n\n          <ButtonColumn>\n            <Button variant=\"primary\" onClick={handleContinue}>\n              {t({ id: 'button.continue', message: 'Continue' })}\n            </Button>\n            <Button variant=\"outline\" onClick={handleShowManualCode}>\n              {t({ id: 'button.totpQrManual', message: 'Having trouble scanning?' })}\n            </Button>\n          </ButtonColumn>\n        </>\n      ) : (\n        <LoadingScreen />\n      )}\n    </Column>\n  );\n};\n","import { useLingui } from '@lingui/react/macro';\nimport { B2BMFAProducts, B2BTOTPAuthenticateResponse, StytchProjectConfigurationInput } from '@stytch/core/public';\nimport React, { useMemo } from 'react';\n\nimport Button from '../../components/atoms/Button';\nimport Column from '../../components/atoms/Column';\nimport ButtonColumn from '../../components/molecules/ButtonColumn';\nimport OTPEntry from '../../components/molecules/OTPEntry';\nimport { useConfig, useGlobalReducer, useStytch } from '../GlobalContextProvider';\nimport { AppScreens } from '../types/AppScreens';\nimport { StytchMutationKey, useMutate } from '../utils';\n\nexport const TOTPEntryScreen = () => {\n  const stytchClient = useStytch();\n  const {\n    sessionOptions: { sessionDurationMinutes },\n  } = useConfig();\n  const { t } = useLingui();\n\n  const [state, dispatch] = useGlobalReducer();\n  const {\n    mfa: { isEnrolling },\n  } = state;\n\n  // This screen should only be shown if primary info is available\n  const { enrolledMfaMethods, memberId, organizationId, organizationMfaOptionsSupported } = state.mfa.primaryInfo!;\n\n  const {\n    trigger: authenticate,\n    isMutating: isSubmitting,\n    error: authenticateError,\n  } = useMutate<\n    B2BTOTPAuthenticateResponse<StytchProjectConfigurationInput>,\n    unknown,\n    StytchMutationKey,\n    { memberId: string; organizationId: string; otp: string; sessionDurationMinutes: number }\n  >(\n    'stytch.totp.authenticate',\n    (\n      _: string,\n      {\n        arg: { memberId, organizationId, otp, sessionDurationMinutes },\n      }: { arg: { memberId: string; organizationId: string; otp: string; sessionDurationMinutes: number } },\n    ) =>\n      stytchClient.totp.authenticate({\n        code: otp,\n        member_id: memberId,\n        organization_id: organizationId,\n        session_duration_minutes: sessionDurationMinutes,\n      }),\n    {\n      onSuccess: () => {\n        dispatch({ type: 'totp/authenticate_success' });\n      },\n    },\n  );\n\n  const isSmsOtpAvailable = useMemo(\n    () =>\n      !isEnrolling &&\n      enrolledMfaMethods.includes(B2BMFAProducts.smsOtp) &&\n      (organizationMfaOptionsSupported.length === 0 || organizationMfaOptionsSupported.includes(B2BMFAProducts.smsOtp)),\n    [enrolledMfaMethods, isEnrolling, organizationMfaOptionsSupported],\n  );\n\n  const errorMessage = authenticateError\n    ? t({ id: 'error.passcodeInvalid', message: 'Invalid passcode, please try again.' })\n    : undefined;\n  const canGoBack = isEnrolling;\n\n  const handleSubmit = (otp: string) => authenticate({ memberId, organizationId, otp, sessionDurationMinutes });\n\n  const handleSwitchToRecoveryCode = () => {\n    dispatch({ type: 'transition', history: 'push', screen: AppScreens.RecoveryCodeEntry });\n  };\n\n  const handleSwitchToSms = () => {\n    dispatch({ type: 'transition', history: 'push', screen: AppScreens.SMSOTPEntry });\n  };\n\n  return (\n    <Column gap={6}>\n      <OTPEntry\n        header={t({ id: 'totp.title', message: 'Enter verification code' })}\n        instruction={t({ id: 'totp.content', message: 'Enter the 6-digit code from your authenticator app.' })}\n        helperContent={\n          isEnrolling\n            ? t({\n                id: 'mfa.totpEntry.getNewCode',\n                message: 'If the verification code doesn’t work, go back to your authenticator app to get a new code.',\n              })\n            : null\n        }\n        isSubmitting={isSubmitting}\n        onSubmit={handleSubmit}\n        errorMessage={errorMessage}\n      />\n\n      <ButtonColumn\n        top={null}\n        bottom={\n          <>\n            {isSmsOtpAvailable && (\n              <Button variant=\"outline\" onClick={handleSwitchToSms}>\n                {t({ id: 'mfa.totpEntry.switchToSms', message: 'Text me a code instead' })}\n              </Button>\n            )}\n\n            {!isEnrolling && (\n              <Button variant=\"outline\" onClick={handleSwitchToRecoveryCode}>\n                {t({ id: 'mfa.totpEntry.useBackupCode', message: 'Use a backup code' })}\n              </Button>\n            )}\n\n            {canGoBack && (\n              <Button variant=\"ghost\" onClick={() => dispatch({ type: 'navigate_back' })}>\n                {t({ id: 'button.goBack', message: 'Go back' })}\n              </Button>\n            )}\n          </>\n        }\n      />\n    </Column>\n  );\n};\n","import { AuthFlowType, StytchAPIError, StytchEvent, StytchProjectConfigurationInput } from '@stytch/core/public';\nimport React, { ComponentType, Dispatch, ReactNode, useEffect, useState } from 'react';\nimport { useSWRConfig } from 'swr';\n\nimport { HandledTokenType } from '../../b2b/StytchB2BClient';\nimport { StytchB2BExtendedLoginConfig } from '../../types';\nimport { extractErrorType } from '../../utils/extractErrorType';\nimport Logo from '../components/atoms/Logo';\nimport { ErrorScreen } from '../components/molecules/ErrorScreen';\nimport { LoggingInScreen } from '../components/molecules/Loading';\nimport MainContainer from '../components/molecules/MainContainer';\nimport { usePresentation } from '../components/PresentationConfig';\nimport { B2BGoogleOneTap } from './components/B2BOneTap';\nimport { useConfig, useErrorCallback, useEventCallback, useGlobalReducer, useStytch } from './GlobalContextProvider';\nimport { useIsOnlyFloatingOneTap } from './hooks/useIsOnlyFloatingOneTap';\nimport { Action } from './reducer';\nimport { ConfirmationScreen } from './screens/Confirmation';\nimport { Discovery } from './screens/Discovery';\nimport { MainScreen } from './screens/Main';\nimport { MFAEnrollmentSelectionScreen } from './screens/MFAEnrollmentSelectionScreen';\nimport { RecoveryCodeEntryScreen } from './screens/RecoveryCodeEntryScreen';\nimport { RecoveryCodeSaveScreen } from './screens/RecoveryCodeSaveScreen';\nimport { SMSOTPEnrollScreen } from './screens/SMSOTPEnrollScreen';\nimport { SMSOTPEntryScreen } from './screens/SMSOTPEntryScreen';\nimport { TOTPEnrollManualScreen } from './screens/TOTPEnrollManualScreen';\nimport { TOTPEnrollQRScreen } from './screens/TOTPEnrollQRScreen';\nimport { TOTPEntryScreen } from './screens/TOTPEntryScreen';\nimport { AppScreens } from './types/AppScreens';\nimport { ErrorType } from './types/ErrorType';\nimport {\n  getStytchEventByKey,\n  onAuthenticateSuccess,\n  onDiscoveryAuthenticateSuccess,\n  StytchMutationKey,\n  useExtractSlug,\n  useProductComponents,\n} from './utils';\n\n/**\n * Separately store additional things to do when authenticateByUrl completes or errors\n */\ntype AuthTokenConfig = {\n  mutationKey: StytchMutationKey;\n  // Typing this is too hard. Instead, manually verify the typings from the client matches that expected\n  // by these success functions\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  onSuccess: (data: any, dispatch: Dispatch<Action>, config: StytchB2BExtendedLoginConfig) => void;\n  defaultError?: ErrorType;\n};\n\nconst authTokenConfig: Record<HandledTokenType, AuthTokenConfig> = {\n  discovery: {\n    mutationKey: 'stytch.magicLinks.discovery.authenticate',\n    onSuccess: onDiscoveryAuthenticateSuccess,\n    defaultError: ErrorType.EmailMagicLink,\n  },\n  discovery_oauth: {\n    mutationKey: 'stytch.oauth.discovery.authenticate',\n    onSuccess: onDiscoveryAuthenticateSuccess,\n  },\n  oauth: {\n    mutationKey: 'stytch.oauth.authenticate',\n    onSuccess: onAuthenticateSuccess,\n  },\n  sso: {\n    mutationKey: 'stytch.sso.authenticate',\n    onSuccess: onAuthenticateSuccess,\n  },\n  multi_tenant_magic_links: {\n    mutationKey: 'stytch.magicLinks.authenticate',\n    onSuccess: onAuthenticateSuccess,\n    defaultError: ErrorType.EmailMagicLink,\n  },\n  multi_tenant_impersonation: {\n    mutationKey: 'stytch.impersonation.authenticate',\n    onSuccess: onAuthenticateSuccess,\n  },\n};\n\nconst errorTypeMap: Record<string, ErrorType> = {\n  ad_blocker_detected: ErrorType.AdBlockerDetected,\n};\n\nconst AppContainer: () => ReactNode = () => {\n  const [state, dispatch] = useGlobalReducer();\n  const stytchClient = useStytch();\n  const triggerError = useErrorCallback();\n  const triggerEvent = useEventCallback();\n  const config = useConfig();\n  const { displayWatermark, theme, options } = usePresentation();\n  const isOnlyFloatingOneTap = useIsOnlyFloatingOneTap();\n\n  const currentScreen = state.screen;\n\n  const screenComponentMap = useProductComponents(config, 'screens')!;\n\n  const handleStytchAPIError = (error: StytchAPIError, defaultErrorType = ErrorType.Default) => {\n    const error_type = extractErrorType(error);\n    const errorType: ErrorType = errorTypeMap[error_type!] ?? defaultErrorType;\n\n    dispatch({\n      type: 'set_error_message_and_transition',\n      errorType,\n      canGoBack: false,\n    });\n  };\n\n  const [isTokenAuthLoading, setIsTokenAuthLoading] = useState(false);\n  const { mutate } = useSWRConfig();\n\n  const { slug, resultPending } = useExtractSlug();\n\n  useEffect(() => {\n    // If we're in One Tap only mode, we should not run any other effects\n    if (isOnlyFloatingOneTap) {\n      return;\n    }\n\n    // Password reset has special handling for exchanging a magic link token\n    // for a session and then using it to reset a password\n    if (state.flowState.type == AuthFlowType.PasswordReset) {\n      return;\n    }\n\n    const parsed = stytchClient.parseAuthenticateUrl();\n    if (!parsed?.handled) {\n      return;\n    }\n\n    const { mutationKey, defaultError, onSuccess } = authTokenConfig[parsed.tokenType];\n    setIsTokenAuthLoading(true);\n    mutate(\n      mutationKey,\n      stytchClient.authenticateByUrl({ session_duration_minutes: config.sessionOptions.sessionDurationMinutes }),\n    )\n      .then(\n        (result) => {\n          if (!result?.handled) return; // Should not be possible\n          const { data } = result;\n\n          const event = getStytchEventByKey(mutationKey);\n          if (event) {\n            triggerEvent({ type: event, data } as StytchEvent<StytchProjectConfigurationInput>);\n          }\n\n          onSuccess(data, dispatch, config);\n        },\n        (error) => {\n          triggerError(error);\n          handleStytchAPIError(error, defaultError);\n        },\n      )\n      .finally(() => setIsTokenAuthLoading(false));\n\n    // eslint-disable-next-line react-hooks/exhaustive-deps -- SDK-1354\n  }, []);\n\n  useEffect(() => {\n    // If we're in One Tap only mode, we should not run any other effects\n    if (isOnlyFloatingOneTap) {\n      return;\n    }\n\n    // Skip further action if token discovery is in progress\n    if (isTokenAuthLoading) {\n      return;\n    }\n\n    const parsed = stytchClient.parseAuthenticateUrl();\n    if (parsed?.handled) {\n      return;\n    }\n\n    if (\n      !slug &&\n      !resultPending &&\n      state.flowState.organization === null &&\n      state.screen === AppScreens.Main &&\n      state.flowState.type == AuthFlowType.Organization\n    ) {\n      // No slug found (or no slug pattern)\n      dispatch({\n        type: 'set_error_message_and_transition',\n        errorType: ErrorType.Organization,\n        canGoBack: false,\n      });\n    }\n  }, [\n    dispatch,\n    isOnlyFloatingOneTap,\n    isTokenAuthLoading,\n    resultPending,\n    slug,\n    state.flowState.organization,\n    state.flowState.type,\n    state.screen,\n    stytchClient,\n    triggerError,\n  ]);\n\n  if (isOnlyFloatingOneTap) {\n    return <B2BGoogleOneTap />;\n  }\n\n  if (isTokenAuthLoading) {\n    return (\n      <MainContainer theme={theme} displayWatermark={false}>\n        <LoggingInScreen />\n      </MainContainer>\n    );\n  }\n\n  let orgLogo;\n  if (state.flowState.organization?.organization_logo_url) {\n    const { organization_name, organization_logo_url } = state.flowState.organization;\n    orgLogo = {\n      url: organization_logo_url,\n      alt: organization_name ?? '',\n    };\n  }\n\n  const defaultScreenComponents: Partial<Record<AppScreens, ComponentType>> = {\n    // Main is omitted from StytchB2BProduct since it's used by everything\n    [AppScreens.Main]: MainScreen,\n    [AppScreens.LoggedIn]: ConfirmationScreen,\n\n    // Discovery can be opted into dynamically via stytch_redirect_type ResetPassword flow\n    // so it cannot be statically shaken away\n    [AppScreens.Discovery]: Discovery,\n    [AppScreens.Error]: ErrorScreen,\n\n    // MFA products are dynamically configured depending on organization and user choice,\n    // and opted into by default\n    [AppScreens.MFAEnrollmentSelection]: MFAEnrollmentSelectionScreen,\n    [AppScreens.SMSOTPEnrollment]: SMSOTPEnrollScreen,\n    [AppScreens.SMSOTPEntry]: SMSOTPEntryScreen,\n    [AppScreens.RecoveryCodeEntry]: RecoveryCodeEntryScreen,\n    [AppScreens.RecoveryCodeSave]: RecoveryCodeSaveScreen,\n    [AppScreens.TOTPEnrollmentQRCode]: TOTPEnrollQRScreen,\n    [AppScreens.TOTPEnrollmentManual]: TOTPEnrollManualScreen,\n    [AppScreens.TOTPEntry]: TOTPEntryScreen,\n  };\n\n  const ScreenComponent = defaultScreenComponents[currentScreen] ?? screenComponentMap[currentScreen];\n\n  return (\n    <MainContainer theme={theme} displayWatermark={displayWatermark}>\n      <Logo appLogo={options.logo} orgLogo={orgLogo} />\n      <ScreenComponent />\n    </MainContainer>\n  );\n};\n\nexport default AppContainer;\n","import { AuthFlowType, RedirectURLType, StytchProjectConfigurationInput } from '@stytch/core/public';\nimport React, { useEffect, useMemo, useState } from 'react';\nimport { OverrideProperties } from 'type-fest';\n\nimport { messages } from '../../messages/b2b/en';\nimport { B2BSDKConfig, StytchB2BExtendedLoginConfig } from '../../types';\nimport { readB2BInternals } from '../../utils/internal';\nimport { I18nProviderWrapper } from '../components/atoms/I18nProviderWrapper';\nimport { PresentationContext, usePresentationWithDefault } from '../components/PresentationConfig';\nimport Container from './Container';\nimport { DEFAULT_STATE, GlobalContextProvider } from './GlobalContextProvider';\nimport { AppScreens } from './types/AppScreens';\nimport { AppState } from './types/AppState';\n\nexport type InternalSDKConfig<TProjectConfiguration extends StytchProjectConfigurationInput> = OverrideProperties<\n  B2BSDKConfig<TProjectConfiguration>,\n  { config: StytchB2BExtendedLoginConfig }\n>;\n\nexport const InternalAppContainer = <TProjectConfiguration extends StytchProjectConfigurationInput>({\n  client,\n  presentation,\n  callbacks,\n  config,\n  strings,\n}: InternalSDKConfig<TProjectConfiguration>) => {\n  /**\n   * Read the watermark out of sync storage, then read it out of async storage\n   */\n  const [displayWatermark, setDisplayWatermark] = useState(() => {\n    const { displayWatermark } = readB2BInternals(client).bootstrap.getSync();\n    return displayWatermark;\n  });\n\n  useEffect(() => {\n    readB2BInternals(client)\n      .bootstrap.getAsync()\n      .then((data) => {\n        readB2BInternals(client).networkClient.logEvent({\n          name: 'render_b2b_login_screen',\n          details: { options: config, bootstrap: data },\n        });\n        setDisplayWatermark(data.displayWatermark);\n      });\n    // eslint-disable-next-line react-hooks/exhaustive-deps -- SDK-1354\n  }, [client]);\n\n  const getRedirectTypeFromUrl = () => {\n    const url = new URL(window.location.href);\n    const redirectType = url.searchParams.get('stytch_redirect_type');\n\n    return redirectType;\n  };\n\n  const redirectType = getRedirectTypeFromUrl();\n  const authFlowType =\n    redirectType === RedirectURLType.ResetPassword ? AuthFlowType.PasswordReset : config.authFlowType;\n\n  const initialState: AppState = {\n    ...DEFAULT_STATE,\n    screen: authFlowType === AuthFlowType.PasswordReset ? AppScreens.PasswordResetForm : AppScreens.Main,\n    flowState: {\n      ...DEFAULT_STATE.flowState,\n      type: authFlowType,\n    },\n  };\n\n  const configWithDefaults = useMemo(\n    () => ({\n      ...config,\n      // While `sessionOptions` is required in the types, we still want to handle the error gracefully if it's not provided.\n      // We set it to an empty object here so that future checks for `sessionOptions.sessionDurationMinutes` throw a `can't read property of undefined` error,\n      // and instead throw an error regarding a missing `sessionDurationMinutes` error from the headless client.\n      sessionOptions: config.sessionOptions ?? {},\n    }),\n    [config],\n  );\n\n  const presentationValue = usePresentationWithDefault(\n    presentation,\n    displayWatermark,\n    configWithDefaults,\n    'B2BProduct',\n  );\n\n  return (\n    <GlobalContextProvider\n      client={client}\n      callbacks={callbacks}\n      config={configWithDefaults}\n      initialState={initialState}\n    >\n      <PresentationContext.Provider value={presentationValue}>\n        <I18nProviderWrapper messages={messages} overrides={strings}>\n          <Container />\n        </I18nProviderWrapper>\n      </PresentationContext.Provider>\n    </GlobalContextProvider>\n  );\n};\n","import { Member } from '@stytch/core/public';\nimport { useSyncExternalStore } from 'react';\n\nimport { useStytch } from '../GlobalContextProvider';\n\n// useStytchMember is a very lightweight copy-pasta of the hook from stytch-react\n// If we end up calling this in several places, consider hoisting to global context\nexport const useStytchMember = (): Member | null => {\n  const stytch = useStytch();\n  return useSyncExternalStore(stytch.onStateChange, () => stytch.self.getSync());\n};\n","import { useLingui } from '@lingui/react/macro';\nimport { NoCurrentSessionError } from '@stytch/core/public';\nimport React, { ReactNode, useEffect, useRef, useState } from 'react';\n\nimport { AuthTokenParams } from '../../../types';\nimport { OAuthAuthorizeParams, OAuthLogoutParams, parseIDPParams } from '../../../utils/idpHelpers';\nimport { ErrorDisplay } from '../../components/molecules/ErrorScreen';\nimport { LoadingScreen } from '../../components/molecules/Loading';\nimport MainContainer from '../../components/molecules/MainContainer';\nimport { IDPConsent, useIDPState } from '../../components/organisms/IDPConsent';\nimport { useTrustedAuthTokenParams } from '../../components/organisms/IDPContextProvider';\nimport { IDPLogout, useLogoutState } from '../../components/organisms/IDPLogout';\nimport { usePresentation } from '../../components/PresentationConfig';\nimport { useErrorCallback, useEventCallback, useStytch } from '../GlobalContextProvider';\nimport { useStytchMember } from '../hooks/useStytchMember';\nimport { useBootstrap } from '../utils';\n\nconst IDPConsentScreenImpl = ({\n  initialError,\n  initialParams,\n}: {\n  initialError: string | null;\n  initialParams: OAuthAuthorizeParams;\n}) => {\n  const stytchClient = useStytch();\n  const onError = useErrorCallback();\n  const onEvent = useEventCallback();\n  const { oauthAuthorizeStart, oauthAuthorizeSubmit } = stytchClient.idp;\n\n  // TODO: Consumer and B2B Bootstrap hooks should return same shape\n  const bootstrap = useBootstrap();\n\n  const idpConsentState = useIDPState({\n    initialError,\n    initialParams,\n    oauthAuthorizeStart,\n    oauthAuthorizeSubmit,\n    onError,\n    onEvent,\n  });\n\n  return <IDPConsent bootstrap={bootstrap} bootstrapNotLoaded={false} {...idpConsentState} />;\n};\n\nconst IDPLogoutScreenImpl = ({\n  initialError,\n  initialParams,\n  navigate,\n}: {\n  initialError: string | null;\n  initialParams: OAuthLogoutParams;\n  navigate?: (href: string) => void;\n}) => {\n  const stytchClient = useStytch();\n  const onError = useErrorCallback();\n  const { oauthLogoutStart } = stytchClient.idp;\n  const revokeSession = () => stytchClient.session.revoke({ forceClear: true });\n\n  const bootstrap = useBootstrap();\n  const idpLogoutState = useLogoutState({\n    initialError,\n    initialParams,\n    oauthLogoutStart,\n    revokeSession,\n    onError,\n    navigate,\n  });\n\n  return <IDPLogout {...idpLogoutState} bootstrap={bootstrap} bootstrapNotLoaded={false} />;\n};\n\nexport const IDPConsentScreen = ({\n  searchParams = window.location.search,\n  navigate,\n}: {\n  searchParams?: string;\n  navigate?: (href: string) => void;\n} = {}) => {\n  // Preserve the URL Params seen on first render - even if they change later\n  const [{ flow, error }] = useState(parseIDPParams(searchParams));\n  const { theme, displayWatermark } = usePresentation();\n\n  let content;\n  if (flow.type === 'Authorize') {\n    content = (\n      <EnsureMemberIsLoggedIn>\n        <IDPConsentScreenImpl initialError={error} initialParams={flow.params} />\n      </EnsureMemberIsLoggedIn>\n    );\n  } else if (flow.type === 'Logout') {\n    content = <IDPLogoutScreenImpl initialError={error} initialParams={flow.params} navigate={navigate} />;\n  }\n\n  return (\n    <MainContainer theme={theme} displayWatermark={displayWatermark}>\n      {content}\n    </MainContainer>\n  );\n};\n\nconst EnsureMemberIsLoggedIn = ({ children }: { children: ReactNode }) => {\n  const { t } = useLingui();\n  const member = useStytchMember();\n  const onError = useErrorCallback();\n  const onErrorRef = useRef(onError);\n  useEffect(() => {\n    onErrorRef.current = onError;\n  }, [onError]);\n\n  // if a trusted auth token is provided, attest it before rendering the consent screen\n  const stytchClient = useStytch();\n  const authParams = useTrustedAuthTokenParams();\n  const [attesting, setAttesting] = useState(false);\n  const [attested, setAttested] = useState(false);\n\n  useEffect(() => {\n    if (attesting || attested) return;\n\n    const attestTrustedToken = async (authParams: AuthTokenParams | undefined): Promise<void> => {\n      if (authParams?.trustedAuthToken && authParams?.tokenProfileID) {\n        setAttesting(true);\n        const token = authParams.trustedAuthToken;\n        const profile_id = authParams.tokenProfileID;\n\n        // revoke the current session before calling attest\n        // store the member to refer to its organization_id later\n        const member = stytchClient.self.getSync();\n        if (member) {\n          await stytchClient.session.revoke();\n        }\n        try {\n          await stytchClient.session.attest({\n            token,\n            profile_id,\n            organization_id: member?.organization_id,\n            session_duration_minutes: 60,\n          });\n        } catch (error) {\n          onErrorRef.current(error as Error);\n        } finally {\n          setAttesting(false);\n          setAttested(true);\n        }\n      }\n      // set this either way to short-circuit the useEffect below\n      setAttested(true);\n    };\n    attestTrustedToken(authParams);\n  }, [authParams, attesting, attested, stytchClient]);\n\n  useEffect(() => {\n    if (member) return;\n    onErrorRef.current(new NoCurrentSessionError());\n  }, [member]);\n\n  if (attesting) {\n    return <LoadingScreen />;\n  } else if (member) {\n    return children;\n  } else {\n    return (\n      <ErrorDisplay\n        text={t({\n          id: 'idpConsent.noActiveSession',\n          message: 'No active session detected. Please log in to continue.',\n        })}\n      />\n    );\n  }\n};\n","import { logger, RUN_IN_DEV } from '@stytch/core';\nimport { StytchProjectConfigurationInput } from '@stytch/core/public';\nimport React, { useEffect } from 'react';\n\nimport { messages } from '../../messages/b2b/en';\nimport { B2BIDPSDKConfig, B2BSDKConfig, DeprecatedSDKConfig, StytchB2BExtendedLoginConfig } from '../../types';\nimport { readB2BInternals } from '../../utils/internal';\nimport { I18nProviderWrapper } from '../components/atoms/I18nProviderWrapper';\nimport { IDPContextProvider } from '../components/organisms/IDPContextProvider';\nimport { PresentationContext, usePresentationWithDefault } from '../components/PresentationConfig';\nimport * as B2BProducts from './B2BProducts';\nimport { DEFAULT_STATE, GlobalContextProvider } from './GlobalContextProvider';\nimport { InternalAppContainer } from './InternalAppContainer';\nimport { IDPConsentScreen } from './screens/IDPConsent';\n\n/**\n * Wrapper to add default organizationProducts value. This is done to preserve the ability for a future\n * component that doesn't do this, allowing B2B products to be properly tree-shaken (which is also why this is currently\n * in a completely different file)\n */\nexport const AppContainer = ({\n  config,\n  styles,\n  ...props\n}: B2BSDKConfig<StytchProjectConfigurationInput> & DeprecatedSDKConfig) => {\n  RUN_IN_DEV(() => {\n    if (styles) {\n      logger.error(\n        'styles is deprecated and has no effect. Use the presentation prop instead.\\n' +\n          'See https://staging.stytch.com/docs/api-reference/b2b/frontend-sdks/react/upgrade-guide',\n      );\n    }\n  });\n\n  const internalConfig = {\n    ...config,\n    organizationProducts: Object.values(B2BProducts),\n  };\n\n  return <InternalAppContainer config={internalConfig} {...props}></InternalAppContainer>;\n};\n\nexport const B2BIDPContainer = <TProjectConfiguration extends StytchProjectConfigurationInput>({\n  client,\n  presentation,\n  callbacks,\n  strings,\n  getIDPConsentManifest,\n  trustedAuthTokenParams,\n  styles,\n}: B2BIDPSDKConfig<TProjectConfiguration> & DeprecatedSDKConfig) => {\n  const presentationValue = usePresentationWithDefault(presentation, false, { products: [] });\n\n  useEffect(() => {\n    readB2BInternals(client)\n      .bootstrap.getAsync()\n      .then((data) => {\n        readB2BInternals(client).networkClient.logEvent({\n          name: 'render_b2b_idp_screen',\n          details: { bootstrap: data },\n        });\n      });\n  }, [client]);\n\n  RUN_IN_DEV(() => {\n    if (styles) {\n      logger.error(\n        'styles is deprecated and has no effect. Use the presentation prop instead.\\n' +\n          'See https://staging.stytch.com/docs/api-reference/b2b/frontend-sdks/react/upgrade-guide',\n      );\n    }\n  });\n\n  return (\n    <GlobalContextProvider\n      client={client}\n      config={{} as StytchB2BExtendedLoginConfig}\n      callbacks={callbacks}\n      initialState={DEFAULT_STATE}\n    >\n      <IDPContextProvider consentManifestGenerator={getIDPConsentManifest} authTokenParams={trustedAuthTokenParams}>\n        <PresentationContext.Provider value={presentationValue}>\n          <I18nProviderWrapper messages={messages} overrides={strings}>\n            <IDPConsentScreen />\n          </I18nProviderWrapper>\n        </PresentationContext.Provider>\n      </IDPContextProvider>\n    </GlobalContextProvider>\n  );\n};\n","import { StytchProjectConfigurationInput } from '@stytch/core/public';\nimport { injectCssIntoNode, injectGlobalStyle } from '@stytch/internal-style-injector';\nimport React, { ComponentType, useLayoutEffect, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { StytchB2BClient } from '../../../b2b/StytchB2BClient';\nimport { PresentationConfig, StytchB2BUIConfig } from '../../../types';\nimport { useIsMounted__INTERNAL, useStytchB2BClient } from '../b2b/StytchB2BContext';\nimport { noProviderError, serverRenderError } from '../utils/errors';\nimport { invariant } from '../utils/invariant';\n\n// Mirrors createB2CComponent and createWebComponent\nexport function createB2BComponent<\n  Props extends {\n    client: StytchB2BClient<TProjectConfiguration>;\n    config?: StytchB2BUIConfig;\n    presentation?: PresentationConfig;\n  },\n  TProjectConfiguration extends StytchProjectConfigurationInput = Stytch.DefaultProjectConfiguration,\n>(name: string, Component: ComponentType<Props>) {\n  const Wrapped: ComponentType<Omit<Props, 'client'>> = (props) => {\n    serverRenderError(name);\n    invariant(useIsMounted__INTERNAL(), noProviderError(`<${name} />`));\n\n    const client = useStytchB2BClient<TProjectConfiguration>();\n\n    const shadow = props.presentation?.options?.enableShadowDOM ?? props.config?.enableShadowDOM;\n    const root = useRef<HTMLDivElement>(null);\n    const [mountPoint, setMountPoint] = useState<HTMLDivElement>();\n\n    useLayoutEffect(() => {\n      if (shadow) {\n        if (!root.current || root.current.shadowRoot) return;\n        const shadowRoot = root.current.attachShadow({ mode: 'open' });\n        const mountPoint = document.createElement('div');\n\n        shadowRoot.appendChild(injectCssIntoNode());\n        shadowRoot.appendChild(mountPoint);\n\n        setMountPoint(mountPoint);\n      } else {\n        injectGlobalStyle();\n      }\n    }, [shadow]);\n\n    const element = <Component {...(props as Props)} client={client} />;\n    if (shadow) {\n      return <div ref={root}>{mountPoint && createPortal(element, mountPoint)}</div>;\n    } else {\n      return element;\n    }\n  };\n\n  Wrapped.displayName = name;\n  return Wrapped;\n}\n","import { AuthTokenParams, B2BIDPConsentManifestGenerator } from '../../../types';\nimport { B2BIDPContainer } from '../../b2b/App';\nimport { createB2BComponent } from '../bindings/createB2BComponent';\nimport { StytchB2BProps } from './Stytch';\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","import { Callbacks, StringsOptions, StytchProjectConfigurationInput } from '@stytch/core/public';\n\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","'use client';\n\nimport { AuthTokenParams } from '@stytch/web';\nimport { B2BIDPConsentManifestGenerator, B2BSDKConfig, StytchProjectConfigurationInput } from '@stytch/web/b2b';\nimport {\n  B2BIdentityProvider as B2BIdentityProviderComponent,\n  StytchB2B as StytchB2BComponent,\n} from '@stytch/web/react/b2b';\n\nimport { withSsrSafe } from '../bindings/withSsrSafe';\n\ntype B2BIdentityProviderProps<TProjectConfiguration extends StytchProjectConfigurationInput> = Pick<\n  B2BSDKConfig<TProjectConfiguration>,\n  'presentation' | 'callbacks' | 'strings'\n> & {\n  /**\n   * Optional {@link B2BIDPConsentManifestGenerator} to customize the consent screen.\n   */\n  getIDPConsentManifest?: B2BIDPConsentManifestGenerator;\n\n  /**\n   * Optional {@link AuthTokenParams} to provide a trusted auth token to provide for attestation prior to running OAuth flow.\n   */\n  trustedAuthTokenParams?: AuthTokenParams;\n};\n\nexport const StytchB2B = /* @__PURE__ */ withSsrSafe(StytchB2BComponent);\nexport const B2BIdentityProvider =\n  /* @__PURE__ */\n  withSsrSafe<B2BIdentityProviderProps<StytchProjectConfigurationInput>>(B2BIdentityProviderComponent);\n","import { createStytchB2BClient } from '@stytch/web/b2b/headless';\n\n/**\n * @deprecated - use {@link createStytchB2BClient} instead\n */\nexport const createStytchB2BUIClient = createStytchB2BClient;\n\nexport * from './components';\nexport type {\n  B2BIDPConsentManifestGenerator,\n  B2BIDPSDKConfig,\n  B2BSDKConfig,\n  DeprecatedSDKConfig,\n  Strings,\n  StytchB2BUIConfig,\n} from '@stytch/web/b2b';\nexport { B2BProducts } from '@stytch/web/b2b';\nexport * from '@stytch/web/b2b/headless';\nexport * from '@stytch/web/common';\nexport type { StytchB2BProviderProps } from '@stytch/web/react/b2b';\nexport type { B2BIdentityProviderProps, StytchB2BProps } from '@stytch/web/react/b2b';\nexport {\n  StytchB2BProvider,\n  useStytchB2BClient,\n  useStytchIsAuthorized,\n  useStytchMember,\n  useStytchMemberSession,\n  useStytchOrganization,\n  withStytchB2BClient,\n  withStytchMember,\n  withStytchMemberSession,\n  withStytchOrganization,\n  withStytchPermissions,\n} from '@stytch/web/react/b2b';\n"],"names":["SSOIcon","size","DEFAULT_ICON_SIZE","props","React","svg","width","height","viewBox","xmlns","g","clipPath","path","d","fill","stroke","strokeWidth","defs","id","rect","transform","HubspotIcon","fillRule","clipRule","OktaIcon","className","_styles","darkInvert","messages","_messages","getParamsFromB2BOAuthProviderConfig","provider","providerType","oneTap","customScopes","providerParams","cancelOnTapOutside","undefined","type","B2BOAuthProviders","Google","one_tap","cancel_on_tap_outside","useSWRConfig","useRef","useStateWithDeps","UNDEFINED","useCallback","serialize","mergeObjects","getTimestamp","useIsomorphicLayoutEffect","withMiddleware","useSWR","KeyToStytchEventMap","StytchEventType","B2BMagicLinkAuthenticate","B2BSSOAuthenticate","B2BSSODiscoverConnections","B2BMagicLinkDiscoveryAuthenticate","B2BDiscoveryOrganizationsCreate","B2BDiscoveryIntermediateSessionExchange","B2BMagicLinkEmailLoginOrSignup","B2BMagicLinkEmailDiscoverySend","B2BOAuthAuthenticate","B2BOAuthDiscoveryAuthenticate","B2BSMSOTPSend","B2BSMSOTPAuthenticate","B2BTOTPCreate","B2BTOTPAuthenticate","B2BRecoveryCodesRecover","B2BImpersonationAuthenticate","B2BOTPsEmailAuthenticate","B2BOTPsEmailDiscoveryAuthenticate","B2BOTPsEmailDiscoverySend","B2BOTPsEmailLoginOrSignup","B2BOrganizationsGetBySlug","getStytchEventByKey","key","useMutate","fetcher","options","onEvent","useEventCallback","onError","useErrorCallback","result","useSWRMutation","throwOnError","onSuccess","data","config","eventType","error","isMutating","useExtractSlug","state","dispatch","useGlobalReducer","pattern","setPattern","useState","useConfig","stytchClient","useStytch","slug","organizationSlug","extractFromPattern","window","location","href","trigger","isSearching","_","arg","organization","getBySlug","organization_slug","errorType","ErrorType","Organization","canGoBack","useEffect","readB2BInternals","bootstrap","getAsync","then","slugPattern","flowState","screen","AppScreens","Main","AuthFlowType","resultPending","useBootstrap","setBootstrap","getSync","onAuthenticateSuccess","response","includedMfaMethods","mfaProductInclude","onDiscoveryAuthenticateSuccess","email","email_address","discoveredOrganizations","discovered_organizations","url","URL","search","currentUrl","toString","trim","regexPattern","replace","regex","RegExp","match","hasProduct","products","product","some","p","useProductComponents","organizationProducts","screenType","useMemo","map","Object","assign","useIsOnlyFloatingOneTap","isOnlyFloatingOneTap","oauthProvider","oauthOptions","providers","isGoogleOneTap","length","useLastUsedAuthMethod","stytch","publicToken","lastUsedMethod","safeLocalStorage","getItem","setLastUsedMethod","method","setItem","providerInfo","messageDescriptor","Microsoft","HubSpot","Slack","GitHub","OAuthB2BButton","loginRedirectUrl","signupRedirectUrl","discoveryRedirectUrl","useLingui","presentation","usePresentation","iconRegistry","getButtonId","label","icon","Icon","onButtonClick","providerClient","oauth","start","login_redirect_url","signup_redirect_url","custom_scopes","organization_id","provider_params","discovery","discovery_redirect_url","Button","onClick","variant","B2BGoogleOneTap","oneTapError","setOneTapError","isMounted","useIsMounted","attemptToLoadOneTap","clientResult","createOneTapClient","success","reason","OneTapErrors","NoConfiguredOAuthClient","DefaultProviderNotAllowed","logger","client","current","oneTapCallback","createOnSuccessHandler","organizationId","signupRedirectURL","loginRedirectURL","redirectOnSuccess","Error","createOnDiscoverySuccessHandler","discoveryRedirectURL","renderResult","render","callback","style","position","OneTapPositions","floating","cancel","OriginNotAllowedForClient","InvalidOAuthClient","$client","catch","err","fallbackButton","fallbackWithLastUsed","LastUsed","DEV","ErrorMessages","oauthIcons","google","GoogleIcon","microsoft","MicrosoftIcon","hubspot","slack","SlackIcon","github","GithubIcon","ssoIcons","okta","emailIcons","gmail","GmailIcon","outlook","OutlookIcon","yahoo","YahooIcon","iconMap","SSOButton","connection","onStart","ssoOptions","connection_id","display_name","identity_provider","sso","iconName","useEmlDiscoverySend","magicLinks","send","emailMagicLinksOptions","login_template_id","loginTemplateId","locale","discovery_expiration_minutes","discoveryExpirationMinutes","EmailConfirmation","useEmlLoginOrSignup","loginOrSignup","signup_template_id","signupTemplateId","login_expiration_minutes","loginExpirationMinutes","signup_expiration_minutes","signupExpirationMinutes","e","useEmailDomain","emailDomains","setEmailDomains","domainHint","emailDomain","countdown","useCountdown","sendLoginOrSignupEml","isSendingLoginOrSignupEml","sendDiscoveryEml","isSendingDiscoveryEml","formState","emailState","userSuppliedEmail","goBack","resend","Discovery","isSubmitting","EmailConfirmationView","UsePasswordButton","handleUsePassword","productsToAuthMethods","emailMagicLinks","emailOtp","passwords","oauthProvidersToAuthMethods","authMethodsToProducts","fromEntries","entries","authMethod","oauthMethodsToOauthProviders","authMethodToProduct","allOauthProviders","values","flattenConfigToAuthMethods","oauthProviders","flatMap","filter","isTruthy","useOAuthProviderConfigs","useRestrictedAuthMethods","primaryAuthMethods","primary","hasPrimaryAuthMethods","restrictedAuthMethods","Set","auth_methods","allowed_auth_methods","useEffectiveAuthConfig","oauthProviderConfigs","flattenedConfiguredAuthMethods","authMethodsToShow","restrictedAuthMethodsInUiConfig","has","productIds","productId","find","oauthProviderSettings","DEFAULT_OTP_EXPIRATION_MS","getOtpCodeExpiration","Date","now","useEmailOtpDiscoverySend","_key","otps","emailOtpOptions","codeExpiration","useEmailOtpLoginOrSignup","JIT_PROVISIONING_ERRORS","useParseErrorMessage","org","organizationName","includes","error_type","getTranslatedError","EmailForm","showPasswordButton","emailInput","setEmailInput","passwordState","parseErrorMessage","enableEml","enableOtp","providedEmail","stytchEmlLoginOrSignup","emlError","emlIsMutating","stytchOtpLoginOrSignup","otpError","otpIsMutating","handleSubmit","preventDefault","EmailMethodSelection","history","Column","gap","loading","disabled","as","onSubmit","EmailInput","setEmail","hideLabel","organization_name","EmailDiscoveryForm","stytchEmlDiscoverySend","stytchOtpDiscoverySend","EmailMethodSelectionScreen","sendDiscoveryEmlError","reset","resetSendDiscoveryEml","sendDiscoveryOtp","isSendingDiscoveryOtp","sendDiscoveryOtpError","resetSendDiscoveryOtp","sendLoginOrSignupEmlError","resetSendLoginOrSignupEml","sendLoginOrSignupOtp","isSendingLoginOrSignupOtp","sendLoginOrSignupOtpError","resetSendLoginOrSignupOtp","isSending","handleChooseMethod","displayOptions","option","handleBack","Typography","ButtonColumn","ErrorText","EmailOTPEntryScreen","otpState","resendCountdown","emailOtpDiscovery","sendError","discoveryAuthenticate","otp","authenticate","code","emailAddress","sessionDurationMinutes","session_duration_minutes","isAuthenticatingAny","errorMessage","resetAll","resp","sessionOptions","clear","handleResendOTP","SentOTPEntry","expiration","getTime","formattedDestination","LoadingScreen","ResendOTPButton","resendOTP","usePasswordInput","password","setPassword","setErrorMessage","setIsSubmitting","submitPassword","DEFAULT_SESSION_DURATION_MINUTES","passwordOptions","B2BPasswordAuthenticate","submitDiscoveryPassword","B2BPasswordDiscoveryAuthenticate","emailEligibleForJITProvisioning","email_jit_provisioning","email_allowed_domains","split","pop","handleNonMemberReset","dataLayer","resetPasswordRedirectURL","PasswordResetVerifyConfirmation","PasswordsAuthenticate","EMAIL_REGEX","onGetHelp","PasswordForgotForm","PasswordInput","PasswordsEmailForm","parseErrorMessages","hideInput","setHideInput","searchManager","searchMember","member","PasswordsForgotForm","resetByEmailStart","reset_password_redirect_url","reset_password_expiration_minutes","resetPasswordExpirationMinutes","reset_password_template_id","resetPasswordTemplateId","verify_email_template_id","verifyEmailTemplateId","B2BPasswordResetByEmailStart","PasswordSetNewConfirmation","PasswordResetConfirmation","EmailActionLayout","header","description","Trans","message","components","bold","b","additionalActions","EmailProviderLink","emailProviderInfo","PasswordResetForm","useB2BBootstrap","resetToken","resetTokenType","parsed","parseAuthenticateUrl","token","tokenType","passwordError","setPasswordError","policy","updateStrengthCheck","debounce","strengthCheck","score","valid_password","zxcvbn_feedback","luds_feedback","strength_policy","breached_password","common","passwordInvalid","isPasswordBreached","passwordScore","passwordWarning","warning","passwordSuggestions","suggestions","missingCharacters","missing_characters","missingComplexity","missing_complexity","magic_links_token","clearStytchTokenParams","onPasswordChange","resetByEmail","password_reset_token","B2BPasswordResetByEmail","B2BDiscoveryPasswordReset","resetBySession","B2BPasswordResetBySession","LoggedIn","passwordInputProps","getNewPasswordProps","noop","PasswordError","PasswordSetNew","resendResetPassword","B2BPasswordDiscoveryResetStart","assertUnreachable","getSsoMethodKey","extractConnectionId","startsWith","slice","getButtonKey","button","getCustomScopesForProvider","oauthOptionsCustomScopes","currentCustomScopes","keys","getProviderParamsForProvider","oauthOptionsProviderParams","currentProviderParams","login_hint","SsoAndOAuthButtons","buttons","isDiscoveryFlow","authButtons","MainScreenComponent","OAuthButtons","SSOButtons","sso_active_connections","reorderedButtons","foundLastUsedOAuth","arrayUtils","moveToFront","createOAuthButton","providerProps","index","buttonComponent","SSODiscoveryEmail","useSsoDiscoveryConnection","discoverConnections","setError","isLoading","setIsLoading","tryGetConnections","connections","extractErrorMessage","SSODiscoveryFallback","setSlug","lookupOrganization","handleTryAnotherMethod","Input","value","onChange","target","placeholder","availableConnections","lastUsedSso","foundLastUsed","SSODiscoveryMenu","ssoDiscoveryState","EmailFormWithoutPassword","EmailFormWithPassword","EmailDiscoveryFormWithoutPassword","EmailDiscoveryFormWithPassword","screens","mainScreen","PasswordEmailCombined","PasswordEmailCombinedDiscovery","icons","EmailOTPEntry","ssoAndOAuthButtons","PasswordEmailForm","PasswordAuthenticate","ConfirmationScreen","useMountEffect","AuthenticateFlowComplete","Confirmation","Arrow","styles","arrow","OrganizationRow","action","organization_logo_url","logo","img","src","alt","div","role","Array","from","classNames","organizationRow","hoverTriggerClass","buttonClassNames","left","nameText","VerticalTransition","rootClassName","right","rightContent","Badge","secondary","isJoinViaJitType","DiscoverNoOrganizations","createOrganizationEnabled","stytchCreateOrganization","isCreateLoading","organizations","create","OrganizationDiscoveryClaimedDomain","Default","shouldAutomaticallyCreateOrganization","directCreateOrganizationForNoMembership","discoveryState","disableCreateOrganization","shouldAllowDirectLoginToOrganization","status","activeOrganizations","membership","hasBlockingConditions","ignoreInvites","ignoreJitProvisioning","shouldDirectLoginConfigEnabled","directLoginForSingleMembership","isExchangeInProgress","directLoginOrganization","handleDiscoveryOrganizationStart","discoveredOrganization","primary_required","allowedAuthMethods","sso_default_connection_id","startSso","stytchDiscoveryExchange","connectionId","intermediateSessions","exchange","LoggingInScreen","organizationButtons","createOrganizationButton","goBackButton","top","bottom","isButtonsComponent","component","generateProductComponentsOrdering","flowStateType","productsSet","displayEmailAndPasswordsTogether","emailPasswordCombinedComponent","productComponentsSet","reduce","add","isSsoValid","groups","i","arr","prevComponent","shouldJoinPreviousGroup","push","prevGroup","Divider","isButtonGroup","group","every","MainScreen","emailVerified","productComponentsOrdering","mainScreenComponents","title","PasswordReset","showVerifyEmailCopy","hideHeaderText","align","Component","mfaOptions","B2BMFAProducts","totp","TOTPEnrollmentQRCode","smsOtp","SMSOTPEnrollment","MFAEnrollmentSelectionScreen","mfaProductOrder","organizationMfaOptionsSupported","mfa","primaryInfo","handleNavigate","optionsToDisplay","getEnabledMethods","allMethods","B2B_MFA_METHODS","orgSupportedMethods","uiIncludedMethods","delete","RecoveryCodeEntryScreen","memberId","recoveryCode","recoveryCodes","recover","recovery_code","member_id","setRecoveryCode","input","required","autoComplete","spellCheck","CodeContainer","children","container","RecoveryCodeSaveScreen","enrollment","handleContinue","fileContent","newline","navigator","platform","blob","Blob","join","createObjectURL","filename","copied","setCopied","useTimedBoolean","handleCodesCopy","clipboard","writeText","errorToast","maxCodeLength","Math","max","TextColumn","body","font","ul","codes","li","ButtonAnchor","download","triggered","DEFAULT_COUNTRY_CODE","InvalidPhoneNumberError","StytchSDKError","SMSOTPEnrollScreen","smsOtpOptions","enrolledNumber","countryCode","setCountryCode","phoneNumber","setPhoneNumber","parsePhoneNumber","getExampleNumber","getPhoneNumberProps","clientsideServices","sendSms","parsedNumber","sms","mfa_phone_number","formattedPhoneNumber","COUNTRIES_LIST","formatNumberToIncludeCountryCode","country","isValid","number","PhoneInput","setCountry","phone","setPhone","SMSOTPEntryScreen","isEnrolling","enrolledMfaMethods","memberPhoneNumber","isAuthenticating","authenticateError","shouldCreate","handleFormatNumber","parsedPhoneNumber","national","formatNumber","isTotpAvailable","enrolledMethod","handleSwitchToTotp","TOTPEntry","resendButton","switchToTotpButton","backButton","CHUNK_SIZE","TOTPEnrollManualScreen","secret","displaySecret","toLowerCase","secretChunked","Boolean","codeRef","columnCount","useColumnCount","handleCodeCopy","selection","getSelection","empty","range","document","createRange","selectNodeContents","addRange","codeContainer","ref","part","span","chunksCount","setColumnCount","useLayoutEffect","updateRowCount","containerWidth","clientWidth","spanWidth","querySelectorAll","elem","fittedColumns","floor","fittedColumnsWithGaps","rows","ceil","evenColumns","ResizeObserver","observer","observe","disconnect","TOTPEnrollQRScreen","revalidateOnFocus","revalidateOnReconnect","revalidateIfStale","handleShowManualCode","qr_code","qr","TOTPEntryScreen","isSmsOtpAvailable","handleSwitchToRecoveryCode","RecoveryCodeEntry","handleSwitchToSms","SMSOTPEntry","OTPEntry","instruction","helperContent","authTokenConfig","mutationKey","defaultError","EmailMagicLink","discovery_oauth","multi_tenant_magic_links","multi_tenant_impersonation","errorTypeMap","ad_blocker_detected","AdBlockerDetected","AppContainer","triggerError","triggerEvent","displayWatermark","theme","currentScreen","screenComponentMap","handleStytchAPIError","defaultErrorType","extractErrorType","isTokenAuthLoading","setIsTokenAuthLoading","mutate","handled","authenticateByUrl","event","finally","MainContainer","orgLogo","defaultScreenComponents","ErrorScreen","MFAEnrollmentSelection","RecoveryCodeSave","TOTPEnrollmentManual","ScreenComponent","Logo","appLogo","InternalAppContainer","callbacks","strings","setDisplayWatermark","networkClient","logEvent","name","details","getRedirectTypeFromUrl","redirectType","searchParams","get","authFlowType","RedirectURLType","ResetPassword","initialState","DEFAULT_STATE","configWithDefaults","presentationValue","usePresentationWithDefault","GlobalContextProvider","PresentationContext","Provider","I18nProviderWrapper","overrides","Container","useStytchMember","useSyncExternalStore","onStateChange","self","IDPConsentScreenImpl","initialError","initialParams","oauthAuthorizeStart","oauthAuthorizeSubmit","idp","idpConsentState","useIDPState","IDPConsent","bootstrapNotLoaded","IDPLogoutScreenImpl","navigate","oauthLogoutStart","revokeSession","session","revoke","forceClear","idpLogoutState","useLogoutState","IDPLogout","IDPConsentScreen","flow","parseIDPParams","content","EnsureMemberIsLoggedIn","params","onErrorRef","authParams","useTrustedAuthTokenParams","attesting","setAttesting","attested","setAttested","attestTrustedToken","trustedAuthToken","tokenProfileID","profile_id","attest","NoCurrentSessionError","ErrorDisplay","text","RUN_IN_DEV","internalConfig","B2BProducts","B2BIDPContainer","getIDPConsentManifest","trustedAuthTokenParams","IDPContextProvider","consentManifestGenerator","authTokenParams","createB2BComponent","Wrapped","serverRenderError","invariant","useIsMounted__INTERNAL","noProviderError","useStytchB2BClient","shadow","enableShadowDOM","root","mountPoint","setMountPoint","shadowRoot","attachShadow","mode","createElement","appendChild","injectCssIntoNode","injectGlobalStyle","element","createPortal","displayName","B2BIdentityProvider","StytchB2B","withSsrSafe","StytchB2BComponent","B2BIdentityProviderComponent","createStytchB2BUIClient","createStytchB2BClient"],"mappings":"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","x_google_ignoreList":[5]}