@clerk/elements 0.23.58 → 0.23.59

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/react/common/index.ts","../src/react/common/form/field.tsx","../src/internals/machines/form/form.context.ts","../src/internals/machines/form/form.machine.ts","../src/internals/errors/index.ts","../src/utils/safe-access.ts","../src/internals/utils/inspector/index.ts","../src/react/common/form/hooks/use-field-feedback.ts","../src/react/common/form/hooks/use-field.ts","../src/react/common/form/hooks/use-field-context.ts","../src/react/common/form/types.ts","../src/react/common/form/hooks/use-field-state.ts","../src/react/common/form/hooks/use-form.ts","../src/react/common/form/hooks/use-global-errors.ts","../src/react/common/form/hooks/use-input.tsx","../src/react/hooks/use-password.hook.ts","../src/react/utils/generate-password-error-text.ts","../src/react/common/form/otp.tsx","../src/react/common/form/utils/enrich-field-state.ts","../src/react/common/form/utils/determine-input-type-from-name.ts","../src/react/common/form/hooks/use-previous.ts","../src/react/common/form/hooks/use-validity-state-context.ts","../src/react/common/form/field-error.tsx","../src/react/utils/is-react-fragment.ts","../src/react/common/form/field-state.tsx","../src/react/common/form/form.tsx","../src/react/common/form/global-error.tsx","../src/react/common/form/input.tsx","../src/react/utils/create-context-from-actor-ref.ts","../src/react/sign-in/context/router.context.ts","../src/react/sign-in/context/sign-in-strategy.context.ts","../src/react/sign-in/context/strategies.context.ts","../src/react/common/form/label.tsx","../src/react/common/form/submit.tsx","../src/react/common/connections.tsx","../src/react/hooks/use-active-tags.hook.ts","../src/react/hooks/use-third-party-provider.hook.ts","../src/utils/third-party-strategies.ts","../src/utils/clerk-js.ts","../src/react/sign-up/context/router.context.ts","../src/react/common/loading.tsx","../src/react/hooks/use-loading.hook.ts","../src/react/sign-in/step.tsx","../src/react/sign-in/choose-session/choose-session.tsx","../src/react/utils/create-context-for-dom-validation.ts","../src/react/utils/is-valid-component-type.ts","../src/react/sign-in/choose-session/choose-session.hooks.ts","../src/react/sign-in/choose-strategy.tsx","../src/internals/machines/sign-in/verification.machine.ts","../src/internals/constants/index.ts","../src/internals/machines/shared/shared.actions.ts","../src/internals/machines/sign-in/utils/starting-factors.ts","../src/internals/machines/utils/assert.ts","../src/internals/machines/sign-in/verification.types.ts","../src/internals/machines/sign-in/router.machine.ts","../src/internals/machines/third-party/third-party.actors.ts","../src/internals/machines/utils/clerkjs.ts","../src/internals/machines/third-party/third-party.machine.ts","../src/internals/machines/utils/next.ts","../src/internals/machines/sign-in/reset-password.machine.ts","../src/internals/machines/sign-in/start.machine.ts","../src/internals/machines/utils/formatters.ts","../src/internals/machines/sign-in/router.selectors.ts","../src/internals/machines/sign-in/router.types.ts","../src/react/sign-in/reset-password.tsx","../src/react/sign-in/sso-callback.tsx","../src/react/sign-in/start.tsx","../src/react/sign-in/verifications.tsx","../src/internals/machines/utils/strategies.ts","../src/react/sign-up/step.tsx","../src/react/sign-up/continue.tsx","../src/react/sign-up/restricted.tsx","../src/react/sign-up/start.tsx","../src/react/sign-up/verifications.tsx","../src/react/utils/map-scope-to-strategy.ts","../src/react/common/link.tsx"],"sourcesContent":["// Mark as a client-only package. This will error if you try to import it in a React Server Component.\nimport 'client-only';\n\nexport { Field, FieldError, FieldState, GlobalError, Input, Label, Submit } from '~/react/common/form';\nexport { Connection, Icon } from '~/react/common/connections';\nexport { Loading } from '~/react/common/loading';\nexport { Link } from '~/react/common/link';\n\nexport type {\n FormFieldErrorProps,\n FormErrorProps,\n FormErrorRenderProps,\n FormFieldProps,\n FormGlobalErrorProps,\n FormInputProps,\n FormProps,\n FormSubmitProps,\n} from '~/react/common/form';\nexport type { ConnectionProps, IconProps } from '~/react/common/connections';\nexport type { OTPInputSegmentStatus } from '~/react/common/form/otp';\n","import type { Autocomplete } from '@clerk/types';\nimport type { FormFieldProps as RadixFormFieldProps } from '@radix-ui/react-form';\nimport { Field as RadixField, ValidityState as RadixValidityState } from '@radix-ui/react-form';\nimport * as React from 'react';\n\nimport { useFormStore } from '~/internals/machines/form/form.context';\n\nimport { FieldContext, useField, useFieldState, ValidityStateContext } from './hooks';\nimport type { ClerkFieldId, FieldStates } from './types';\nimport { enrichFieldState } from './utils';\n\nconst DISPLAY_NAME = 'ClerkElementsField';\nconst DISPLAY_NAME_INNER = 'ClerkElementsFieldInner';\n\ntype FormFieldElement = React.ElementRef<typeof RadixField>;\nexport type FormFieldProps = Omit<RadixFormFieldProps, 'children'> & {\n name: Autocomplete<ClerkFieldId>;\n alwaysShow?: boolean;\n children: React.ReactNode | ((state: FieldStates) => React.ReactNode);\n};\n\n/**\n * Field is used to associate its child elements with a specific input. It automatically handles unique ID generation and associating the contained label and input elements.\n *\n * @param name - Give your `<Field>` a unique name inside the current form. If you choose one of the following names Clerk Elements will automatically set the correct type on the `<input />` element: `emailAddress`, `password`, `phoneNumber`, and `code`.\n * @param alwaysShow - Optional. When `true`, the field will always be renydered, regardless of its state. By default, a field is hidden if it's optional or if it's a filled-out required field.\n * @param {Function} children - A function that receives `state` as an argument. `state` is a union of `\"success\" | \"error\" | \"idle\" | \"warning\" | \"info\"`.\n *\n * @example\n * <Clerk.Field name=\"emailAddress\">\n * <Clerk.Label>Email</Clerk.Label>\n * <Clerk.Input />\n * </Clerk.Field>\n *\n * @example\n * <Clerk.Field name=\"emailAddress\">\n * {(fieldState) => (\n * <Clerk.Label>Email</Clerk.Label>\n * <Clerk.Input className={`text-${fieldState}`} />\n * )}\n * </Clerk.Field>\n */\nexport const Field = React.forwardRef<FormFieldElement, FormFieldProps>(({ alwaysShow, ...rest }, forwardedRef) => {\n const formRef = useFormStore();\n const formCtx = formRef.getSnapshot().context;\n // A field is marked as hidden if it's optional OR if it's a filled-out required field\n const isHiddenField = formCtx.progressive && Boolean(formCtx.hidden?.has(rest.name));\n\n // Only alwaysShow={true} should force behavior to render the field, on `undefined` or alwaysShow={false} the isHiddenField logic should take over\n const shouldHide = alwaysShow ? false : isHiddenField;\n\n return shouldHide ? null : (\n <FieldContext.Provider value={{ name: rest.name }}>\n <FieldInner\n {...rest}\n ref={forwardedRef}\n />\n </FieldContext.Provider>\n );\n});\n\nField.displayName = DISPLAY_NAME;\n\nconst FieldInner = React.forwardRef<FormFieldElement, FormFieldProps>((props, forwardedRef) => {\n const { children, ...rest } = props;\n const field = useField({ name: rest.name });\n const { state: fieldState } = useFieldState({ name: rest.name });\n\n return (\n <RadixField\n {...field.props}\n {...rest}\n ref={forwardedRef}\n >\n <RadixValidityState>\n {validity => {\n const enrichedFieldState = enrichFieldState(validity, fieldState);\n\n return (\n <ValidityStateContext.Provider value={validity}>\n {typeof children === 'function' ? children(enrichedFieldState) : children}\n </ValidityStateContext.Provider>\n );\n }}\n </RadixValidityState>\n </RadixField>\n );\n});\n\nFieldInner.displayName = DISPLAY_NAME_INNER;\n","import { createActorContext } from '@xstate/react';\nimport type { SnapshotFrom } from 'xstate';\n\nimport { FormMachine } from '~/internals/machines/form';\nimport { inspect } from '~/internals/utils/inspector';\n\nexport type SnapshotState = SnapshotFrom<typeof FormMachine>;\n\nconst FormMachineContext = createActorContext(FormMachine, { inspect });\n\nexport const FormStoreProvider = FormMachineContext.Provider;\nexport const useFormStore = FormMachineContext.useActorRef;\nexport const useFormSelector = FormMachineContext.useSelector;\n\n/**\n * Selects a global error, if it exists\n */\nexport const globalErrorsSelector = (state: SnapshotState) => state.context.errors;\n\n/**\n * Selects if a specific field has a value\n */\nexport const fieldValueSelector = (name: string | undefined) => (state: SnapshotState) =>\n name ? state.context.fields.get(name)?.value : '';\n\n/**\n * Selects if a specific field has a value\n */\nexport const fieldHasValueSelector = (name: string | undefined) => (state: SnapshotState) =>\n Boolean(fieldValueSelector(name)(state));\n\ntype MapValue<A> = A extends Map<any, infer V> ? V : never;\n\n/**\n * Selects field-specific feedback, if they exist\n *\n * We declare an explicit return type here because TypeScript's inference results in the subtype reduction of the\n * union used for feedback. Explicitly declaring the return type allows for all members of the union to be\n * included in the return type.\n */\nexport const fieldFeedbackSelector =\n (name: string | undefined) =>\n (state: SnapshotState): MapValue<SnapshotState['context']['fields']>['feedback'] | undefined =>\n name ? state.context.fields.get(name)?.feedback : undefined;\n","import { isClerkAPIResponseError, isKnownError, isMetamaskError } from '@clerk/shared/error';\nimport { snakeToCamel } from '@clerk/shared/underscore';\nimport type { ClerkAPIError } from '@clerk/types';\nimport type { MachineContext } from 'xstate';\nimport { assign, enqueueActions, setup } from 'xstate';\n\nimport { ClerkElementsError, ClerkElementsFieldError } from '~/internals/errors';\n\nimport type { FieldDetails, FormDefaultValues, FormFields } from './form.types';\n\nexport interface FormMachineContext extends MachineContext {\n defaultValues: FormDefaultValues;\n errors: ClerkElementsError[];\n fields: FormFields;\n hidden?: Set<string>;\n missing?: Set<string>;\n optional?: Set<string>;\n progressive: boolean;\n required?: Set<string>;\n}\n\nexport type FormMachineEvents =\n | { type: 'FIELD.ADD'; field: Pick<FieldDetails, 'name' | 'type' | 'value' | 'checked' | 'disabled'> }\n | { type: 'FIELD.REMOVE'; field: Pick<FieldDetails, 'name'> }\n | { type: 'FIELD.ENABLE'; field: Pick<FieldDetails, 'name'> }\n | { type: 'FIELD.DISABLE'; field: Pick<FieldDetails, 'name'> }\n | {\n type: 'MARK_AS_PROGRESSIVE';\n defaultValues: FormDefaultValues;\n missing: string[];\n optional: string[];\n required: string[];\n }\n | {\n type: 'PREFILL_DEFAULT_VALUES';\n defaultValues: FormDefaultValues;\n }\n | { type: 'UNMARK_AS_PROGRESSIVE' }\n | {\n type: 'FIELD.UPDATE';\n field: Pick<FieldDetails, 'name' | 'value' | 'checked' | 'disabled'>;\n }\n | { type: 'ERRORS.SET'; error: any }\n | { type: 'ERRORS.CLEAR' }\n | {\n type: 'FIELD.FEEDBACK.SET';\n field: Pick<FieldDetails, 'name' | 'feedback'>;\n }\n | {\n type: 'FIELD.FEEDBACK.CLEAR';\n field: Pick<FieldDetails, 'name'>;\n }\n | { type: 'FIELD.FEEDBACK.CLEAR.ALL' };\n\ntype FormMachineTypes = {\n events: FormMachineEvents;\n context: FormMachineContext;\n};\n\nexport type TFormMachine = typeof FormMachine;\n\n/**\n * A machine for managing form state.\n * This machine is used alongside our other, flow-specific machines and a reference to a spawned FormMachine actor is used in the flows to interact with the form state.\n */\nexport const FormMachine = setup({\n actions: {\n setGlobalErrors: assign({\n errors: (_, params: { errors: ClerkElementsError[] }) => [...params.errors],\n }),\n setFieldFeedback: assign({\n fields: ({ context }, params: Pick<FieldDetails, 'name' | 'feedback'>) => {\n if (!params.name) {\n throw new Error('Field name is required');\n }\n\n const fieldName = params.name;\n if (context.fields.has(fieldName)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n context.fields.get(fieldName)!.feedback = params.feedback;\n }\n\n return context.fields;\n },\n }),\n },\n types: {} as FormMachineTypes,\n}).createMachine({\n id: 'Form',\n context: () => ({\n defaultValues: new Map(),\n errors: [],\n fields: new Map(),\n progressive: false,\n }),\n on: {\n 'ERRORS.SET': {\n actions: enqueueActions(({ enqueue, event }) => {\n const isClerkAPIError = (err: any): err is ClerkAPIError => 'meta' in err;\n\n if (isKnownError(event.error)) {\n const fields: Record<string, ClerkElementsFieldError[]> = {};\n const globalErrors: ClerkElementsError[] = [];\n const errors = isClerkAPIResponseError(event.error) ? event.error?.errors : [event.error];\n\n for (const error of errors) {\n const name = isClerkAPIError(error) ? snakeToCamel(error.meta?.paramName) : null;\n\n if (!name || isMetamaskError(error)) {\n globalErrors.push(ClerkElementsError.fromAPIError(error));\n continue;\n }\n\n if (!fields[name]) {\n fields[name] = [];\n }\n\n fields[name]?.push(ClerkElementsFieldError.fromAPIError(error));\n }\n\n enqueue({\n type: 'setGlobalErrors',\n params: {\n errors: globalErrors,\n },\n });\n\n for (const field in fields) {\n enqueue({\n type: 'setFieldFeedback',\n params: {\n name: field,\n feedback: {\n type: 'error',\n message: fields[field][0],\n },\n },\n });\n }\n }\n }),\n },\n 'ERRORS.CLEAR': {\n actions: assign({\n errors: () => [],\n }),\n },\n 'FIELD.ADD': {\n actions: assign({\n fields: ({ context, event }) => {\n if (!event.field.name) {\n throw new Error('Field name is required');\n }\n\n event.field.value = event.field.value || context.defaultValues.get(event.field.name) || undefined;\n\n context.fields.set(event.field.name, event.field);\n return context.fields;\n },\n }),\n },\n 'FIELD.UPDATE': {\n actions: assign({\n fields: ({ context, event }) => {\n if (!event.field.name) {\n throw new Error('Field name is required');\n }\n\n const field = context.fields.get(event.field.name);\n\n if (field) {\n field.checked = event.field.checked;\n field.disabled = event.field.disabled ?? field.disabled;\n field.value = event.field.value;\n\n context.fields.set(event.field.name, field);\n }\n\n return context.fields;\n },\n }),\n },\n 'FIELD.DISABLE': {\n actions: assign({\n fields: ({ context, event }) => {\n if (!event.field.name) {\n throw new Error('Field name is required');\n }\n\n const field = context.fields.get(event.field.name);\n\n if (field) {\n field.disabled = true;\n context.fields.set(event.field.name, field);\n }\n\n return context.fields;\n },\n }),\n },\n 'FIELD.ENABLE': {\n actions: assign({\n fields: ({ context, event }) => {\n if (!event.field.name) {\n throw new Error('Field name is required');\n }\n\n const field = context.fields.get(event.field.name);\n\n if (field) {\n field.disabled = false;\n context.fields.set(event.field.name, field);\n }\n\n return context.fields;\n },\n }),\n },\n 'FIELD.REMOVE': {\n actions: assign({\n fields: ({ context, event }) => {\n if (!event.field.name) {\n throw new Error('Field name is required');\n }\n\n context.fields.delete(event.field.name);\n return context.fields;\n },\n }),\n },\n 'FIELD.FEEDBACK.SET': {\n actions: [\n {\n type: 'setFieldFeedback',\n params: ({ event }) => event.field,\n },\n ],\n },\n 'FIELD.FEEDBACK.CLEAR': {\n actions: assign({\n fields: ({ context, event }) => {\n if (!event.field.name) {\n throw new Error('Field name is required');\n }\n if (context.fields.has(event.field.name)) {\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n context.fields.get(event.field.name)!.feedback = undefined;\n }\n\n return context.fields;\n },\n }),\n },\n 'FIELD.FEEDBACK.CLEAR.ALL': {\n actions: assign({\n fields: ({ context }) => {\n context.fields.forEach(field => {\n field.feedback = undefined;\n });\n\n return context.fields;\n },\n }),\n },\n MARK_AS_PROGRESSIVE: {\n actions: assign(({ event }) => {\n const missing = new Set(event.missing);\n\n return {\n defaultValues: event.defaultValues,\n hidden: new Set([...event.required.filter(f => !missing.has(f)), ...event.optional]),\n missing,\n optional: new Set(event.optional),\n progressive: true,\n required: new Set(event.required),\n };\n }),\n },\n UNMARK_AS_PROGRESSIVE: {\n actions: assign({\n defaultValues: new Map(),\n hidden: undefined,\n missing: undefined,\n optional: undefined,\n progressive: false,\n required: undefined,\n }),\n },\n PREFILL_DEFAULT_VALUES: {\n actions: assign(({ event }) => {\n return {\n defaultValues: event.defaultValues,\n };\n }),\n },\n },\n});\n","// eslint-disable-next-line no-restricted-imports\nimport type { MetamaskError } from '@clerk/shared';\nimport type { ClerkAPIError } from '@clerk/types';\n\nexport abstract class ClerkElementsErrorBase extends Error {\n clerkError = true;\n clerkElementsError = true;\n rawMessage: string;\n\n constructor(\n readonly code: string,\n message: string,\n ) {\n super(message);\n\n this.name = 'ClerkElementsError';\n this.rawMessage = message;\n }\n\n toString() {\n return `[${this.name}]\\nCode: ${this.code}\\nMessage: ${this.message}`;\n }\n}\n\nexport class ClerkElementsError extends ClerkElementsErrorBase {\n static fromAPIError(error: ClerkAPIError | MetamaskError) {\n return new ClerkElementsError(\n error.code.toString(),\n // @ts-expect-error - Expected that longMessage isn't a property of MetamaskError\n error.longMessage || error.message,\n );\n }\n\n constructor(code: string, message: string) {\n super(code, message);\n this.name = 'ClerkElementsError';\n }\n}\n\nexport class ClerkElementsRuntimeError extends ClerkElementsErrorBase {\n constructor(message: string) {\n super('elements_runtime_error', message);\n this.name = 'ClerkElementsRuntimeError';\n }\n}\n\nexport class ClerkElementsFieldError extends ClerkElementsErrorBase {\n static fromAPIError(error: ClerkAPIError) {\n return new ClerkElementsFieldError(error.code, error.longMessage || error.message);\n }\n\n constructor(code: string, message: string) {\n super(code, message);\n this.name = 'ClerkElementsFieldError';\n }\n\n get validityState() {\n return this.code;\n }\n\n get forceMatch() {\n return true;\n }\n\n matchFn = () => true;\n}\n","export function safeAccess(fn: any, fallback: any) {\n try {\n return fn();\n } catch {\n return fallback;\n }\n}\n","import type { InspectionEvent, Observer } from 'xstate';\n\nimport { getInspector as getBrowserInspector } from './browser';\nimport { getInspector as getConsoleInspector } from './console';\n\nexport let inspect: Observer<InspectionEvent> | undefined;\n\nif (__DEV__) {\n inspect = getBrowserInspector() ?? getConsoleInspector();\n}\n\nconst inspector = {\n inspect,\n};\n\nexport default inspector;\n","import { type FieldDetails, fieldFeedbackSelector, useFormSelector } from '~/internals/machines/form';\n\nexport function useFieldFeedback({ name }: Partial<Pick<FieldDetails, 'name'>>) {\n const feedback = useFormSelector(fieldFeedbackSelector(name));\n\n return {\n feedback,\n };\n}\n","import { type FieldDetails, fieldHasValueSelector, useFormSelector } from '~/internals/machines/form';\n\nimport { useFieldFeedback } from './use-field-feedback';\n\nexport function useField({ name }: Partial<Pick<FieldDetails, 'name'>>) {\n const hasValue = useFormSelector(fieldHasValueSelector(name));\n const { feedback } = useFieldFeedback({ name });\n\n const shouldBeHidden = false; // TODO: Implement clerk-js utils\n const hasError = feedback ? feedback.type === 'error' : false;\n\n return {\n hasValue,\n props: {\n 'data-hidden': shouldBeHidden ? true : undefined,\n serverInvalid: hasError,\n },\n };\n}\n","import * as React from 'react';\n\nimport type { FieldDetails } from '~/internals/machines/form';\n\nexport const FieldContext = React.createContext<Pick<FieldDetails, 'name'> | null>(null);\nexport const useFieldContext = () => React.useContext(FieldContext);\n","import type { HTMLInputTypeAttribute } from 'react';\n\nimport type { ClerkElementsError } from '~/internals/errors';\n\n/** Extracted relevant fields from @clerk/types */\nexport type ClerkFieldId =\n | 'code'\n | 'confirmPassword'\n | 'currentPassword'\n | 'backup_code' // special case of `code`\n | 'emailAddress'\n | 'firstName'\n | 'identifier'\n | 'lastName'\n | 'name'\n | 'newPassword'\n | 'password'\n | 'phoneNumber'\n | 'username'\n | 'legalAccepted';\n\n/**\n * Possible types for the Clerk input element, several 'special' input types are included.\n */\nexport type ClerkInputType = HTMLInputTypeAttribute | 'otp';\n\nexport const FIELD_STATES = {\n success: 'success',\n error: 'error',\n idle: 'idle',\n warning: 'warning',\n info: 'info',\n} as const;\n\nexport type FieldStates = (typeof FIELD_STATES)[keyof typeof FIELD_STATES];\n\nexport const FIELD_VALIDITY = {\n valid: 'valid',\n invalid: 'invalid',\n} as const;\n\nexport type FieldValidity = (typeof FIELD_VALIDITY)[keyof typeof FIELD_VALIDITY];\n\nexport type FormErrorRenderProps = Pick<ClerkElementsError, 'code' | 'message'>;\n\ntype FormErrorPropsAsChild = {\n asChild?: true | never;\n children?: React.ReactElement | ((error: FormErrorRenderProps) => React.ReactNode);\n code?: string;\n};\n\ntype FormErrorPropsStd = {\n asChild?: false;\n children: React.ReactNode;\n code: string;\n};\n\nexport type FormErrorProps<T> = Omit<T, 'asChild' | 'children'> & (FormErrorPropsStd | FormErrorPropsAsChild);\n","import { type FieldDetails, fieldHasValueSelector, useFormSelector } from '~/internals/machines/form';\n\nimport { FIELD_STATES, type FieldStates } from '../types';\nimport { useFieldFeedback } from './use-field-feedback';\n\n/**\n * Given a field name, determine the current state of the field\n */\nexport function useFieldState({ name }: Partial<Pick<FieldDetails, 'name'>>) {\n const { feedback } = useFieldFeedback({ name });\n const hasValue = useFormSelector(fieldHasValueSelector(name));\n\n /**\n * If hasValue is false, the state should be idle\n * The rest depends on the feedback type\n */\n let state: FieldStates = FIELD_STATES.idle;\n\n if (!hasValue) {\n state = FIELD_STATES.idle;\n }\n\n switch (feedback?.type) {\n case 'error':\n state = FIELD_STATES.error;\n break;\n case 'warning':\n state = FIELD_STATES.warning;\n break;\n case 'info':\n state = FIELD_STATES.info;\n break;\n case 'success':\n state = FIELD_STATES.success;\n break;\n default:\n break;\n }\n\n return {\n state,\n };\n}\n","import { useCallback } from 'react';\nimport type { BaseActorRef } from 'xstate';\n\nimport { useGlobalErrors } from './use-global-errors';\n\n/**\n * Provides the form submission handler along with the form's validity via a data attribute\n */\nexport function useForm({ flowActor }: { flowActor?: BaseActorRef<{ type: 'SUBMIT'; action: 'submit' }> }) {\n const { errors } = useGlobalErrors();\n\n // Register the onSubmit handler for form submission\n // TODO: merge user-provided submit handler\n const onSubmit = useCallback(\n (event: React.FormEvent<Element>) => {\n event.preventDefault();\n if (flowActor) {\n flowActor.send({ type: 'SUBMIT', action: 'submit' });\n }\n },\n [flowActor],\n );\n\n return {\n props: {\n ...(errors.length > 0 ? { 'data-global-error': true } : {}),\n onSubmit,\n },\n };\n}\n","import { globalErrorsSelector, useFormSelector } from '~/internals/machines/form';\n\nexport function useGlobalErrors() {\n const errors = useFormSelector(globalErrorsSelector);\n\n return {\n errors,\n };\n}\n","import { Control as RadixControl, type FormControlProps } from '@radix-ui/react-form';\nimport * as React from 'react';\n\nimport { ClerkElementsFieldError } from '~/internals/errors';\nimport { fieldValueSelector, useFormSelector, useFormStore } from '~/internals/machines/form';\nimport { usePassword } from '~/react/hooks/use-password.hook';\n\nimport type { FormInputProps } from '../index';\nimport { OTP_LENGTH_DEFAULT, OTPInput, type OTPInputProps } from '../otp';\nimport { determineInputTypeFromName, enrichFieldState } from '../utils';\nimport { useFieldContext } from './use-field-context';\nimport { useFieldState } from './use-field-state';\nimport { usePrevious } from './use-previous';\nimport { useValidityStateContext } from './use-validity-state-context';\n\n// TODO: DRY\ntype PasswordInputProps = Exclude<FormControlProps, 'type'> & {\n validatePassword?: boolean;\n};\n\nexport function useInput({\n name: inputName,\n value: providedValue,\n checked: providedChecked,\n onChange: onChangeProp,\n onBlur: onBlurProp,\n onFocus: onFocusProp,\n type: inputType,\n ...passthroughProps\n}: FormInputProps) {\n // Inputs can be used outside a <Field> wrapper if desired, so safely destructure here\n const fieldContext = useFieldContext();\n const rawName = inputName || fieldContext?.name;\n const name = rawName === 'backup_code' ? 'code' : rawName; // `backup_code` is a special case of `code`\n const { state: fieldState } = useFieldState({ name });\n const validity = useValidityStateContext();\n\n if (!rawName || !name) {\n throw new Error('Clerk: <Input /> must be wrapped in a <Field> component or have a name prop.');\n }\n\n const ref = useFormStore();\n const [hasPassedValiation, setHasPassedValidation] = React.useState(false);\n\n const { validatePassword } = usePassword({\n onValidationComplexity: hasPassed => setHasPassedValidation(hasPassed),\n onValidationSuccess: () => {\n ref.send({\n type: 'FIELD.FEEDBACK.SET',\n field: { name, feedback: { type: 'success', message: 'Your password meets all the necessary requirements.' } },\n });\n },\n onValidationError: (error, codes) => {\n if (error) {\n ref.send({\n type: 'FIELD.FEEDBACK.SET',\n field: {\n name,\n feedback: {\n type: 'error',\n message: new ClerkElementsFieldError('password-validation-error', error),\n codes,\n },\n },\n });\n }\n },\n onValidationWarning: (warning, codes) =>\n ref.send({\n type: 'FIELD.FEEDBACK.SET',\n field: { name, feedback: { type: 'warning', message: warning, codes } },\n }),\n onValidationInfo: (info, codes) => {\n // TODO: If input is not focused, make this info an error\n ref.send({\n type: 'FIELD.FEEDBACK.SET',\n field: {\n name,\n feedback: {\n type: 'info',\n message: info,\n codes,\n },\n },\n });\n },\n });\n\n const value = useFormSelector(fieldValueSelector(name));\n const prevValue = usePrevious(value);\n const hasValue = Boolean(value);\n const type = inputType ?? determineInputTypeFromName(rawName);\n let nativeFieldType = type;\n let shouldValidatePassword = false;\n\n if (type === 'password' || type === 'text') {\n shouldValidatePassword = Boolean((passthroughProps as PasswordInputProps).validatePassword);\n }\n\n if (nativeFieldType === 'otp' || nativeFieldType === 'backup_code') {\n nativeFieldType = 'text';\n }\n\n // Register the field in the machine context\n React.useEffect(() => {\n if (!name) {\n return;\n }\n\n ref.send({\n type: 'FIELD.ADD',\n field: { name, type: nativeFieldType, value: providedValue, checked: providedChecked },\n });\n\n return () => ref.send({ type: 'FIELD.REMOVE', field: { name } });\n }, [ref]); // eslint-disable-line react-hooks/exhaustive-deps\n\n React.useEffect(() => {\n if (!name) {\n return;\n }\n\n if (\n (type === 'checkbox' && providedChecked !== undefined) ||\n (type !== 'checkbox' && providedValue !== undefined)\n ) {\n ref.send({\n type: 'FIELD.UPDATE',\n field: { name, value: providedValue, checked: providedChecked },\n });\n }\n }, [name, type, ref, providedValue, providedChecked]);\n\n // Register the onChange handler for field updates to persist to the machine context\n const onChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n onChangeProp?.(event);\n if (!name) {\n return;\n }\n ref.send({ type: 'FIELD.UPDATE', field: { name, value: event.target.value, checked: event.target.checked } });\n if (shouldValidatePassword) {\n validatePassword(event.target.value);\n }\n },\n [ref, name, onChangeProp, shouldValidatePassword, validatePassword],\n );\n\n const onBlur = React.useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n onBlurProp?.(event);\n if (shouldValidatePassword && event.target.value !== prevValue) {\n validatePassword(event.target.value);\n }\n },\n [onBlurProp, shouldValidatePassword, validatePassword, prevValue],\n );\n\n const onFocus = React.useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n onFocusProp?.(event);\n if (shouldValidatePassword && event.target.value !== prevValue) {\n validatePassword(event.target.value);\n }\n },\n [onFocusProp, shouldValidatePassword, validatePassword, prevValue],\n );\n\n // TODO: Implement clerk-js utils\n const shouldBeHidden = false;\n\n const Element = type === 'otp' ? OTPInput : RadixControl;\n\n let props = {};\n if (type === 'otp') {\n const p = passthroughProps as Omit<OTPInputProps, 'name' | 'value' | 'type'>;\n const length = p.length || OTP_LENGTH_DEFAULT;\n\n props = {\n 'data-otp-input': true,\n autoComplete: 'one-time-code',\n inputMode: 'numeric',\n pattern: `[0-9]{${length}}`,\n minLength: length,\n maxLength: length,\n // Enhanced naming for better password manager detection\n name: 'otp',\n id: 'otp-input',\n // Additional attributes for password manager compatibility\n 'data-testid': 'otp-input',\n role: 'textbox',\n 'aria-label': 'Enter verification code',\n onChange: (event: React.ChangeEvent<HTMLInputElement>) => {\n // Only accept numbers\n event.currentTarget.value = event.currentTarget.value.replace(/\\D+/g, '');\n onChange(event);\n },\n type: 'text',\n spellCheck: false,\n };\n } else if (type === 'backup_code') {\n props = {\n autoComplete: 'off',\n type: 'text',\n spellCheck: false,\n };\n } else if (type === 'password' && shouldValidatePassword) {\n props = {\n 'data-has-passed-validation': hasPassedValiation ? true : undefined,\n };\n }\n\n // Filter out invalid props that should not be passed through\n // @ts-expect-error - Doesn't know about type narrowing by type here\n const { validatePassword: _1, ...rest } = passthroughProps;\n\n return {\n Element,\n props: {\n type,\n value: value ?? '',\n onChange,\n onBlur,\n onFocus,\n 'data-hidden': shouldBeHidden ? true : undefined,\n 'data-has-value': hasValue ? true : undefined,\n 'data-state': enrichFieldState(validity, fieldState),\n ...props,\n ...rest,\n },\n };\n}\n","import { useClerk } from '@clerk/shared/react';\nimport { noop } from '@clerk/shared/utils';\nimport type { PasswordSettingsData, PasswordValidation } from '@clerk/types';\nimport * as React from 'react';\n\nimport type { ErrorCodeOrTuple } from '../utils/generate-password-error-text';\nimport { generatePasswordErrorText } from '../utils/generate-password-error-text';\n\n// This hook should mimic the already existing usePassword hook in the clerk-js package\n// @see packages/clerk-js/src/ui/hooks/usePassword.ts\n\nexport type PasswordConfig = Omit<PasswordSettingsData, 'disable_hibp' | 'min_zxcvbn_strength' | 'show_zxcvbn'>;\n\ntype UsePasswordCallbacks = {\n onValidationError?: (error: string | undefined, codes: ErrorCodeOrTuple[]) => void;\n onValidationSuccess?: () => void;\n onValidationWarning?: (warning: string, codes: ErrorCodeOrTuple[]) => void;\n onValidationInfo?: (info: string, codes: ErrorCodeOrTuple[]) => void;\n onValidationComplexity?: (b: boolean) => void;\n};\n\nexport const usePassword = (callbacks?: UsePasswordCallbacks) => {\n const clerk = useClerk();\n const passwordSettings = clerk.__unstable__environment?.userSettings.passwordSettings as PasswordSettingsData;\n const { disable_hibp, min_zxcvbn_strength, show_zxcvbn, ...config } = passwordSettings || {};\n\n const {\n onValidationError = noop,\n onValidationSuccess = noop,\n onValidationWarning = noop,\n onValidationInfo = noop,\n onValidationComplexity,\n } = callbacks || {};\n\n const onValidate = React.useCallback(\n (res: PasswordValidation) => {\n /**\n * Failed complexity rules always have priority\n */\n if (res.complexity) {\n if (Object.values(res?.complexity).length > 0) {\n const { message, codes } = generatePasswordErrorText({\n config,\n failedValidations: res.complexity,\n });\n\n if (res.complexity?.min_length) {\n return onValidationInfo(message, codes);\n }\n return onValidationError(message, codes);\n }\n }\n\n /**\n * Failed strength\n */\n if (res?.strength?.state === 'fail') {\n const keys = res.strength.keys;\n const error = JSON.stringify(keys);\n return onValidationError(error, keys);\n }\n\n /**\n * Password meets all criteria but could be stronger\n */\n if (res?.strength?.state === 'pass') {\n const keys = res.strength.keys;\n const error = JSON.stringify(keys);\n return onValidationWarning(error, keys);\n }\n\n /**\n * Password meets all criteria and is strong\n */\n return onValidationSuccess();\n },\n [callbacks, config],\n );\n\n const validatePassword = React.useMemo(() => {\n return (password: string) => {\n return clerk.client.signUp.validatePassword(password, {\n onValidation: onValidate,\n onValidationComplexity,\n });\n };\n }, [onValidate]);\n\n return {\n validatePassword,\n };\n};\n","import type { Autocomplete, PasswordSettingsData } from '@clerk/types';\n\n// Copied from packages/clerk-js/src/ui/hooks/usePasswordComplexity.ts\n\ntype ComplexityErrors = {\n [key in keyof Partial<Omit<PasswordSettingsData, 'disable_hibp' | 'min_zxcvbn_strength' | 'show_zxcvbn'>>]?: boolean;\n};\n\nexport type ComplexityConfig = Omit<PasswordSettingsData, 'disable_hibp' | 'min_zxcvbn_strength' | 'show_zxcvbn'>;\n\nconst errorMessages: Record<keyof Omit<ComplexityErrors, 'allowed_special_characters'>, [string, string] | string> = {\n max_length: ['less than %length% characters', 'length'],\n min_length: ['%length% or more characters', 'length'],\n require_numbers: 'a number',\n require_lowercase: 'a lowercase letter',\n require_uppercase: 'an uppercase letter',\n require_special_char: 'a special character',\n};\n\nexport type ErrorMessagesKey = Autocomplete<keyof typeof errorMessages>;\nexport type ErrorCodeOrTuple = ErrorMessagesKey | [ErrorMessagesKey, Record<string, string | number>];\n\nconst createListFormat = (message: string[]) => {\n let messageWithPrefix: string;\n if ('ListFormat' in Intl) {\n const formatter = new Intl.ListFormat('en', { style: 'long', type: 'conjunction' });\n messageWithPrefix = formatter.format(message);\n } else {\n messageWithPrefix = message.join(', ');\n }\n\n return messageWithPrefix;\n};\n\ntype GeneratePasswordErrorTextProps = {\n config: ComplexityConfig;\n failedValidations: ComplexityErrors | undefined;\n};\n\n/**\n * This function builds a single entry in the error array returned from generatePasswordErrorText. It returns either a\n * string or a tuple containing the error code and relevant entries from the instance's password complexity conrfig.\n * @param key The string respresentation of a possible error during password validation\n * @param config The instance's password complexity configuration\n * @returns The error code or a tuple containing the error code and relevant entries from the config\n */\nfunction buildErrorTuple(key: ErrorMessagesKey, config: ComplexityConfig): ErrorCodeOrTuple {\n switch (key) {\n case 'max_length':\n return [key, { max_length: config.max_length }];\n case 'min_length':\n return [key, { min_length: config.min_length }];\n case 'require_special_char':\n return [key, { allowed_special_characters: config.allowed_special_characters }];\n default:\n return key;\n }\n}\n\nexport const generatePasswordErrorText = ({ config, failedValidations }: GeneratePasswordErrorTextProps) => {\n const codes: ErrorCodeOrTuple[] = [];\n\n if (!failedValidations || Object.keys(failedValidations).length === 0) {\n return {\n codes,\n message: '',\n };\n }\n\n // show min length error first by itself\n const hasMinLengthError = failedValidations?.min_length || false;\n\n const messages = Object.entries(failedValidations)\n .filter(k => (hasMinLengthError ? k[0] === 'min_length' : true))\n .filter(([, v]) => !!v)\n .map(([k]) => {\n const entry = k as keyof typeof errorMessages;\n const errorTuple = buildErrorTuple(entry, config);\n codes.push(errorTuple);\n const errorKey = errorMessages[entry];\n\n if (Array.isArray(errorKey)) {\n const [msg, replaceValue] = errorKey;\n return msg.replace(`%${replaceValue}%`, config[k as keyof ComplexityConfig] as string);\n }\n return errorKey;\n });\n\n const messageWithPrefix = createListFormat(messages);\n\n return {\n codes,\n message: `Your password must contain ${messageWithPrefix}.`,\n };\n};\n","import { Control as RadixControl } from '@radix-ui/react-form';\nimport * as React from 'react';\n\nimport type { FormControlProps } from '~/react/common/form';\n\nexport type OTPInputProps = Exclude<\n FormControlProps,\n 'type' | 'autoComplete' | 'minLength' | 'maxLength' | 'inputMode' | 'pattern' | 'spellCheck'\n> & {\n render?: (props: { value: string; status: OTPInputSegmentStatus; index: number }) => React.ReactNode;\n length?: number;\n autoSubmit?: boolean;\n passwordManagerOffset?: number;\n};\n\ntype SelectionRange = readonly [start: number | null, end: number | null];\nconst ZERO: SelectionRange = [0, 0];\nconst OUTSIDE: SelectionRange = [-1, -1];\n\nexport const OTP_LENGTH_DEFAULT = 6;\nconst PASSWORD_MANAGER_OFFSET_DEFAULT = 40;\n\n/**\n * The status of a single segment element in the OTP input\n */\nexport type OTPInputSegmentStatus = 'none' | 'cursor' | 'selected' | 'hovered';\n\n/**\n * If the render prop is provided, a custom segmented input will be rendered. Otherwise a standard input will be rendered.\n */\nexport const OTPInput = React.forwardRef<HTMLInputElement, OTPInputProps>(function OTPInput(props, ref) {\n const { render, length, autoSubmit, ...rest } = props;\n const hasRenderProp = typeof render !== 'undefined';\n\n if (hasRenderProp) {\n return (\n <OTPInputSegmented\n {...rest}\n ref={ref}\n render={render}\n length={length}\n autoSubmit={autoSubmit}\n />\n );\n }\n\n return (\n <OTPInputStandard\n {...rest}\n ref={ref}\n length={length}\n autoSubmit={autoSubmit}\n />\n );\n});\n\n/**\n * Standard `<input />` element that receives the same props as the OTPInput component except for the render prop.\n */\nconst OTPInputStandard = React.forwardRef<HTMLInputElement, Omit<OTPInputProps, 'render'>>(\n function OTPInput(props, ref) {\n const { length = OTP_LENGTH_DEFAULT, autoSubmit = false, ...rest } = props;\n\n const innerRef = React.useRef<HTMLInputElement>(null);\n // This ensures we can access innerRef internally while still exposing it via the ref prop\n React.useImperativeHandle(ref, () => innerRef.current as HTMLInputElement, []);\n\n // Fire the requestSubmit callback when the input has the required length and autoSubmit is enabled\n React.useEffect(() => {\n if (String(props.value).length === length && autoSubmit) {\n innerRef.current?.form?.requestSubmit();\n }\n }, [props.value, length, autoSubmit]);\n\n return (\n <RadixControl\n ref={innerRef}\n {...rest}\n data-otp-input-standard\n />\n );\n },\n);\n\n/**\n * A custom input component to handle accepting OTP codes. An invisible input element is used to capture input and handle native input\n * interactions, while the provided render prop is used to visually render the input's contents.\n */\nconst OTPInputSegmented = React.forwardRef<HTMLInputElement, Required<Pick<OTPInputProps, 'render'>> & OTPInputProps>(\n function OTPInput(props, ref) {\n const {\n className: userProvidedClassName,\n render,\n length = OTP_LENGTH_DEFAULT,\n autoSubmit = false,\n passwordManagerOffset = PASSWORD_MANAGER_OFFSET_DEFAULT,\n ...rest\n } = props;\n\n const innerRef = React.useRef<HTMLInputElement>(null);\n const [selectionRange, setSelectionRange] = React.useState<SelectionRange>(props.autoFocus ? ZERO : OUTSIDE);\n const [isHovering, setIsHovering] = React.useState(false);\n\n const isFocused = () => document.activeElement === innerRef.current;\n\n // This ensures we can access innerRef internally while still exposing it via the ref prop\n React.useImperativeHandle(ref, () => innerRef.current as HTMLInputElement, []);\n\n /**\n * A layout effect is used here to avoid any perceived visual lag when changing the selection\n * This effect ensures that when deleting characters from the input the selection is updated\n */\n React.useLayoutEffect(() => {\n if (document.activeElement !== innerRef.current) {\n return;\n }\n setSelectionRange(cur => selectionRangeUpdater(cur, innerRef));\n }, [props.value]);\n\n /**\n * Attach a selectionchange handler on the document during the capture phase to the selection range is updated\n * immediately.\n *\n * One concrete example, if using onSelect on the input, the handler wouldn't fire when pressing cmd + left/right arrow.\n */\n React.useEffect(() => {\n function onSelectionChange() {\n if (!isFocused()) {\n return;\n }\n setSelectionRange(cur => selectionRangeUpdater(cur, innerRef));\n }\n\n document.addEventListener('selectionchange', onSelectionChange, { capture: true });\n return () => document.removeEventListener('selectionchange', onSelectionChange);\n }, []);\n\n // Fire the requestSubmit callback when the input has the required length and autoSubmit is enabled\n React.useEffect(() => {\n if (String(props.value).length === length && autoSubmit) {\n innerRef.current?.form?.requestSubmit();\n }\n }, [props.value, length, autoSubmit]);\n\n return (\n <div\n data-otp-input-wrapper\n style={wrapperStyle}\n >\n {/* We can't target pseudo-elements with the style prop, so we inject a tag here */}\n <style>{`\n input[data-otp-input-segmented]::selection {\n color: transparent;\n background-color: transparent;\n }\n `}</style>\n <RadixControl\n data-otp-input-segmented\n ref={innerRef}\n {...rest}\n onFocus={event => {\n // Place the caret at the end of the current value\n if (innerRef.current) {\n const start = Math.min(innerRef.current.value.length, length - 1);\n const end = innerRef.current.value.length;\n innerRef.current.setSelectionRange(start, end);\n setSelectionRange([start, end]);\n }\n rest?.onFocus?.(event);\n }}\n onBlur={event => {\n setSelectionRange([-1, -1]);\n rest?.onBlur?.(event);\n }}\n onMouseOver={event => {\n if (!isFocused()) {\n setIsHovering(true);\n }\n props.onMouseOver?.(event);\n }}\n onMouseLeave={event => {\n setIsHovering(false);\n props.onMouseLeave?.(event);\n }}\n style={{\n ...inputStyle,\n clipPath: `inset(0 calc(1ch + ${passwordManagerOffset}px) 0 0)`,\n width: `calc(100% + 1ch + ${passwordManagerOffset}px)`,\n }}\n />\n <div\n className={userProvidedClassName}\n aria-hidden\n style={segmentWrapperStyle}\n >\n {Array.from({ length }).map((_, i) => {\n const isHovered = isHovering && !isFocused();\n const isCursor = selectionRange[0] === selectionRange[1] && selectionRange[0] === i;\n const isSelected = (selectionRange[0] ?? -1) <= i && (selectionRange[1] ?? -1) > i;\n\n return (\n <React.Fragment key={`otp-segment-${i}`}>\n {render({\n value: String(props.value)[i] || '',\n status: isHovered ? 'hovered' : isCursor ? 'cursor' : isSelected ? 'selected' : 'none',\n index: i,\n })}\n </React.Fragment>\n );\n })}\n </div>\n </div>\n );\n },\n);\n\n/**\n * Handle updating the input selection range to ensure a single character is selected when moving the cursor, or if the input value changes.\n */\nfunction selectionRangeUpdater(cur: SelectionRange, inputRef: React.RefObject<HTMLInputElement>) {\n let updated: [number, number, HTMLInputElement['selectionDirection']] = [\n inputRef.current?.selectionStart ?? 0,\n inputRef.current?.selectionEnd ?? 0,\n inputRef.current?.selectionDirection ?? null,\n ];\n\n // Abort unnecessary updates\n if (cur[0] === updated[0] && cur[1] === updated[1]) {\n return cur;\n }\n\n // ensures that forward selection works properly when landing on the first character\n if (updated[0] === 0 && updated[1] === 1) {\n updated[2] = 'forward';\n }\n\n // When moving the selection, we want to select either the previous or next character instead of only moving the cursor.\n // If the start and end indices are the same, it means only the cursor has moved and we need to make a decision on which character to select.\n if (updated[0] === updated[1]) {\n if (updated[0] > 0 && cur[0] === updated[0] && cur[1] === updated[0] + 1) {\n updated = [updated[0] - 1, updated[1], 'backward'];\n } else if (typeof inputRef.current?.value[updated[0]] !== 'undefined') {\n updated = [updated[0], updated[1] + 1, 'backward'];\n } else if (updated[0] >= OTP_LENGTH_DEFAULT) {\n updated = [updated[0] - 1, updated[1], 'backward'];\n }\n }\n\n inputRef.current?.setSelectionRange(updated[0], updated[1], updated[2] ?? undefined);\n\n return [updated[0], updated[1]] satisfies SelectionRange;\n}\n\nconst wrapperStyle = {\n position: 'relative',\n userSelect: 'none',\n} satisfies React.CSSProperties;\n\nconst inputStyle = {\n display: 'block',\n background: 'transparent',\n opacity: 0,\n outline: 'transparent solid 0px',\n appearance: 'none',\n color: 'transparent',\n position: 'absolute',\n inset: 0,\n caretColor: 'transparent',\n border: '0px solid transparent',\n // width is handled inline\n height: '100%',\n letterSpacing: '-1rem',\n} satisfies React.CSSProperties;\n\nconst segmentWrapperStyle = {\n zIndex: 1,\n pointerEvents: 'none',\n} satisfies React.CSSProperties;\n","import { FIELD_STATES, type FieldStates } from '../types';\n\n/**\n * Radix can return the ValidityState object, which contains the validity of the field. We need to merge this with our existing fieldState.\n * When the ValidityState is valid: false, the fieldState should be overriden. Otherwise, it shouldn't change at all.\n * @see https://www.radix-ui.com/primitives/docs/components/form#validitystate\n * @see https://developer.mozilla.org/en-US/docs/Web/API/ValidityState\n */\nexport function enrichFieldState(validity: ValidityState | undefined, fieldState: FieldStates) {\n return validity?.valid === false ? FIELD_STATES.error : fieldState;\n}\n","import type { Autocomplete } from '@clerk/types';\nimport type { FormFieldProps as RadixFormFieldProps } from '@radix-ui/react-form';\n\nimport type { ClerkFieldId, FieldStates } from '../types';\n\n// TODO: Move this to a shared location\ntype FormFieldProps = Omit<RadixFormFieldProps, 'children'> & {\n name: Autocomplete<ClerkFieldId>;\n alwaysShow?: boolean;\n children: React.ReactNode | ((state: FieldStates) => React.ReactNode);\n};\n\nexport function determineInputTypeFromName(name: FormFieldProps['name']) {\n if (name === 'password' || name === 'confirmPassword' || name === 'currentPassword' || name === 'newPassword') {\n return 'password' as const;\n }\n if (name === 'emailAddress') {\n return 'email' as const;\n }\n if (name === 'phoneNumber') {\n return 'tel' as const;\n }\n if (name === 'code') {\n return 'otp' as const;\n }\n if (name === 'backup_code') {\n return 'backup_code' as const;\n }\n\n return 'text' as const;\n}\n","import * as React from 'react';\n\nexport function usePrevious<T>(value: T): T | undefined {\n const ref = React.useRef<T>();\n\n React.useEffect(() => {\n ref.current = value;\n }, [value]);\n\n return ref.current;\n}\n","import * as React from 'react';\n\nexport const ValidityStateContext = React.createContext<ValidityState | undefined>(undefined);\nexport const useValidityStateContext = () => React.useContext(ValidityStateContext);\n","import type { FormMessageProps as RadixFormMessageProps } from '@radix-ui/react-form';\nimport { FormMessage as RadixFormMessage } from '@radix-ui/react-form';\nimport { Slot } from '@radix-ui/react-slot';\nimport * as React from 'react';\n\nimport { ClerkElementsRuntimeError } from '~/internals/errors';\nimport { isReactFragment } from '~/react/utils/is-react-fragment';\n\nimport { useFieldContext, useFieldFeedback } from './hooks';\nimport type { FormErrorProps } from './types';\n\nconst DISPLAY_NAME = 'ClerkElementsFieldError';\n\nexport type FormFieldErrorProps = FormErrorProps<RadixFormMessageProps & { name?: string }>;\ntype FormFieldErrorElement = React.ElementRef<typeof RadixFormMessage>;\n\n/**\n * FieldError renders error messages associated with a specific field. By default, the error's message will be rendered in an unstyled `<span>`. Optionally, the `children` prop accepts a function to completely customize rendering.\n *\n * @param {string} [name] - Used to target a specific field by name when rendering outside of a `<Field>` component.\n * @param {Function} [children] - A function that receives `message` and `code` as arguments.\n *\n * @example\n * <Clerk.Field name=\"email\">\n * <Clerk.FieldError />\n * </Clerk.Field>\n *\n * @example\n * <Clerk.Field name=\"email\">\n * <Clerk.FieldError>\n * {({ message, code }) => (\n * <span data-error-code={code}>{message}</span>\n * )}\n * </Clerk.FieldError>\n * </Clerk.Field>\n */\nexport const FieldError = React.forwardRef<FormFieldErrorElement, FormFieldErrorProps>(\n ({ asChild = false, children, code, name, ...rest }, forwardedRef) => {\n const fieldContext = useFieldContext();\n const rawFieldName = fieldContext?.name || name;\n const fieldName = rawFieldName === 'backup_code' ? 'code' : rawFieldName;\n const { feedback } = useFieldFeedback({ name: fieldName });\n\n if (!(feedback?.type === 'error')) {\n return null;\n }\n\n const error = feedback.message;\n\n if (!error) {\n return null;\n }\n\n const Comp = asChild ? Slot : 'span';\n const child = typeof children === 'function' ? children(error) : children;\n\n // const forceMatch = code ? error.code === code : undefined; // TODO: Re-add when Radix Form is updated\n\n if (isReactFragment(child)) {\n throw new ClerkElementsRuntimeError('<FieldError /> cannot render a Fragment as a child.');\n }\n\n return (\n <RadixFormMessage\n data-error-code={error.code}\n // forceMatch={forceMatch}\n {...rest}\n ref={forwardedRef}\n asChild\n >\n <Comp>{child || error.message}</Comp>\n </RadixFormMessage>\n );\n },\n);\n\nFieldError.displayName = DISPLAY_NAME;\n","import * as React from 'react';\n\nexport function isReactFragment(node: React.ReactNode) {\n return React.isValidElement(node) && node.type === React.Fragment;\n}\n","import { ClerkElementsFieldError } from '~/internals/errors';\nimport type { ErrorCodeOrTuple } from '~/react/utils/generate-password-error-text';\n\nimport { useFieldContext, useFieldFeedback, useFieldState, useValidityStateContext } from './hooks';\nimport type { FieldStates } from './types';\nimport { enrichFieldState } from './utils';\n\ntype FieldStateRenderFn = {\n children: (state: {\n state: FieldStates;\n message: string | undefined;\n codes: ErrorCodeOrTuple[] | undefined;\n }) => React.ReactNode;\n};\n\nconst DISPLAY_NAME = 'ClerkElementsFieldState';\n\n/**\n * Programmatically access the state of the wrapping `<Field>`. Useful for implementing animations when direct access to the state value is necessary.\n *\n * @param {Function} children - A function that receives `state`, `message`, and `codes` as an argument. `state` will is a union of `\"success\" | \"error\" | \"idle\" | \"warning\" | \"info\"`. `message` will be the corresponding message, e.g. error message. `codes` will be an array of keys that were used to generate the password validation messages. This prop is only available when the field is of type `password` and has `validatePassword` set to `true`.\n *\n * @example\n * <Clerk.Field name=\"email\">\n * <Clerk.Label>Email</Clerk.Label>\n * <Clerk.FieldState>\n * {({ state }) => (\n * <Clerk.Input className={`text-${state}`} />\n * )}\n * </Clerk.FieldState>\n * </Clerk.Field>\n *\n * @example\n * <Clerk.Field name=\"password\">\n * <Clerk.Label>Password</Clerk.Label>\n * <Clerk.Input validatePassword />\n * <Clerk.FieldState>\n * {({ state, message, codes }) => (\n * <pre>Field state: {state}</pre>\n * <pre>Field msg: {message}</pre>\n * <pre>Pwd keys: {codes.join(', ')}</pre>\n * )}\n * </Clerk.FieldState>\n * </Clerk.Field>\n */\nexport function FieldState({ children }: FieldStateRenderFn) {\n const field = useFieldContext();\n const { feedback } = useFieldFeedback({ name: field?.name });\n const { state } = useFieldState({ name: field?.name });\n const validity = useValidityStateContext();\n\n const message = feedback?.message instanceof ClerkElementsFieldError ? feedback.message.message : feedback?.message;\n const codes = feedback?.codes;\n\n const fieldState = { state: enrichFieldState(validity, state), message, codes };\n\n return children(fieldState);\n}\n\nFieldState.displayName = DISPLAY_NAME;\n","import { composeEventHandlers } from '@radix-ui/primitive';\nimport type { FormProps as RadixFormProps } from '@radix-ui/react-form';\nimport { Form as RadixForm } from '@radix-ui/react-form';\nimport * as React from 'react';\nimport type { BaseActorRef } from 'xstate';\n\nimport { useForm } from './hooks';\n\nconst DISPLAY_NAME = 'ClerkElementsForm';\n\ntype FormElement = React.ElementRef<typeof RadixForm>;\nexport type FormProps = Omit<RadixFormProps, 'children'> & {\n children: React.ReactNode;\n flowActor?: BaseActorRef<{ type: 'SUBMIT'; action: 'submit' }>;\n};\n\nexport const Form = React.forwardRef<FormElement, FormProps>(({ flowActor, onSubmit, ...rest }, forwardedRef) => {\n const form = useForm({ flowActor: flowActor });\n\n const { onSubmit: internalOnSubmit, ...internalFormProps } = form.props;\n\n return (\n <RadixForm\n {...internalFormProps}\n {...rest}\n onSubmit={composeEventHandlers(internalOnSubmit, onSubmit)}\n ref={forwardedRef}\n />\n );\n});\n\nForm.displayName = DISPLAY_NAME;\n","import { Slot } from '@radix-ui/react-slot';\nimport * as React from 'react';\n\nimport { ClerkElementsRuntimeError } from '~/internals/errors';\nimport { isReactFragment } from '~/react/utils/is-react-fragment';\n\nimport { useGlobalErrors } from './hooks';\nimport type { FormErrorProps } from './types';\n\nconst DISPLAY_NAME = 'ClerkElementsGlobalError';\n\ntype FormGlobalErrorElement = React.ElementRef<'div'>;\nexport type FormGlobalErrorProps = FormErrorProps<React.ComponentPropsWithoutRef<'div'>>;\n\n/**\n * Used to render errors that are returned from Clerk's API, but that are not associated with a specific form field. By default, will render the error's message wrapped in a `<div>`. Optionally, the `children` prop accepts a function to completely customize rendering. Must be placed **inside** components like `<SignIn>`/`<SignUp>` to have access to the underlying form state.\n *\n * @param {string} [code] - Forces the message with the matching code to be shown. This is useful when using server-side validation.\n * @param {Function} [children] - A function that receives `message` and `code` as arguments.\n * @param {boolean} [asChild] - If `true`, `<GlobalError>` will render as its child element, passing along any necessary props.\n *\n * @example\n * <SignIn.Root>\n * <Clerk.GlobalError />\n * </SignIn.Root>\n *\n * @example\n * <SignIn.Root>\n * <Clerk.GlobalError code=\"user_locked\">Your custom error message.</Clerk.GlobalError>\n * </SignIn.Root>\n *\n * @example\n * <SignIn.Root>\n * <Clerk.GlobalError>\n * {({ message, code }) => (\n * <span data-error-code={code}>{message}</span>\n * )}\n * </Clerk.GlobalError>\n * </SignIn.Root>\n */\nexport const GlobalError = React.forwardRef<FormGlobalErrorElement, FormGlobalErrorProps>(\n ({ asChild = false, children, code, ...rest }, forwardedRef) => {\n const { errors } = useGlobalErrors();\n\n const error = errors?.[0];\n\n if (!error || (code && error.code !== code)) {\n return null;\n }\n\n const Comp = asChild ? Slot : 'div';\n const child = typeof children === 'function' ? children(error) : children;\n\n if (isReactFragment(child)) {\n throw new ClerkElementsRuntimeError('<GlobalError /> cannot render a Fragment as a child.');\n }\n\n return (\n <Comp\n role='alert'\n {...rest}\n ref={forwardedRef}\n >\n {child || error.message}\n </Comp>\n );\n },\n);\n\nGlobalError.displayName = DISPLAY_NAME;\n","import { logger } from '@clerk/shared/logger';\nimport { useClerk } from '@clerk/shared/react';\nimport { eventComponentMounted } from '@clerk/shared/telemetry';\nimport type {\n Control as RadixControl,\n FormControlProps,\n FormControlProps as RadixFormControlProps,\n} from '@radix-ui/react-form';\nimport * as React from 'react';\n\nimport { SignInRouterCtx } from '~/react/sign-in/context';\nimport { useSignInPasskeyAutofill } from '~/react/sign-in/context/router.context';\n\nimport { useInput } from './hooks';\nimport type { OTPInputProps } from './otp';\n\nconst DISPLAY_NAME = 'ClerkElementsInput';\nconst DISPLAY_NAME_PASSKEYS_AUTOFILL = 'ClerkElementsInputWithPasskeyAutofill';\n\ntype PasswordInputProps = Exclude<FormControlProps, 'type'> & {\n validatePassword?: boolean;\n};\n\nexport type FormInputProps =\n | RadixFormControlProps\n | ({ type: 'otp'; render: OTPInputProps['render'] } & Omit<OTPInputProps, 'asChild'>)\n | ({ type: 'otp'; render?: undefined } & OTPInputProps)\n // Usecase: Toggle the visibility of the password input, therefore 'password' and 'text' are allowed\n | ({ type: 'password' | 'text' } & PasswordInputProps);\n\n/**\n * Handles rendering of `<input>` elements within Clerk's flows. Supports special `type` prop values to render input types that are unique to authentication and user management flows. Additional props will be passed through to the `<input>` element.\n *\n * @param {boolean} [asChild] - If true, `<Input />` will render as its child element, passing along any necessary props.\n * @param {string} [name] - Used to target a specific field by name when rendering outside of a `<Field>` component.\n *\n * @example\n * <Clerk.Field name=\"identifier\">\n * <Clerk.Label>Email</Clerk.Label>\n * <Clerk.Input type=\"email\" autoComplete=\"email\" className=\"emailInput\" />\n * </Clerk.Field>\n *\n * @param {Number} [length] - The length of the OTP input. Defaults to 6.\n * @param {Number} [passwordManagerOffset] - Password managers place their icon inside an `<input />`. This default behaviour is not desirable when you use the render prop to display N distinct element. With this prop you can increase the width of the `<input />` so that the icon is rendered outside the OTP inputs.\n * @param {string} [type] - Type of control to render. Supports a special `'otp'` type for one-time password inputs. If the wrapping `<Field>` component has `name='code'`, the type will default to `'otp'`. With the `'otp'` type, the input will have a pattern and length set to 6 by default and render a single `<input />` element.\n *\n * @example\n * <Clerk.Field name=\"code\">\n * <Clerk.Label>Email code</Clerk.Label>\n * <Clerk.Input type=\"otp\" />\n * </Clerk.Field>\n *\n * @param {Function} [render] - Optionally, you can use a render prop that controls how each individual character is rendered. If no `render` prop is provided, a single text `<input />` will be rendered.\n *\n * @example\n * <Clerk.Field name=\"code\">\n * <Clerk.Label>Email code</Clerk.Label>\n * <Clerk.Input\n * type=\"otp\"\n * render={({ value, status }) => <span data-status={status}>{value}</span>}\n * />\n * </Clerk.Field>\n */\nexport const Input = React.forwardRef<React.ElementRef<typeof RadixControl>, FormInputProps>(\n (props: FormInputProps, forwardedRef) => {\n const clerk = useClerk();\n const field = useInput(props);\n\n const hasPasskeyAutofillProp = Boolean(field.props.autoComplete?.includes('webauthn'));\n const allowedTypeForPasskey = (['text', 'email', 'tel'] as FormInputProps['type'][]).includes(field.props.type);\n const signInRouterRef = SignInRouterCtx.useActorRef(true);\n\n clerk.telemetry?.record(\n eventComponentMounted('Elements_Input', {\n type: props.type ?? false,\n // @ts-expect-error - Depending on type the props can be different\n render: Boolean(props?.render),\n // @ts-expect-error - Depending on type the props can be different\n asChild: Boolean(props?.asChild),\n // @ts-expect-error - Depending on type the props can be different\n validatePassword: Boolean(props?.validatePassword),\n }),\n );\n\n if (signInRouterRef && hasPasskeyAutofillProp && allowedTypeForPasskey) {\n return (\n <InputWithPasskeyAutofill\n ref={forwardedRef}\n {...props}\n />\n );\n }\n\n if (hasPasskeyAutofillProp && !allowedTypeForPasskey) {\n logger.warnOnce(\n `<Input autoComplete=\"webauthn\"> can only be used with <Input type=\"text\"> or <Input type=\"email\">`,\n );\n } else if (hasPasskeyAutofillProp) {\n logger.warnOnce(\n `<Input autoComplete=\"webauthn\"> can only be used inside <SignIn> in order to trigger a sign-in attempt, otherwise it will be ignored.`,\n );\n }\n\n return (\n <field.Element\n ref={forwardedRef}\n {...field.props}\n />\n );\n },\n);\n\nInput.displayName = DISPLAY_NAME;\n\nconst InputWithPasskeyAutofill = React.forwardRef<React.ElementRef<typeof RadixControl>, FormInputProps>(\n (props: FormInputProps, forwardedRef) => {\n const signInRouterRef = SignInRouterCtx.useActorRef(true);\n const passkeyAutofillSupported = useSignInPasskeyAutofill();\n\n React.useEffect(() => {\n if (passkeyAutofillSupported) {\n signInRouterRef?.send({ type: 'AUTHENTICATE.PASSKEY.AUTOFILL' });\n }\n }, [passkeyAutofillSupported, signInRouterRef]);\n\n const field = useInput(props);\n return (\n <field.Element\n ref={forwardedRef}\n {...field.props}\n />\n );\n },\n);\n\nInputWithPasskeyAutofill.displayName = DISPLAY_NAME_PASSKEYS_AUTOFILL;\n","import { useSelector as useSelectorUnbound } from '@xstate/react';\nimport * as React from 'react';\nimport type { ActorRefFrom, AnyActorRef, AnyStateMachine, SnapshotFrom } from 'xstate';\n\n/**\n * Creates a context and hooks for a given actor ref.\n\n * @example\n * const SignInRouterCtx = createContextFromActorRef<typeof SignInRouterMachine>('SignInRouterCtx')\n *\n * const Parent = () => {\n * const ref = useActorRef(SignInRouterMachine, { input: { basePath: '/sign-in' } });\n *\n * return (\n * <SignInRouterCtx.Provider ref={ref}>\n * <Child />\n * </SignInRouterCtx>\n * )\n * }\n *\n * const Child = () => {\n * const ref = SignInRouterCtx.useActorRef();\n * const status = SignInRouterCtx.useSelector(state => state.context.clerk);\n\n * const handleClick = useCallback(() => ref.send({ type: 'NEXT' }), [ref]);\n *\n * return <button onClick={handleClick}>;\n * }\n */\n\nexport function createContextFromActorRef<TMachine extends AnyStateMachine, TRef = ActorRefFrom<TMachine>>(\n displayName: string,\n) {\n const ReactContext = React.createContext<TRef | null>(null);\n const OriginalProvider = ReactContext.Provider;\n\n function Provider({ children, actorRef }: { children: React.ReactNode; actorRef: TRef }) {\n return React.createElement(\n OriginalProvider,\n {\n value: actorRef,\n },\n children,\n );\n }\n\n Provider.displayName = displayName;\n\n function useContext(allowMissingActor?: false | undefined): TRef;\n function useContext(allowMissingActor: true): TRef | null;\n function useContext(allowMissingActor: boolean = false): TRef | null {\n const actorRef = React.useContext(ReactContext);\n\n if (!allowMissingActor && !actorRef) {\n throw new Error(\n `You used a hook from \"${Provider.displayName}\" but it's not inside a <${Provider.displayName}.Provider> component.`,\n );\n }\n\n return actorRef;\n }\n\n function useSelector<T>(selector: (snapshot: SnapshotFrom<TRef>) => T, compare?: (a: T, b: T) => boolean): T {\n const actor = useContext();\n return useSelectorUnbound(actor as AnyActorRef, selector, compare);\n }\n\n return {\n Provider,\n useActorRef: useContext,\n useSelector,\n };\n}\n","import type { ActorRefFrom, AnyActorRef, AnyStateMachine, SnapshotFrom } from 'xstate';\n\nimport type {\n TSignInFirstFactorMachine,\n TSignInResetPasswordMachine,\n TSignInRouterMachine,\n TSignInSecondFactorMachine,\n TSignInStartMachine,\n} from '~/internals/machines/sign-in';\nimport { createContextFromActorRef } from '~/react/utils/create-context-from-actor-ref';\n\nexport type SnapshotState = SnapshotFrom<TSignInRouterMachine>;\n\nexport const SignInRouterCtx: ReturnType<typeof createContextFromActorRef<TSignInRouterMachine>> =\n createContextFromActorRef<TSignInRouterMachine>('SignInRouterCtx');\n\nfunction useSignInStep<M extends AnyStateMachine, T = ActorRefFrom<M>>(name: string) {\n return SignInRouterCtx.useSelector(state => state.children[name] as AnyActorRef) as T;\n}\n\nexport const useSignInStartStep = () => useSignInStep<TSignInStartMachine>('start');\nexport const useSignInFirstFactorStep = () => useSignInStep<TSignInFirstFactorMachine>('firstFactor');\nexport const useSignInSecondFactorStep = () => useSignInStep<TSignInSecondFactorMachine>('secondFactor');\nexport const useSignInResetPasswordStep = () => useSignInStep<TSignInResetPasswordMachine>('resetPassword');\n\nexport const useSignInPasskeyAutofill = () =>\n SignInRouterCtx.useSelector(state => state.context.webAuthnAutofillSupport);\n","import { createContext, useContext } from 'react';\n\nimport { ClerkElementsRuntimeError } from '~/internals/errors';\nimport type { SignInStrategyName } from '~/internals/machines/shared';\n\nexport type SignInStrategyContextValue = {\n strategy: SignInStrategyName | undefined;\n};\n\nexport const SignInStrategyContext = createContext<SignInStrategyContextValue>({\n strategy: undefined,\n});\n\nexport function useSignInStrategy() {\n const ctx = useContext(SignInStrategyContext);\n\n if (!ctx) {\n throw new ClerkElementsRuntimeError(\n 'useSignInStrategy must be used within a <SignIn.Strategy> or <SignIn.SupportedStrategy> component.',\n );\n }\n\n const { strategy } = ctx;\n\n return strategy;\n}\n","import type { SignInStrategy } from '@clerk/types';\nimport { createContext, useContext } from 'react';\n\nimport { ClerkElementsRuntimeError } from '~/internals/errors';\nimport type { SignInStrategyName } from '~/internals/machines/shared';\n\nexport type StrategiesContextValue = {\n current: SignInStrategy | undefined;\n isActive: (name: string) => boolean;\n preferred: SignInStrategy | undefined;\n};\n\nexport const StrategiesContext = createContext<StrategiesContextValue>({\n current: undefined,\n isActive: _name => false,\n preferred: undefined,\n});\n\nexport function useStrategy(name: SignInStrategyName) {\n const ctx = useContext(StrategiesContext);\n\n if (!ctx) {\n throw new ClerkElementsRuntimeError(\n 'useStrategy must be used within a <SignIn.Step name=\"verifications\"> component. Did you mean to `import { Step } from \"@clerk/elements/sign-up\"` instead?',\n );\n }\n\n const { current, preferred, isActive } = ctx;\n\n return {\n current,\n preferred,\n get active() {\n return isActive(name);\n },\n };\n}\n","import { Label as RadixLabel } from '@radix-ui/react-form';\n\nconst DISPLAY_NAME = 'ClerkElementsLabel';\n\n/**\n * Renders a `<label>` element that is automatically associated with its sibling `<Input />` inside of a `<Field>`. Additional props will be passed through to the `<label>` element.\n *\n * @param {boolean} [asChild] - If true, `<Label />` will render as its child element, passing along any necessary props.\n *\n * @example\n * <Clerk.Field name=\"email\">\n * <Clerk.Label>Email</Clerk.Label>\n * <Clerk.Input />\n * </Clerk.Field>\n */\nexport const Label = RadixLabel;\n\nLabel.displayName = DISPLAY_NAME;\n","import type { FormSubmitProps as RadixFormSubmitProps } from '@radix-ui/react-form';\nimport { Submit as RadixSubmit } from '@radix-ui/react-form';\nimport type { SetRequired } from 'type-fest';\n\nconst DISPLAY_NAME = 'ClerkElementsSubmit';\n\nexport type FormSubmitProps = SetRequired<RadixFormSubmitProps, 'children'>;\ntype FormSubmitComponent = React.ForwardRefExoticComponent<FormSubmitProps & React.RefAttributes<HTMLButtonElement>>;\n\n/**\n * A `<button type=\"submit\">` element.\n *\n * @param {boolean} [asChild] - When `true`, the component will render its child and passes all props to it.\n */\nexport const Submit = RadixSubmit as FormSubmitComponent;\n\nSubmit.displayName = DISPLAY_NAME;\n","import type { EnterpriseSSOStrategy, OAuthProvider, SamlStrategy, Web3Provider } from '@clerk/types';\nimport { Slot } from '@radix-ui/react-slot';\nimport { createContext, useContext } from 'react';\n\nimport type { ThirdPartyProvider } from '~/utils/third-party-strategies';\n\nimport { useThirdPartyProvider } from '../hooks';\nimport { SignInRouterCtx } from '../sign-in/context';\nimport { SignUpRouterCtx } from '../sign-up/context';\n\nexport type UseThirdPartyProviderReturn =\n | (ThirdPartyProvider & {\n events: {\n authenticate: (event: React.MouseEvent<Element>) => void;\n };\n })\n | null;\n\nexport const ConnectionContext = createContext<ThirdPartyProvider | null>(null);\nexport const useConnectionContext = () => {\n const ctx = useContext(ConnectionContext);\n\n if (!ctx) {\n throw new Error('useConnectionContext must be used within <Clerk.Connection>');\n }\n\n return ctx;\n};\n\nexport interface ConnectionProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n asChild?: boolean;\n name: OAuthProvider | Web3Provider | SamlStrategy | EnterpriseSSOStrategy;\n}\n\n/**\n * Renders a social connection button based on the provided name. If your instance does not have the social connection enabled, this component will throw an error in development.\n *\n * **Tip:** You can use the `<Icon />` component to render the social connection icon.\n *\n * @param {boolean} [asChild] - If true, `<Connection />` will render as its child element, passing along any necessary props.\n * @param {OAuthProvider | Web3Provider} name - The name of the social connection to render.\n *\n * @example\n * <SignIn.Root>\n * <SignIn.Step name=\"start\">\n * <Clerk.Connection name=\"google\">\n * Sign in with Google\n * </Clerk.Connection>\n * </SignIn.Step>\n * </SignIn.Root>\n */\nexport function Connection({ asChild, name, ...rest }: ConnectionProps) {\n const signInRef = SignInRouterCtx.useActorRef(true);\n const signUpRef = SignUpRouterCtx.useActorRef(true);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const provider = useThirdPartyProvider((signInRef || signUpRef)!, name);\n\n if (!provider) {\n return null;\n }\n\n const Comp = asChild ? Slot : 'button';\n const defaultProps = asChild ? {} : { type: 'button' as const };\n\n return (\n <ConnectionContext.Provider value={provider}>\n <Comp\n onClick={provider.events.authenticate}\n {...defaultProps}\n {...rest}\n />\n </ConnectionContext.Provider>\n );\n}\n\nexport interface IconProps extends Omit<React.HTMLAttributes<HTMLImageElement>, 'src'> {\n asChild?: boolean;\n}\n\n/**\n * `<Icon>` **must** be used inside `<Connection>`. By default, `<Icon>` will render as an `<img>` element with the `src` pointing to the logo of the currently used `<Connection>`.\n *\n * @param {boolean} [asChild] - If true, `<Icon />` will render as its child element, passing along any necessary props.\n *\n * @example\n * <SignIn.Root>\n * <SignIn.Step name=\"start\">\n * <Clerk.Connection name=\"google\">\n * <Clerk.Icon />\n * Sign in with Google\n * </Clerk.Connection>\n * </SignIn.Step>\n * </SignIn.Root>\n */\nexport function Icon({ asChild, ...rest }: IconProps) {\n const { iconUrl, name } = useConnectionContext();\n\n const Comp = asChild ? Slot : 'img';\n return (\n <Comp\n alt={`${name} logo`}\n src={iconUrl}\n {...rest}\n />\n );\n}\n","import { useSelector } from '@xstate/react';\nimport type { ActorRef, AnyActorRef, AnyMachineSnapshot, MachineSnapshot } from 'xstate';\n\ntype TaggedActor<TActor extends AnyActorRef> =\n TActor extends ActorRef<MachineSnapshot<any, any, any, any, infer TTags, any, any, any>, any> ? TTags : never;\n\nexport const ActiveTagsMode = {\n any: 'any',\n all: 'all',\n} as const;\n\nexport type UseActiveTagsMode = (typeof ActiveTagsMode)[keyof typeof ActiveTagsMode];\nexport type UseActiveTagsSingleReturn = boolean;\nexport type UseActiveTagsMultiAnyReturn<TTag> = { active: boolean; activeTags: Set<TTag> };\nexport type UseActiveTagsReturn<TTag> = UseActiveTagsSingleReturn | UseActiveTagsMultiAnyReturn<TTag>;\n\n/**\n * Generic hook to check if a tag is active.\n *\n * @example\n * const ref = SignUpCtx.useActorRef();\n *\n * useActiveTags(ref, 'external');\n * useActiveTags(ref, ['external', 'email_code']);\n * useActiveTags(ref, ['external', 'email_code'], 'all');\n *\n * @param actor {ActorRef} Machine actor reference\n * @param tag {(string | string[])} The tag(s) to check\n * @param mode {UseActiveTagsMode} Whether to match all tags or any tag\n *\n * @returns {(boolean|UseActiveTagsReturn)} Whether the tag(s) are active\n */\nexport function useActiveTags<TActor extends AnyActorRef, TTag extends TaggedActor<TActor>>(\n actor: TActor,\n tag: TTag,\n): boolean;\nexport function useActiveTags<TActor extends AnyActorRef, TTag extends TaggedActor<TActor>>(\n actor: TActor,\n tags: TTag[],\n mode: 'all',\n): boolean;\nexport function useActiveTags<TActor extends AnyActorRef, TTag extends TaggedActor<TActor>>(\n actor: TActor,\n tags: TTag[],\n mode?: 'any',\n): UseActiveTagsMultiAnyReturn<TTag>;\nexport function useActiveTags<TActor extends AnyActorRef, TTag extends TaggedActor<TActor>>(\n actor: TActor,\n tags: TTag | TTag[],\n mode: UseActiveTagsMode = ActiveTagsMode.any,\n): UseActiveTagsReturn<TTag> {\n const state = useSelector<TActor, AnyMachineSnapshot>(\n actor,\n s => s,\n (prev, next) => prev.tags === next.tags,\n );\n\n if (!state) {\n return false;\n }\n\n if (typeof tags === 'string') {\n return state.hasTag(tags);\n }\n\n if (!Array.isArray(tags)) {\n throw new Error('Invalid tags parameter provided to useActiveTags');\n }\n\n switch (mode) {\n case ActiveTagsMode.any: {\n const matching = new Set(tags.filter(tag => state.hasTag(tag)));\n return { active: matching.size > 0, activeTags: matching };\n }\n case ActiveTagsMode.all:\n return tags.length === state.tags.size ? tags.every(tag => state.hasTag(tag)) : false;\n default:\n return false;\n }\n}\n","import { useClerk } from '@clerk/shared/react';\nimport type { EnterpriseSSOStrategy, OAuthProvider, SamlStrategy, Web3Provider } from '@clerk/types';\nimport type React from 'react';\nimport { useCallback } from 'react';\nimport type { ActorRef } from 'xstate';\n\nimport { ClerkElementsRuntimeError } from '~/internals/errors';\nimport type { SignInRouterEvents } from '~/internals/machines/sign-in';\nimport type { SignUpRouterEvents } from '~/internals/machines/sign-up';\nimport type { UseThirdPartyProviderReturn } from '~/react/common/connections';\nimport {\n getEnabledThirdPartyProviders,\n isAuthenticatableOauthStrategy,\n isEnterpriseSSOStrategy,\n isSamlStrategy,\n isWeb3Strategy,\n providerToDisplayData,\n} from '~/utils/third-party-strategies';\n\nconst useIsProviderEnabled = (\n provider: OAuthProvider | Web3Provider | SamlStrategy | EnterpriseSSOStrategy,\n): boolean | null => {\n const clerk = useClerk();\n\n // null indicates we don't know for sure\n if (!clerk.loaded) {\n return null;\n }\n\n if (provider === 'saml' || provider === 'enterprise_sso') {\n return (\n clerk.__unstable__environment?.userSettings.saml.enabled ??\n clerk.__unstable__environment?.userSettings.enterpriseSSO.enabled ??\n false\n );\n }\n\n const data = getEnabledThirdPartyProviders(clerk.__unstable__environment);\n\n return (\n isAuthenticatableOauthStrategy(provider, data.authenticatableOauthStrategies) ||\n isWeb3Strategy(provider, data.web3Strategies)\n );\n};\n\nexport const useThirdPartyProvider = <\n TActor extends ActorRef<any, SignInRouterEvents> | ActorRef<any, SignUpRouterEvents>,\n>(\n ref: TActor,\n provider: OAuthProvider | Web3Provider | SamlStrategy | EnterpriseSSOStrategy,\n): UseThirdPartyProviderReturn => {\n const isProviderEnabled = useIsProviderEnabled(provider);\n const isSaml = isSamlStrategy(provider);\n const isEnterpriseSSO = isEnterpriseSSOStrategy(provider);\n const details =\n isEnterpriseSSO || isSaml\n ? {\n name: 'SSO',\n strategy: provider,\n }\n : providerToDisplayData[provider];\n\n const authenticate = useCallback(\n (event: React.MouseEvent<Element>) => {\n if (!isProviderEnabled) {\n return;\n }\n\n event.preventDefault();\n\n if (isSaml) {\n return ref.send({ type: 'AUTHENTICATE.SAML' });\n }\n\n if (isEnterpriseSSO) {\n return ref.send({ type: 'AUTHENTICATE.ENTERPRISE_SSO' });\n }\n\n if (provider === 'base') {\n return ref.send({ type: 'AUTHENTICATE.WEB3', strategy: 'web3_base_signature' });\n }\n\n if (provider === 'metamask') {\n return ref.send({ type: 'AUTHENTICATE.WEB3', strategy: 'web3_metamask_signature' });\n }\n\n if (provider === 'coinbase_wallet') {\n return ref.send({ type: 'AUTHENTICATE.WEB3', strategy: 'web3_coinbase_wallet_signature' });\n }\n\n if (provider === 'okx_wallet') {\n return ref.send({ type: 'AUTHENTICATE.WEB3', strategy: 'web3_okx_wallet_signature' });\n }\n\n return ref.send({ type: 'AUTHENTICATE.OAUTH', strategy: `oauth_${provider}` });\n },\n [provider, isProviderEnabled, isSaml, isEnterpriseSSO, ref],\n );\n\n if (isProviderEnabled === false) {\n const dashboardPath = `https://dashboard.clerk.com/last-active?path=/user-authentication/${provider === 'metamask' ? 'web3' : 'social-connections'}`;\n\n throw new ClerkElementsRuntimeError(\n `You have used <Connection name=\"${provider}\"> which isn't enabled for your project. Enable ${details.name} in your Clerk dashboard: ${dashboardPath}`,\n );\n }\n\n return {\n events: {\n authenticate,\n },\n ...details,\n };\n};\n","// c.f. vendor/clerk-js/src/ui/hooks/useEnabledThirdPartyProviders.tsx [Modified]\n\nimport { iconImageUrl } from '@clerk/shared/constants';\nimport { OAUTH_PROVIDERS } from '@clerk/shared/oauth';\nimport { WEB3_PROVIDERS } from '@clerk/shared/web3';\nimport type {\n EnterpriseSSOStrategy,\n EnvironmentResource,\n OAuthProvider,\n OAuthStrategy,\n SamlStrategy,\n Web3Provider,\n Web3Strategy,\n} from '@clerk/types';\n\nimport { fromEntries } from './clerk-js';\n\nexport type ThirdPartyStrategy =\n | {\n id: Web3Strategy | OAuthStrategy;\n iconUrl: string;\n name: string;\n }\n | {\n strategy: SamlStrategy | EnterpriseSSOStrategy;\n iconUrl?: never;\n name: string;\n };\n\nexport type ThirdPartyProvider =\n | {\n strategy: Web3Strategy | OAuthStrategy;\n iconUrl: string;\n name: string;\n }\n | {\n strategy: SamlStrategy | EnterpriseSSOStrategy;\n iconUrl?: never;\n name: string;\n };\n\ntype ThirdPartyStrategyToDataMap = {\n [k in Web3Strategy | OAuthStrategy]: ThirdPartyStrategy;\n};\n\ntype ThirdPartyProviderToDataMap = {\n [k in Web3Provider | OAuthProvider]: ThirdPartyProvider;\n};\n\nexport interface EnabledThirdPartyProviders {\n authenticatableOauthStrategies: OAuthStrategy[];\n providerToDisplayData: ThirdPartyProviderToDataMap;\n strategies: (Web3Strategy | OAuthStrategy)[];\n strategyToDisplayData: ThirdPartyStrategyToDataMap;\n web3Strategies: Web3Strategy[];\n}\n\nconst oauthStrategies = OAUTH_PROVIDERS.map(p => p.strategy);\n\nexport const providerToDisplayData: ThirdPartyProviderToDataMap = fromEntries(\n [...OAUTH_PROVIDERS, ...WEB3_PROVIDERS].map(p => {\n return [p.provider, { iconUrl: iconImageUrl(p.provider), name: p.name, strategy: p.strategy }];\n }),\n) as ThirdPartyProviderToDataMap;\n\nconst strategyToDisplayData: ThirdPartyStrategyToDataMap = fromEntries(\n [...OAUTH_PROVIDERS, ...WEB3_PROVIDERS].map(p => {\n return [p.strategy, { iconUrl: iconImageUrl(p.provider), id: p.provider, name: p.name }];\n }),\n) as ThirdPartyStrategyToDataMap;\n\nexport function isSamlStrategy(strategy: any): strategy is SamlStrategy {\n return strategy === 'saml';\n}\n\nexport function isEnterpriseSSOStrategy(strategy: any): strategy is EnterpriseSSOStrategy {\n return strategy === 'enterprise_sso';\n}\n\nexport function isWeb3Strategy(\n strategy: any,\n available: EnabledThirdPartyProviders['web3Strategies'],\n): strategy is Web3Strategy {\n return available.includes(strategy.startsWith('web3_') ? strategy : `web3_${strategy}_signature`);\n}\n\nexport function isAuthenticatableOauthStrategy(\n strategy: any,\n available: EnabledThirdPartyProviders['authenticatableOauthStrategies'],\n): strategy is OAuthStrategy {\n return available.includes(strategy.startsWith('oauth_') ? strategy : `oauth_${strategy}`);\n}\n\nconst emptyThirdPartyProviders: EnabledThirdPartyProviders = {\n authenticatableOauthStrategies: [],\n providerToDisplayData: {} as any,\n strategies: [],\n strategyToDisplayData: {} as any,\n web3Strategies: [],\n};\n\nexport const getEnabledThirdPartyProviders = (\n environment: EnvironmentResource | undefined | null,\n): EnabledThirdPartyProviders => {\n if (!environment?.userSettings) {\n return emptyThirdPartyProviders;\n }\n\n const { socialProviderStrategies, web3FirstFactors, authenticatableSocialStrategies } = environment.userSettings;\n\n // Filter out any OAuth strategies that are not yet known, they are not included in our types.\n const knownSocialProviderStrategies = socialProviderStrategies.filter(s => oauthStrategies.includes(s));\n const knownAuthenticatableSocialStrategies = authenticatableSocialStrategies.filter(s => oauthStrategies.includes(s));\n\n return {\n authenticatableOauthStrategies: [...knownAuthenticatableSocialStrategies],\n providerToDisplayData: providerToDisplayData,\n strategies: [...knownSocialProviderStrategies, ...web3FirstFactors],\n strategyToDisplayData: strategyToDisplayData,\n web3Strategies: web3FirstFactors,\n };\n};\n","// Pulled from `clerk-js/src/ui/utils/fromEntries.ts\nexport const fromEntries = (iterable: Iterable<any>) => {\n return [...iterable].reduce((obj, [key, val]) => {\n obj[key] = val;\n return obj;\n }, {});\n};\n","import type { ActorRefFrom, AnyActorRef, AnyStateMachine, SnapshotFrom } from 'xstate';\n\nimport {\n type TSignUpContinueMachine,\n type TSignUpRouterMachine,\n type TSignUpStartMachine,\n type TSignUpVerificationMachine,\n} from '~/internals/machines/sign-up';\nimport { createContextFromActorRef } from '~/react/utils/create-context-from-actor-ref';\n\nexport type SnapshotState = SnapshotFrom<TSignUpRouterMachine>;\n\nexport const SignUpRouterCtx: ReturnType<typeof createContextFromActorRef<TSignUpRouterMachine>> =\n createContextFromActorRef<TSignUpRouterMachine>('SignUpRouterCtx');\n\nfunction useSignUpStep<M extends AnyStateMachine, T = ActorRefFrom<M>>(name: string) {\n return SignUpRouterCtx.useSelector(state => state.children[name] as AnyActorRef) as T;\n}\n\nexport const useSignUpStartStep = () => useSignUpStep<TSignUpStartMachine>('start');\nexport const useSignUpContinueStep = () => useSignUpStep<TSignUpContinueMachine>('continue');\nexport const useSignUpVerificationStep = () => useSignUpStep<TSignUpVerificationMachine>('verification');\n","import { useClerk } from '@clerk/shared/react';\nimport { eventComponentMounted } from '@clerk/shared/telemetry';\nimport type { EnterpriseSSOStrategy, OAuthProvider, SamlStrategy, Web3Provider } from '@clerk/types';\nimport { useSelector } from '@xstate/react';\nimport * as React from 'react';\n\nimport { ClerkElementsRuntimeError } from '~/internals/errors';\nimport type { ActorSignIn, ActorSignUp } from '~/react/hooks/use-loading.hook';\nimport { useLoading } from '~/react/hooks/use-loading.hook';\nimport { SignInRouterCtx } from '~/react/sign-in/context';\nimport type { TSignInStep } from '~/react/sign-in/step';\nimport { SIGN_IN_STEPS } from '~/react/sign-in/step';\nimport { SignUpRouterCtx } from '~/react/sign-up/context';\nimport type { TSignUpStep } from '~/react/sign-up/step';\nimport { SIGN_UP_STEPS } from '~/react/sign-up/step';\nimport { isProviderStrategyScope, mapScopeToStrategy } from '~/react/utils/map-scope-to-strategy';\n\ntype Strategy = OAuthProvider | SamlStrategy | EnterpriseSSOStrategy | Web3Provider;\ntype LoadingScope<T extends TSignInStep | TSignUpStep> =\n | 'global'\n | `step:${T}`\n | `provider:${Strategy}`\n | 'submit'\n | 'passkey'\n | undefined;\n\ntype LoadingProps = {\n scope?: LoadingScope<TSignInStep | TSignUpStep>;\n children: (isLoading: boolean) => React.ReactNode;\n};\n\nfunction isSignInScope(scope: LoadingScope<TSignInStep | TSignUpStep>): scope is LoadingScope<TSignInStep> {\n if (!scope) {\n return true;\n }\n\n if (scope.startsWith('step:')) {\n return Object.prototype.hasOwnProperty.call(SIGN_IN_STEPS, scope.replace('step:', ''));\n }\n\n return true;\n}\n\nfunction isSignUpScope(scope: LoadingScope<TSignInStep | TSignUpStep>): scope is LoadingScope<TSignUpStep> {\n if (!scope) {\n return true;\n }\n\n if (scope.startsWith('step:')) {\n return Object.prototype.hasOwnProperty.call(SIGN_UP_STEPS, scope.replace('step:', ''));\n }\n\n return true;\n}\n\n/**\n * Access the loading state of a chosen scope. Scope can refer to a step, a provider, or the global loading state. The global loading state is `true` when any of the other scopes are loading.\n *\n * @param scope - Optional. Specify which loading state to access. Can be a step, a provider, or the global loading state. If `<Loading>` is used outside a `<Step>`, the scope will default to \"global\". If used inside a `<Step>` the scope will default to the current step. For external authentication providers, the scope needs to be manually defined in the format of `provider:<provider name>`\n * @param {Function} children - A function that receives `isLoading` as an argument. `isLoading` is a boolean that indicates if the current scope is loading or not.\n *\n * @example\n * <SignIn.Root>\n * <Clerk.Loading>\n * {(isLoading) => isLoading && \"Global loading...\"}\n * </Clerk.Loading>\n * </SignIn.Root>\n *\n * @example\n * <SignIn.Step name=\"start\">\n * <Clerk.Action submit>\n * <Clerk.Loading>\n * {(isLoading) => isLoading ? \"Start is loading...\" : \"Submit\"}\n * </Clerk.Loading>\n * </Clerk.Action>\n * </SignIn.Step>\n *\n * @example\n * <SignIn.Step name=\"start\">\n * <Clerk.Loading scope=\"provider:google\">\n * {(isLoading) => (\n * <Clerk.Connection name=\"google\" disabled={isLoading}>\n * {isLoading ? \"Loading...\" : \"Continue with Google\"}\n * </Clerk.Connection>\n * )}\n * </Clerk.Loading>\n * </SignIn.Step>\n */\nexport function Loading({ children, scope }: LoadingProps) {\n const clerk = useClerk();\n\n clerk.telemetry?.record(eventComponentMounted('Elements_Loading', { scope: scope ?? false }));\n\n const signInRouterRef = SignInRouterCtx.useActorRef(true);\n const signUpRouterRef = SignUpRouterCtx.useActorRef(true);\n\n // One of the two routers must be defined. Otherwise, the component is used outside of a <SignIn> or <SignUp> component.\n // An error is thrown in this case. Depending on which router is defined, the following flow will be either for sign-in or sign-up.\n if (!signInRouterRef && !signUpRouterRef) {\n throw new ClerkElementsRuntimeError(`<Loading> must be used within a <SignIn> or <SignUp> component.`);\n }\n\n if (signInRouterRef) {\n if (isSignInScope(scope)) {\n return (\n <SignInLoading\n scope={scope}\n routerRef={signInRouterRef}\n >\n {children}\n </SignInLoading>\n );\n } else {\n throw new ClerkElementsRuntimeError(`Invalid scope \"${scope}\" used for <Loading> inside <SignIn>.`);\n }\n }\n\n if (signUpRouterRef) {\n if (isSignUpScope(scope)) {\n return (\n <SignUpLoading\n scope={scope}\n routerRef={signUpRouterRef}\n >\n {children}\n </SignUpLoading>\n );\n } else {\n throw new ClerkElementsRuntimeError(`Invalid scope \"${scope}\" used for <Loading> inside <SignUp>.`);\n }\n }\n\n throw new ClerkElementsRuntimeError('Invalid state for <Loading>. Please open an issue.');\n}\n\ntype SignInLoadingProps = {\n scope?: LoadingScope<TSignInStep>;\n children: (isLoading: boolean) => React.ReactNode;\n routerRef: ActorSignIn;\n};\n\nfunction SignInLoading({ children, scope, routerRef }: SignInLoadingProps) {\n const [isLoading, { step: loadingStep, strategy, action }] = useLoading(routerRef);\n const tags = useSelector(routerRef, s => s.tags);\n\n const isStepLoading = (step: TSignInStep) => isLoading && loadingStep === step;\n const isInferredStepLoading = (step: TSignInStep) => tags.has(`step:${step}`) && isStepLoading(step);\n\n let loadingResult = false;\n\n if (scope === 'global') {\n // Global Loading Scope\n loadingResult = isLoading;\n } else if (scope && isProviderStrategyScope(scope)) {\n // Provider-Specific Loading Scope\n loadingResult = isLoading && loadingStep === undefined && strategy === mapScopeToStrategy(scope);\n } else if (scope) {\n // Specified Loading Scope\n loadingResult = isStepLoading(scope.replace('step:', '') as TSignInStep) || scope === action;\n } else {\n // Inferred Loading Scope\n loadingResult =\n isInferredStepLoading('start') ||\n isInferredStepLoading('verifications') ||\n isInferredStepLoading('choose-strategy') ||\n isInferredStepLoading('forgot-password') ||\n isInferredStepLoading('reset-password');\n }\n\n return children(loadingResult);\n}\n\ntype SignUpLoadingProps = {\n scope?: LoadingScope<TSignUpStep>;\n children: (isLoading: boolean) => React.ReactNode;\n routerRef: ActorSignUp;\n};\n\nfunction SignUpLoading({ children, scope, routerRef }: SignUpLoadingProps) {\n const [isLoading, { step: loadingStep, strategy, action }] = useLoading(routerRef);\n const tags = useSelector(routerRef, s => s.tags);\n\n const isStepLoading = (step: TSignUpStep) => isLoading && loadingStep === step;\n const isInferredStepLoading = (step: TSignUpStep) => tags.has(`step:${step}`) && isStepLoading(step);\n\n let loadingResult = false;\n\n if (scope === 'global') {\n // Global Loading Scope\n loadingResult = isLoading;\n } else if (scope && isProviderStrategyScope(scope)) {\n // Provider-Specific Loading Scope\n loadingResult = isLoading && loadingStep === undefined && strategy === mapScopeToStrategy(scope);\n } else if (scope) {\n loadingResult = isStepLoading(scope.replace('step:', '') as TSignUpStep) || scope === action;\n } else {\n // Inferred Loading Scope\n loadingResult =\n isInferredStepLoading('start') || isInferredStepLoading('continue') || isInferredStepLoading('verifications');\n }\n\n return children(loadingResult);\n}\n","import { useSelector } from '@xstate/react';\nimport type { ActorRefFrom, SnapshotFrom } from 'xstate';\n\nimport type { SignInRouterLoadingContext, TSignInRouterMachine } from '~/internals/machines/sign-in';\nimport type { SignUpRouterLoadingContext, TSignUpRouterMachine } from '~/internals/machines/sign-up';\n\nexport type ActorSignIn = ActorRefFrom<TSignInRouterMachine>;\nexport type ActorSignUp = ActorRefFrom<TSignUpRouterMachine>;\n\ntype LoadingContext<T> = T extends ActorSignIn ? SignInRouterLoadingContext : SignUpRouterLoadingContext;\ntype UseLoadingReturn<T> = [\n isLoading: boolean,\n { step: LoadingContext<T>['step']; strategy: LoadingContext<T>['strategy']; action: LoadingContext<T>['action'] },\n];\n\nconst selectLoading = <T extends SnapshotFrom<TSignInRouterMachine> | SnapshotFrom<TSignUpRouterMachine>>(\n snapshot: T,\n) => snapshot?.context?.loading;\nconst compareLoadingValue = <T extends SignInRouterLoadingContext | SignUpRouterLoadingContext>(prev: T, next: T) =>\n prev?.isLoading === next?.isLoading;\n\n/**\n * Generic hook to check the loading state inside the context of a machine. Should only be used with `SignInRouterCtx` or `SignUpRouterCtx`.\n *\n * @param actor - The actor reference of the machine\n *\n * @example\n * const ref = SignInRouterCtx.useActorRef();\n *\n * useLoading(ref);\n */\nexport function useLoading<TActor extends ActorSignIn | ActorSignUp>(actor: TActor): UseLoadingReturn<TActor> {\n const loadingCtx = useSelector(actor, selectLoading, compareLoadingValue) as LoadingContext<TActor>;\n\n if (!loadingCtx) {\n return [false, { step: undefined, strategy: undefined, action: undefined }];\n }\n\n return [loadingCtx.isLoading, { step: loadingCtx.step, strategy: loadingCtx.strategy, action: loadingCtx.action }];\n}\n","import { useClerk } from '@clerk/shared/react';\nimport { eventComponentMounted } from '@clerk/shared/telemetry';\n\nimport { ClerkElementsRuntimeError } from '~/internals/errors';\n\nimport { SignInChooseSession, type SignInChooseSessionProps } from './choose-session';\nimport { SignInChooseStrategy, type SignInChooseStrategyProps, SignInForgotPassword } from './choose-strategy';\nimport { SignInResetPassword, type SignInResetPasswordProps } from './reset-password';\nimport type { SignInSSOCallbackProps } from './sso-callback';\nimport { SignInSSOCallback } from './sso-callback';\nimport { SignInStart, type SignInStartProps } from './start';\nimport { SignInVerifications, type SignInVerificationsProps } from './verifications';\n\nexport const SIGN_IN_STEPS = {\n start: 'start',\n verifications: 'verifications',\n 'choose-strategy': 'choose-strategy',\n 'choose-session': 'choose-session',\n 'forgot-password': 'forgot-password',\n 'reset-password': 'reset-password',\n 'sso-callback': 'sso-callback',\n} as const;\n\nexport type TSignInStep = (typeof SIGN_IN_STEPS)[keyof typeof SIGN_IN_STEPS];\ntype StepWithProps<N extends TSignInStep, T> = { name: N } & T;\n\nexport type SignInStepProps =\n | StepWithProps<'start', SignInStartProps>\n | StepWithProps<'verifications', SignInVerificationsProps>\n | StepWithProps<'choose-strategy' | 'forgot-password', SignInChooseStrategyProps>\n | StepWithProps<'reset-password', SignInResetPasswordProps>\n | StepWithProps<'choose-session', SignInChooseSessionProps>\n | StepWithProps<'sso-callback', SignInSSOCallbackProps>;\n\n/**\n * Render different steps of the sign-in flow. Initially the `'start'` step is rendered. Once a sign-in attempt has been created, `'verifications'` will be displayed. If during that verification step the user decides to choose a different method of signing in or verifying, the `'choose-strategy'` step will be displayed.\n *\n * You typically want to place fields like username, password, or social providers in the `'start'` step. The `'verifications'` step is used to verify the user's credentials like password or MFA. Once the user has been verified, the sign-in attempt will be completed.\n *\n * @param {string} name - Step name. Use `'start'`, `'verifications'`, `'choose-strategy'`, `'reset-password'`, or `'forgot-password'`.\n *\n * @example\n * <SignIn.Root>\n * <SignIn.Step name='start' />\n * <SignIn.Step name='verifications' />\n * <SignIn.Step name='choose-strategy' />\n * <SignIn.Step name='forgot-password' />\n * <SignIn.Step name='reset-password' />\n * <SignIn.Step name='choose-session' />\n * </SignIn.Root>\n */\nexport function SignInStep(props: SignInStepProps) {\n const clerk = useClerk();\n\n clerk.telemetry?.record(eventComponentMounted('Elements_SignInStep', { name: props.name }));\n\n switch (props.name) {\n case SIGN_IN_STEPS.start:\n return <SignInStart {...props} />;\n case SIGN_IN_STEPS.verifications:\n return <SignInVerifications {...props} />;\n case SIGN_IN_STEPS['choose-strategy']:\n return <SignInChooseStrategy {...props} />;\n case SIGN_IN_STEPS['forgot-password']:\n return <SignInForgotPassword {...props} />;\n case SIGN_IN_STEPS['reset-password']:\n return <SignInResetPassword {...props} />;\n case SIGN_IN_STEPS['choose-session']:\n return <SignInChooseSession {...props} />;\n case SIGN_IN_STEPS['sso-callback']:\n return <SignInSSOCallback {...props} />;\n default:\n throw new ClerkElementsRuntimeError(`Invalid step name. Use: ${Object.keys(SIGN_IN_STEPS).join(',')}.`);\n }\n}\n","import { Slot } from '@radix-ui/react-slot';\nimport * as React from 'react';\n\nimport { createContextForDomValidation } from '~/react/utils/create-context-for-dom-validation';\nimport { isValidComponentType } from '~/react/utils/is-valid-component-type';\n\nimport {\n SignInActiveSessionContext,\n type SignInActiveSessionListItem,\n useSignInActiveSessionContext,\n useSignInChooseSessionIsActive,\n useSignInSessionList,\n} from './choose-session.hooks';\n\n// ----------------------------------- TYPES ------------------------------------\n\nexport type SignInChooseSessionProps = React.HTMLAttributes<HTMLDivElement> & {\n asChild?: boolean;\n};\nexport type SignInSessionListProps = React.HTMLAttributes<HTMLUListElement> & {\n asChild?: boolean;\n includeCurrentSession?: true;\n};\nexport type SignInSessionListItemProps = Omit<React.HTMLAttributes<HTMLLIElement>, 'children'> & {\n asChild?: boolean;\n children: ({ session }: { session: SignInActiveSessionListItem }) => React.ReactNode;\n};\n\n// ---------------------------------- CONTEXT -----------------------------------\n\nexport const SignInChooseSessionCtx = createContextForDomValidation('SignInChooseSessionCtx');\n\n// --------------------------------- COMPONENTS ---------------------------------\n\nexport function SignInChooseSession({ asChild, children, ...props }: SignInChooseSessionProps) {\n const activeState = useSignInChooseSessionIsActive();\n const Comp = asChild ? Slot : 'div';\n\n return activeState ? (\n <SignInChooseSessionCtx.Provider>\n <Comp {...props}>{children}</Comp>\n </SignInChooseSessionCtx.Provider>\n ) : null;\n}\n\nexport function SignInSessionList({ asChild, children, includeCurrentSession, ...props }: SignInSessionListProps) {\n const sessions = useSignInSessionList({ omitCurrent: !includeCurrentSession });\n\n if (!children || !sessions?.length) {\n return null;\n }\n\n if (React.Children.count(children) > 1) {\n return React.Children.only(null);\n }\n\n if (asChild && isValidComponentType(children, SignInSessionListItem)) {\n // TODO: Update error message\n throw new Error('asChild cannot be used with SessionListItem as the direct child');\n }\n\n if (!React.isValidElement(children)) {\n // TODO: Update error message\n throw new Error('children must be a valid React element');\n }\n\n const newChildren = asChild ? (children.props.children as React.ReactNode) : children;\n const childrenWithCtx = sessions.map(session => {\n return (\n <SignInActiveSessionContext.Provider\n key={`SignInActiveSessionContext-${session.id}`}\n value={session}\n >\n {newChildren}\n </SignInActiveSessionContext.Provider>\n );\n });\n\n if (asChild) {\n return <Slot {...props}>{React.cloneElement(children, undefined, childrenWithCtx)}</Slot>;\n }\n\n return <ul {...props}>{childrenWithCtx}</ul>;\n}\n\nexport function SignInSessionListItem(props: SignInSessionListItemProps) {\n const { asChild = false, children, ...passthroughProps } = props;\n const session = useSignInActiveSessionContext();\n const Comp = asChild ? Slot : 'li';\n\n return <Comp {...passthroughProps}>{children({ session })}</Comp>;\n}\n","import * as React from 'react';\n\n/**\n * Use this context helper to detect whether a component has a particular parent higher up in the DOM or not.\n */\nexport function createContextForDomValidation(displayName: string) {\n const ReactContext = React.createContext(false);\n const OriginalProvider = ReactContext.Provider;\n\n function Provider({ children }: { children: React.ReactNode }) {\n return React.createElement(\n OriginalProvider,\n {\n value: true,\n },\n children,\n );\n }\n\n Provider.displayName = displayName;\n\n function useContext(allowMissingContext: boolean = false) {\n const context = React.useContext(ReactContext);\n\n if (!allowMissingContext && !context) {\n throw new Error(\n `You used a hook from \"${Provider.displayName}\" but it's not inside a <${Provider.displayName}.Provider> component.`,\n );\n }\n\n return context;\n }\n\n return {\n Provider,\n useDomValidation: useContext,\n };\n}\n","import * as React from 'react';\n\nexport function isValidComponentType(child: React.ReactNode, type: any): child is React.ReactElement {\n return React.isValidElement(child) && child.type === type;\n}\n","import type { ActiveSessionResource, PublicUserData } from '@clerk/types';\nimport * as React from 'react';\n\nimport { useActiveTags } from '../../hooks';\nimport { SignInRouterCtx } from '../context';\n\nexport type SignInActiveSessionListItem = Pick<ActiveSessionResource, 'id'> & PublicUserData;\n\nexport const SignInActiveSessionContext = React.createContext<SignInActiveSessionListItem | null>(null);\n\nexport function useSignInActiveSessionContext(): SignInActiveSessionListItem {\n const ctx = React.useContext(SignInActiveSessionContext);\n\n if (!ctx) {\n throw new Error('SignInActiveSessionContext must be used within a SessionList/SignInSessionListItem');\n }\n\n return ctx;\n}\n\nexport function useSignInChooseSessionIsActive() {\n const routerRef = SignInRouterCtx.useActorRef();\n return useActiveTags(routerRef, 'step:choose-session');\n}\n\nexport type UseSignInSessionListParams = {\n omitCurrent: boolean;\n};\n\nexport function useSignInSessionList(params?: UseSignInSessionListParams): SignInActiveSessionListItem[] {\n const { omitCurrent = true } = params || {};\n\n return SignInRouterCtx.useSelector(state => {\n const signedInSessions = state.context.clerk?.client?.signedInSessions || [];\n const currentSessionId = state.context.clerk?.session?.id;\n const filteredSessions = omitCurrent ? signedInSessions.filter(s => s.id !== currentSessionId) : signedInSessions;\n\n return filteredSessions.map(s => ({\n id: s.id,\n ...s.publicUserData,\n }));\n });\n}\n","import type { SignInFactor, SignInStrategy as TSignInStrategy } from '@clerk/types';\nimport { Slot } from '@radix-ui/react-slot';\nimport { useSelector } from '@xstate/react';\nimport * as React from 'react';\nimport type { ActorRefFrom } from 'xstate';\n\nimport type { TSignInFirstFactorMachine, TSignInSecondFactorMachine } from '~/internals/machines/sign-in';\nimport { SignInRouterSystemId } from '~/internals/machines/sign-in';\n\nimport { useActiveTags } from '../hooks';\nimport { ActiveTagsMode } from '../hooks/use-active-tags.hook';\nimport { createContextForDomValidation } from '../utils/create-context-for-dom-validation';\nimport { SignInRouterCtx, SignInStrategyContext } from './context';\n\n// --------------------------------- HELPERS ---------------------------------\n\nconst localStrategies: Set<TSignInStrategy> = new Set(['email_code', 'password', 'phone_code', 'email_link']);\nconst resetPasswordStrategies: Set<TSignInStrategy> = new Set([\n 'reset_password_phone_code',\n 'reset_password_email_code',\n]);\n\nexport function isResetPasswordStrategy(strategy: TSignInStrategy | null | undefined): boolean {\n if (!strategy) {\n return false;\n }\n return resetPasswordStrategies.has(strategy);\n}\n\nexport function factorHasLocalStrategy(factor: SignInFactor | undefined | null): boolean {\n if (!factor) {\n return false;\n }\n return localStrategies.has(factor.strategy);\n}\n\n// --------------------------------- COMPONENTS ---------------------------------\n\nexport type SignInChooseStrategyProps = React.HTMLAttributes<HTMLDivElement> & {\n asChild?: boolean;\n};\nexport type SignInForgotPasswordProps = React.HTMLAttributes<HTMLDivElement> & {\n asChild?: boolean;\n};\n\nexport const SignInChooseStrategyCtx = createContextForDomValidation('SignInChooseStrategyCtx');\n\nexport function SignInChooseStrategy({ asChild, children, ...props }: SignInChooseStrategyProps) {\n const routerRef = SignInRouterCtx.useActorRef();\n const activeStateFirstFactor = useActiveTags(\n routerRef,\n ['step:verifications', 'step:first-factor', 'step:choose-strategy'],\n ActiveTagsMode.all,\n );\n\n const activeStateSecondFactor = useActiveTags(\n routerRef,\n ['step:verifications', 'step:second-factor', 'step:choose-strategy'],\n ActiveTagsMode.all,\n );\n\n const activeState = activeStateFirstFactor || activeStateSecondFactor;\n const Comp = asChild ? Slot : 'div';\n\n return activeState ? (\n <SignInChooseStrategyCtx.Provider>\n <Comp {...props}>{children}</Comp>\n </SignInChooseStrategyCtx.Provider>\n ) : null;\n}\n\nexport function SignInForgotPassword({ asChild, children, ...props }: SignInForgotPasswordProps) {\n const routerRef = SignInRouterCtx.useActorRef();\n const activeState = useActiveTags(\n routerRef,\n ['step:verifications', 'step:first-factor', 'step:forgot-password'],\n ActiveTagsMode.all,\n );\n const Comp = asChild ? Slot : 'div';\n\n return activeState ? (\n <SignInChooseStrategyCtx.Provider>\n <Comp {...props}>{children}</Comp>\n </SignInChooseStrategyCtx.Provider>\n ) : null;\n}\n\nconst SUPPORTED_STRATEGY_NAME = 'SignInSupportedStrategy';\n\nexport type SignInSupportedStrategyElement = React.ElementRef<'button'>;\nexport type SignInSupportedStrategyProps = {\n asChild?: boolean;\n name: Exclude<SignInFactor['strategy'], `oauth_${string}` | 'saml'>;\n children: React.ReactNode;\n};\n\n/**\n * By default, renders a button which will trigger a change in the chosen sign-in strategy. It **must** be used within a `<Step name='choose-strategy'>` component.\n *\n * @description This component will only render its contents if the chosen strategy is enabled (in the Clerk dashboard) and if it's not the current strategy.\n *\n * @param name - Define a strategy to be used.\n * @param {boolean} [asChild] - When `true`, the component will render its child and passes all props to it.\n *\n * @example\n * <SignIn.Step name='choose-strategy'>\n * <SignIn.SupportedStrategy name='password'>\n * Sign in with password\n * </SignIn.SupportedStrategy>\n * </SignIn.Step>\n */\nexport const SignInSupportedStrategy = React.forwardRef<SignInSupportedStrategyElement, SignInSupportedStrategyProps>(\n ({ asChild, children, name, ...rest }, forwardedRef) => {\n const routerRef = SignInRouterCtx.useActorRef();\n const snapshot = routerRef.getSnapshot();\n\n const status = snapshot.context.clerk.client.signIn.status;\n const supportedFirstFactors =\n status === 'needs_first_factor' ? snapshot.context.clerk.client.signIn.supportedFirstFactors || [] : [];\n const supportedSecondFactors =\n status === 'needs_second_factor' ? snapshot.context.clerk.client.signIn.supportedSecondFactors || [] : [];\n const factor = [...supportedFirstFactors, ...supportedSecondFactors].find(factor => name === factor.strategy);\n\n const currentFactor = useSelector(\n (snapshot.children[SignInRouterSystemId.firstFactor] ||\n snapshot.children[SignInRouterSystemId.secondFactor]) as unknown as ActorRefFrom<\n TSignInFirstFactorMachine | TSignInSecondFactorMachine\n >,\n state => state?.context.currentFactor?.strategy,\n );\n\n const sendUpdateStrategyEvent = React.useCallback(\n () => routerRef.send({ type: 'STRATEGY.UPDATE', factor }),\n [routerRef, factor],\n );\n\n // Don't render if the current factor is the same as the one we're trying to render\n if (currentFactor === name) {\n return null;\n }\n\n const Comp = asChild ? Slot : 'button';\n const defaultProps = asChild ? {} : { type: 'button' as const };\n\n return factor ? (\n <SignInStrategyContext.Provider value={{ strategy: name }}>\n <Comp\n {...defaultProps}\n {...rest}\n ref={forwardedRef}\n onClick={sendUpdateStrategyEvent}\n >\n {children || factor.strategy}\n </Comp>\n </SignInStrategyContext.Provider>\n ) : null;\n },\n);\n\nSignInSupportedStrategy.displayName = SUPPORTED_STRATEGY_NAME;\n","import { isClerkAPIResponseError } from '@clerk/shared/error';\nimport type {\n AttemptFirstFactorParams,\n EmailCodeAttempt,\n PasswordAttempt,\n PhoneCodeAttempt,\n PrepareFirstFactorParams,\n PrepareSecondFactorParams,\n ResetPasswordEmailCodeAttempt,\n ResetPasswordPhoneCodeAttempt,\n SignInFirstFactor,\n SignInResource,\n SignInSecondFactor,\n Web3Attempt,\n} from '@clerk/types';\nimport type { DoneActorEvent } from 'xstate';\nimport { assign, fromPromise, log, sendTo, setup } from 'xstate';\n\nimport {\n MAGIC_LINK_VERIFY_PATH_ROUTE,\n RESENDABLE_COUNTDOWN_DEFAULT,\n SIGN_IN_DEFAULT_BASE_PATH,\n} from '~/internals/constants';\nimport { ClerkElementsRuntimeError } from '~/internals/errors';\nimport type { FormFields } from '~/internals/machines/form';\nimport type { SignInStrategyName, WithParams } from '~/internals/machines/shared';\nimport { sendToLoading } from '~/internals/machines/shared';\nimport { determineStartingSignInFactor, determineStartingSignInSecondFactor } from '~/internals/machines/sign-in/utils';\nimport { assertActorEventError, assertIsDefined } from '~/internals/machines/utils/assert';\n\nimport type { SignInRouterMachineActorRef } from './router.types';\nimport type { SignInVerificationSchema } from './verification.types';\nimport { SignInVerificationDelays } from './verification.types';\n\nexport type TSignInFirstFactorMachine = typeof SignInFirstFactorMachine;\nexport type TSignInSecondFactorMachine = typeof SignInSecondFactorMachine;\n\nexport type DetermineStartingFactorInput = {\n parent: SignInRouterMachineActorRef;\n};\n\nexport type PrepareFirstFactorInput = WithParams<PrepareFirstFactorParams> & {\n parent: SignInRouterMachineActorRef;\n resendable: boolean;\n};\nexport type PrepareSecondFactorInput = WithParams<PrepareSecondFactorParams> & {\n parent: SignInRouterMachineActorRef;\n resendable: boolean;\n};\n\nexport type AttemptFirstFactorInput = {\n parent: SignInRouterMachineActorRef;\n fields: FormFields;\n currentFactor: SignInFirstFactor | null;\n};\nexport type AttemptSecondFactorInput = {\n parent: SignInRouterMachineActorRef;\n fields: FormFields;\n currentFactor: SignInSecondFactor | null;\n};\n\nconst isNonPreparableStrategy = (strategy?: SignInFirstFactor['strategy'] | SignInSecondFactor['strategy']) => {\n if (!strategy) {\n return false;\n }\n\n return ['passkey', 'password'].includes(strategy);\n};\n\nexport const SignInVerificationMachineId = 'SignInVerification';\n\nconst SignInVerificationMachine = setup({\n actors: {\n determineStartingFactor: fromPromise<SignInFirstFactor | SignInSecondFactor | null, DetermineStartingFactorInput>(\n () => Promise.reject(new ClerkElementsRuntimeError('Actor `determineStartingFactor` must be overridden')),\n ),\n prepare: fromPromise<SignInResource, PrepareFirstFactorInput | PrepareSecondFactorInput>(() =>\n Promise.reject(new ClerkElementsRuntimeError('Actor `prepare` must be overridden')),\n ),\n attempt: fromPromise<SignInResource, AttemptFirstFactorInput | AttemptSecondFactorInput>(() =>\n Promise.reject(new ClerkElementsRuntimeError('Actor `attempt` must be overridden')),\n ),\n attemptPasskey: fromPromise<\n SignInResource,\n { parent: SignInRouterMachineActorRef; flow: 'autofill' | 'discoverable' | undefined }\n >(({ input: { parent, flow } }) => {\n return parent.getSnapshot().context.clerk.client.signIn.authenticateWithPasskey({\n flow,\n });\n }),\n },\n actions: {\n resendableTick: assign(({ context }) => ({\n resendable: context.resendableAfter === 0,\n resendableAfter: context.resendableAfter > 0 ? context.resendableAfter - 1 : context.resendableAfter,\n })),\n resendableReset: assign({\n resendable: false,\n resendableAfter: RESENDABLE_COUNTDOWN_DEFAULT,\n }),\n validateRegisteredStrategies: ({ context }) => {\n const clerk = context.parent.getSnapshot().context.clerk;\n\n if (clerk.__unstable__environment?.isProduction()) {\n return;\n }\n\n // Only show these warnings in development!\n if (process.env.NODE_ENV === 'development') {\n if (\n clerk.client.signIn.supportedFirstFactors &&\n !clerk.client.signIn.supportedFirstFactors.every((factor: SignInFirstFactor) =>\n context.registeredStrategies.has(factor.strategy),\n )\n ) {\n console.warn(\n `Clerk: Your instance is configured to support these strategies: ${clerk.client.signIn.supportedFirstFactors\n .map((factor: SignInFirstFactor) => factor.strategy)\n .join(', ')}, but the rendered strategies are: ${Array.from(context.registeredStrategies).join(\n ', ',\n )}. Make sure to render a <Strategy> component for each supported strategy. More information: https://clerk.com/docs/elements/reference/sign-in#strategy`,\n );\n }\n\n if (\n clerk.client.signIn.supportedSecondFactors &&\n !clerk.client.signIn.supportedSecondFactors.every((factor: SignInSecondFactor) =>\n context.registeredStrategies.has(factor.strategy),\n )\n ) {\n console.warn(\n `Clerk: Your instance is configured to support these 2FA strategies: ${clerk.client.signIn.supportedSecondFactors\n .map((f: SignInSecondFactor) => f.strategy)\n .join(', ')}, but the rendered strategies are: ${Array.from(context.registeredStrategies).join(\n ', ',\n )}. Make sure to render a <Strategy> component for each supported strategy. More information: https://clerk.com/docs/elements/reference/sign-in#strategy`,\n );\n }\n\n const strategiesUsedButNotActivated = Array.from(context.registeredStrategies).filter(\n strategy =>\n !clerk.client.signIn.supportedFirstFactors?.some(\n (supported: SignInFirstFactor) => supported.strategy === strategy,\n ),\n );\n\n if (strategiesUsedButNotActivated.length > 0) {\n console.warn(\n `Clerk: These rendered strategies are not configured for your instance: ${strategiesUsedButNotActivated.join(', ')}. If this is unexpected, make sure to enable them in your Clerk dashboard: https://dashboard.clerk.com/last-active?path=/user-authentication/email-phone-username`,\n );\n }\n\n if (context.currentFactor?.strategy && !context.registeredStrategies.has(context.currentFactor?.strategy)) {\n throw new ClerkElementsRuntimeError(\n `Your sign-in attempt is missing a ${context.currentFactor?.strategy} strategy. Make sure <Strategy name=\"${context.currentFactor?.strategy}\"> is rendered in your flow. More information: https://clerk.com/docs/elements/reference/sign-in#strategy`,\n );\n } else if (!context.currentFactor?.strategy) {\n throw new ClerkElementsRuntimeError(\n 'Unable to determine an authentication strategy to verify. This means your instance is misconfigured. Visit the Clerk Dashboard and verify that your instance has authentication strategies enabled: https://dashboard.clerk.com/last-active?path=/user-authentication/email-phone-username',\n );\n }\n }\n },\n sendToNext: ({ context, event }) =>\n context.parent.send({ type: 'NEXT', resource: (event as unknown as DoneActorEvent<SignInResource>).output }),\n sendToLoading,\n setFormErrors: sendTo(\n ({ context }) => context.formRef,\n ({ event }) => {\n assertActorEventError(event);\n return {\n type: 'ERRORS.SET',\n error: event.error,\n };\n },\n ),\n setConsoleError: ({ event }) => {\n if (process.env.NODE_ENV !== 'development') {\n return;\n }\n\n assertActorEventError(event);\n\n const error = isClerkAPIResponseError(event.error) ? event.error.errors[0].longMessage : event.error.message;\n\n console.error(`Unable to fulfill the prepare or attempt request for the sign-in verification.\n Error: ${error}\n Please open an issue if you continue to run into this issue.`);\n },\n },\n guards: {\n isResendable: ({ context }) => context.resendable || context.resendableAfter === 0,\n isNeverResendable: ({ context }) => isNonPreparableStrategy(context.currentFactor?.strategy),\n },\n delays: SignInVerificationDelays,\n types: {} as SignInVerificationSchema,\n}).createMachine({\n id: SignInVerificationMachineId,\n context: ({ input }) => ({\n currentFactor: null,\n basePath: input.basePath || SIGN_IN_DEFAULT_BASE_PATH,\n formRef: input.formRef,\n loadingStep: 'verifications',\n parent: input.parent,\n registeredStrategies: new Set<SignInStrategyName>(),\n resendable: false,\n resendableAfter: RESENDABLE_COUNTDOWN_DEFAULT,\n }),\n initial: 'Init',\n on: {\n 'NAVIGATE.PREVIOUS': '.Hist',\n 'STRATEGY.REGISTER': {\n actions: assign({\n registeredStrategies: ({ context, event }) => context.registeredStrategies.add(event.factor),\n }),\n },\n 'STRATEGY.UNREGISTER': {\n actions: assign({\n registeredStrategies: ({ context, event }) => {\n context.registeredStrategies.delete(event.factor);\n return context.registeredStrategies;\n },\n }),\n },\n },\n states: {\n Init: {\n tags: ['state:preparing', 'state:loading'],\n invoke: {\n id: 'determineStartingFactor',\n src: 'determineStartingFactor',\n input: ({ context }) => ({\n parent: context.parent,\n }),\n onDone: {\n target: 'Preparing',\n actions: assign({\n currentFactor: ({ event }) => event.output,\n }),\n },\n onError: {\n target: 'Preparing',\n actions: [\n log('Clerk [Sign In Verification]: Error determining starting factor'),\n assign({\n currentFactor: { strategy: 'password' },\n }),\n ],\n },\n },\n },\n Preparing: {\n tags: ['state:preparing', 'state:loading'],\n invoke: {\n id: 'prepare',\n src: 'prepare',\n input: ({ context }) => ({\n parent: context.parent,\n resendable: context.resendable,\n params: {\n ...context.currentFactor,\n redirectUrl: `${window.location.origin}${context.basePath}${MAGIC_LINK_VERIFY_PATH_ROUTE}`,\n } as PrepareFirstFactorParams,\n }),\n onDone: {\n actions: 'resendableReset',\n target: 'Pending',\n },\n onError: {\n actions: ['setFormErrors', 'setConsoleError'],\n target: 'Pending',\n },\n },\n },\n Pending: {\n tags: ['state:pending'],\n description: 'Waiting for user input',\n on: {\n 'AUTHENTICATE.PASSKEY': {\n target: 'AttemptingPasskey',\n reenter: true,\n },\n 'NAVIGATE.CHOOSE_STRATEGY': 'ChooseStrategy',\n 'NAVIGATE.FORGOT_PASSWORD': 'ChooseStrategy',\n RETRY: 'Preparing',\n SUBMIT: {\n target: 'Attempting',\n reenter: true,\n },\n },\n initial: 'Init',\n states: {\n Init: {\n description: 'Marks appropriate factors as never resendable.',\n always: [\n {\n guard: 'isNeverResendable',\n target: 'NeverResendable',\n },\n {\n target: 'NotResendable',\n },\n ],\n },\n Resendable: {\n description: 'Waiting for user to retry',\n },\n NeverResendable: {\n description: 'Handles never resendable',\n on: {\n RETRY: {\n actions: log('Never retriable'),\n },\n },\n },\n NotResendable: {\n description: 'Handle countdowns',\n on: {\n RETRY: {\n actions: log(({ context }) => `Not retriable; Try again in ${context.resendableAfter}s`),\n },\n },\n after: {\n resendableTimeout: [\n {\n description: 'Set as retriable if countdown is 0',\n guard: 'isResendable',\n actions: 'resendableTick',\n target: 'Resendable',\n },\n {\n description: 'Continue countdown if not retriable',\n actions: 'resendableTick',\n target: 'NotResendable',\n reenter: true,\n },\n ],\n },\n },\n },\n after: {\n 3000: {\n actions: 'validateRegisteredStrategies',\n },\n },\n },\n ChooseStrategy: {\n description: 'Handles both choose strategy and forgot password as the latter is similar in functionality',\n tags: ['state:choose-strategy', 'state:forgot-password'],\n on: {\n 'STRATEGY.UPDATE': {\n actions: assign({ currentFactor: ({ event }) => event.factor || null }),\n target: 'Preparing',\n },\n },\n },\n Attempting: {\n tags: ['state:attempting', 'state:loading'],\n entry: 'sendToLoading',\n invoke: {\n id: 'attempt',\n src: 'attempt',\n input: ({ context }) => ({\n parent: context.parent,\n currentFactor: context.currentFactor as SignInFirstFactor | null,\n fields: context.formRef.getSnapshot().context.fields,\n }),\n onDone: {\n actions: ['sendToNext', 'sendToLoading'],\n },\n onError: {\n actions: ['setFormErrors', 'setConsoleError', 'sendToLoading'],\n target: 'Pending',\n },\n },\n },\n AttemptingPasskey: {\n tags: ['state:attempting', 'state:loading'],\n entry: 'sendToLoading',\n invoke: {\n id: 'attemptPasskey',\n src: 'attemptPasskey',\n input: ({ context }) => ({\n parent: context.parent,\n flow: 'discoverable',\n }),\n onDone: {\n actions: ['sendToNext', 'sendToLoading'],\n },\n onError: {\n actions: ['setFormErrors', 'sendToLoading'],\n target: 'Pending',\n },\n },\n },\n Hist: {\n type: 'history',\n },\n },\n});\n\nexport const SignInFirstFactorMachine = SignInVerificationMachine.provide({\n actors: {\n determineStartingFactor: fromPromise(async ({ input }) => {\n const clerk = input.parent.getSnapshot().context.clerk;\n\n return Promise.resolve(\n determineStartingSignInFactor(\n clerk.client.signIn.supportedFirstFactors,\n clerk.client.signIn.identifier,\n clerk.__unstable__environment?.displayConfig.preferredSignInStrategy,\n ),\n );\n }),\n prepare: fromPromise(async ({ input }) => {\n // `input` is a union of PrepareFirstFactor and PrepareSecondFactor. Since we're passing params to\n // prepareFirstFactor, we need to assert that the input is a PrepareFirstFactor. For some reason, ESLint thinks\n // the assertion is unnecessary, and will remove it during the pre-commit hook. To prevent that, we disable the\n // rule for the line.\n\n const { params, parent, resendable } = input as PrepareFirstFactorInput;\n const clerk = parent.getSnapshot().context.clerk;\n\n // If a prepare call has already been fired recently, don't re-send\n const currentVerificationExpiration = clerk.client.signIn.firstFactorVerification.expireAt;\n const needsPrepare = resendable || !currentVerificationExpiration || currentVerificationExpiration < new Date();\n\n if (isNonPreparableStrategy(params?.strategy) || !needsPrepare) {\n return Promise.resolve(clerk.client.signIn);\n }\n\n assertIsDefined(params, 'First factor params');\n return await clerk.client.signIn.prepareFirstFactor(params);\n }),\n attempt: fromPromise(async ({ input }) => {\n const { currentFactor, fields, parent } = input as AttemptFirstFactorInput;\n\n assertIsDefined(currentFactor, 'Current factor');\n\n let attemptParams: AttemptFirstFactorParams;\n\n const strategy = currentFactor.strategy;\n const code = fields.get('code')?.value as string | undefined;\n const password = fields.get('password')?.value as string | undefined;\n\n switch (strategy) {\n case 'passkey': {\n return await parent.getSnapshot().context.clerk.client.signIn.authenticateWithPasskey();\n }\n case 'password': {\n assertIsDefined(password, 'Password');\n\n attemptParams = {\n strategy,\n password,\n } satisfies PasswordAttempt;\n\n break;\n }\n case 'reset_password_phone_code':\n case 'reset_password_email_code': {\n assertIsDefined(code, 'Code for resetting phone/email');\n\n attemptParams = {\n strategy,\n code,\n password,\n } satisfies ResetPasswordPhoneCodeAttempt | ResetPasswordEmailCodeAttempt;\n\n break;\n }\n case 'phone_code':\n case 'email_code': {\n assertIsDefined(code, 'Code for phone/email');\n\n attemptParams = {\n strategy,\n code,\n } satisfies PhoneCodeAttempt | EmailCodeAttempt;\n\n break;\n }\n case 'web3_metamask_signature': {\n const signature = fields.get('signature')?.value as string | undefined;\n assertIsDefined(signature, 'Web3 Metamask signature');\n\n attemptParams = {\n strategy,\n signature,\n } satisfies Web3Attempt;\n\n break;\n }\n case 'web3_coinbase_wallet_signature': {\n const signature = fields.get('signature')?.value as string | undefined;\n assertIsDefined(signature, 'Web3 Coinbase Wallet signature');\n\n attemptParams = {\n strategy,\n signature,\n } satisfies Web3Attempt;\n\n break;\n }\n case 'web3_okx_wallet_signature': {\n const signature = fields.get('signature')?.value as string | undefined;\n assertIsDefined(signature, 'Web3 OKX Wallet signature');\n\n attemptParams = {\n strategy,\n signature,\n } satisfies Web3Attempt;\n\n break;\n }\n default:\n throw new ClerkElementsRuntimeError(`Invalid strategy: ${strategy}`);\n }\n\n return await parent.getSnapshot().context.clerk.client.signIn.attemptFirstFactor(attemptParams);\n }),\n },\n});\n\nexport const SignInSecondFactorMachine = SignInVerificationMachine.provide({\n actors: {\n determineStartingFactor: fromPromise(async ({ input }) =>\n Promise.resolve(\n determineStartingSignInSecondFactor(\n input.parent.getSnapshot().context.clerk.client.signIn.supportedSecondFactors,\n ),\n ),\n ),\n prepare: fromPromise(async ({ input }) => {\n const { params, parent, resendable } = input as PrepareSecondFactorInput;\n const clerk = parent.getSnapshot().context.clerk;\n\n // If a prepare call has already been fired recently, don't re-send\n const currentVerificationExpiration = clerk.client.signIn.secondFactorVerification.expireAt;\n const needsPrepare = resendable || !currentVerificationExpiration || currentVerificationExpiration < new Date();\n\n assertIsDefined(params, 'Second factor params');\n\n if (params.strategy !== 'phone_code' || !needsPrepare) {\n return Promise.resolve(clerk.client.signIn);\n }\n\n return await clerk.client.signIn.prepareSecondFactor({\n strategy: params.strategy,\n phoneNumberId: params.phoneNumberId,\n });\n }),\n attempt: fromPromise(async ({ input }) => {\n const { fields, parent, currentFactor } = input as AttemptSecondFactorInput;\n\n const code = fields.get('code')?.value as string;\n\n assertIsDefined(currentFactor, 'Current factor');\n assertIsDefined(code, 'Code');\n\n return await parent.getSnapshot().context.clerk.client.signIn.attemptSecondFactor({\n strategy: currentFactor.strategy,\n code,\n });\n }),\n },\n});\n","import type { SignUpModes } from '@clerk/types';\n\nimport { safeAccess } from '~/utils/safe-access';\n\nexport const SSO_CALLBACK_PATH_ROUTE = '/sso-callback';\nexport const CHOOSE_SESSION_PATH_ROUTE = '/choose';\nexport const MAGIC_LINK_VERIFY_PATH_ROUTE = '/verify';\n\nexport const SIGN_UP_MODES: Record<string, SignUpModes> = {\n PUBLIC: 'public',\n RESTRICTED: 'restricted',\n};\n\n// TODO: remove reliance on next-specific variables here\nexport const SIGN_IN_DEFAULT_BASE_PATH = safeAccess(\n () => process.env.CLERK_SIGN_IN_URL ?? process.env.NEXT_PUBLIC_CLERK_SIGN_IN_URL,\n '/sign-in',\n);\nexport const SIGN_UP_DEFAULT_BASE_PATH = safeAccess(\n () => process.env.CLERK_SIGN_UP_URL ?? process.env.NEXT_PUBLIC_CLERK_SIGN_UP_URL,\n '/sign-up',\n);\n\n// The version that Next added support for the window.history.pushState and replaceState APIs.\n// ref: https://nextjs.org/blog/next-14-1#windowhistorypushstate-and-windowhistoryreplacestate\nexport const NEXT_WINDOW_HISTORY_SUPPORT_VERSION = '14.1.0';\n\nexport const SEARCH_PARAMS = {\n createdSession: '__clerk_created_session',\n handshake: '__clerk_handshake',\n help: '__clerk_help',\n invitationToken: '__clerk_invitation_token',\n modalState: '__clerk_modal_state',\n satelliteUrl: '__clerk_satellite_url',\n status: '__clerk_status',\n synced: '__clerk_synced',\n ticket: '__clerk_ticket',\n transfer: '__clerk_transfer',\n} as const;\n\nexport const RESENDABLE_COUNTDOWN_DEFAULT = 60;\n\nexport const CAPTCHA_ELEMENT_ID = 'clerk-captcha';\n\n// Pulled from: https://github.com/clerk/javascript/blob/c7d626292a9fd12ca0f1b31a1035e711b6e99531/packages/clerk-js/src/core/constants.ts#L15\nexport const ERROR_CODES = {\n FORM_IDENTIFIER_NOT_FOUND: 'form_identifier_not_found',\n FORM_PASSWORD_INCORRECT: 'form_password_incorrect',\n INVALID_STRATEGY_FOR_USER: 'strategy_for_user_invalid',\n NOT_ALLOWED_TO_SIGN_UP: 'not_allowed_to_sign_up',\n OAUTH_ACCESS_DENIED: 'oauth_access_denied',\n OAUTH_EMAIL_DOMAIN_RESERVED_BY_SAML: 'oauth_email_domain_reserved_by_saml',\n NOT_ALLOWED_ACCESS: 'not_allowed_access',\n SAML_USER_ATTRIBUTE_MISSING: 'saml_user_attribute_missing',\n USER_LOCKED: 'user_locked',\n ENTERPRISE_SSO_USER_ATTRIBUTE_MISSING: 'enterprise_sso_user_attribute_missing',\n ENTERPRISE_SSO_EMAIL_ADDRESS_DOMAIN_MISMATCH: 'enterprise_sso_email_address_domain_mismatch',\n ENTERPRISE_SSO_HOSTED_DOMAIN_MISMATCH: 'enterprise_sso_hosted_domain_mismatch',\n SAML_EMAIL_ADDRESS_DOMAIN_MISMATCH: 'saml_email_address_domain_mismatch',\n ORGANIZATION_MEMBERSHIP_QUOTA_EXCEEDED_FOR_SSO: 'organization_membership_quota_exceeded_for_sso',\n};\n\nexport const ROUTING = {\n path: 'path',\n virtual: 'virtual',\n hash: 'hash',\n} as const;\n\nexport type ROUTING = (typeof ROUTING)[keyof typeof ROUTING];\n","import type { SignInStrategy } from '@clerk/types';\n\nimport type {\n SignInResetPasswordContext,\n SignInResetPasswordEvents,\n SignInStartContext,\n SignInStartEvents,\n SignInVerificationContext,\n SignInVerificationEvents,\n} from '~/internals/machines/sign-in';\nimport type {\n SignUpContinueContext,\n SignUpContinueEvents,\n SignUpStartContext,\n SignUpStartEvents,\n SignUpVerificationContext,\n SignUpVerificationEvents,\n} from '~/internals/machines/sign-up';\nimport type { ThirdPartyMachineContext, ThirdPartyMachineEvent } from '~/internals/machines/third-party';\nimport type { BaseRouterLoadingStep } from '~/internals/machines/types';\n\ntype SendToLoadingProps = {\n context:\n | SignInStartContext\n | SignInVerificationContext\n | SignInResetPasswordContext\n | ThirdPartyMachineContext\n | SignUpStartContext\n | SignUpContinueContext\n | SignUpVerificationContext;\n event:\n | SignInStartEvents\n | SignInVerificationEvents\n | SignInResetPasswordEvents\n | ThirdPartyMachineEvent\n | SignUpStartEvents\n | SignUpContinueEvents\n | SignUpVerificationEvents;\n};\n\nexport function sendToLoading({ context, event }: SendToLoadingProps): void {\n // Unrelated to the `context` of each machine, the step passed to the loading event must use BaseRouterLoadingStep\n let step: BaseRouterLoadingStep | undefined;\n let strategy: SignInStrategy | undefined;\n let action: string | undefined;\n\n // By default the loading state is set to `true` when this function is called\n // Only if these events are received, the loading state is set to `false`\n // Early return here to avoid unnecessary checks\n if (event.type.startsWith('xstate.done.') || event.type.startsWith('xstate.error.')) {\n return context.parent.send({\n type: 'LOADING',\n isLoading: false,\n step: undefined,\n strategy: undefined,\n });\n }\n\n // `context.loadingStep: \"strategy\"` is not a valid BaseRouterLoadingStep (on purpose) so needs to be handled here. This context should be used when `step` should be undefined and `strategy` be defined instead\n if (context.loadingStep === 'strategy') {\n step = undefined;\n\n // Third-party machine handling\n if (event.type === 'REDIRECT') {\n strategy = event.params.strategy;\n }\n\n return context.parent.send({\n type: 'LOADING',\n isLoading: true,\n step,\n strategy,\n });\n } else if (context.loadingStep === 'continue') {\n step = 'continue';\n strategy = undefined;\n action = 'action' in event ? event.action : undefined;\n\n return context.parent.send({\n type: 'LOADING',\n isLoading: true,\n step,\n strategy,\n action,\n });\n } else if (context.loadingStep === 'reset-password') {\n step = 'reset-password';\n strategy = undefined;\n action = 'action' in event ? event.action : undefined;\n\n return context.parent.send({\n type: 'LOADING',\n isLoading: true,\n step,\n strategy,\n action,\n });\n } else if (context.loadingStep === 'start') {\n step = 'start';\n strategy = undefined;\n action = 'action' in event ? event.action : undefined;\n\n return context.parent.send({\n type: 'LOADING',\n isLoading: true,\n step,\n strategy,\n action,\n });\n } else {\n step = context.loadingStep;\n strategy = undefined;\n action = 'action' in event ? event.action : undefined;\n\n return context.parent.send({\n type: 'LOADING',\n isLoading: true,\n step,\n strategy,\n action,\n });\n }\n}\n","// These utilities are ported from: packages/clerk-js/src/ui/components/SignIn/utils.ts\n// They should be functionally identical.\nimport { isWebAuthnSupported } from '@clerk/shared/webauthn';\nimport type {\n PreferredSignInStrategy,\n SignInFactor,\n SignInFirstFactor,\n SignInSecondFactor,\n SignInStrategy,\n} from '@clerk/types';\n\n// Factor sorting - https://github.com/clerk/javascript/blob/5764e2911790051589bb5c4f3b1a2c79f7f30c7e/packages/clerk-js/src/ui/utils/factorSorting.ts\nconst makeSortingOrderMap = <T extends string>(arr: T[]): Record<T, number> =>\n arr.reduce(\n (acc, k, i) => {\n acc[k] = i;\n return acc;\n },\n {} as Record<T, number>,\n );\n\nconst STRATEGY_SORT_ORDER_PASSWORD_PREF = makeSortingOrderMap([\n 'passkey',\n 'password',\n 'email_link',\n 'email_code',\n 'phone_code',\n] as SignInStrategy[]);\n\nconst STRATEGY_SORT_ORDER_OTP_PREF = makeSortingOrderMap([\n 'email_code',\n 'email_link',\n 'phone_code',\n 'passkey',\n 'password',\n] as SignInStrategy[]);\n\nconst makeSortingFunction =\n (sortingMap: Record<SignInStrategy, number>) =>\n (a: SignInFactor, b: SignInFactor): number => {\n const orderA = sortingMap[a.strategy];\n const orderB = sortingMap[b.strategy];\n if (orderA === undefined || orderB === undefined) {\n return 0;\n }\n return orderA - orderB;\n };\n\nconst passwordPrefFactorComparator = makeSortingFunction(STRATEGY_SORT_ORDER_PASSWORD_PREF);\nconst otpPrefFactorComparator = makeSortingFunction(STRATEGY_SORT_ORDER_OTP_PREF);\n\nconst findFactorForIdentifier = (i: string | null) => (f: SignInFactor) => {\n return 'safeIdentifier' in f && f.safeIdentifier === i;\n};\n\n// The algorithm can be found at\n// https://www.notion.so/clerkdev/Implement-sign-in-alt-methods-e6e60ffb644645b3a0553b50556468ce\nexport function determineStartingSignInFactor(\n firstFactors: SignInFirstFactor[] | null,\n identifier: string | null,\n preferredSignInStrategy?: PreferredSignInStrategy,\n) {\n if (!firstFactors || firstFactors.length === 0) {\n return null;\n }\n\n return preferredSignInStrategy === 'password'\n ? determineStrategyWhenPasswordIsPreferred(firstFactors, identifier)\n : determineStrategyWhenOTPIsPreferred(firstFactors, identifier);\n}\n\nfunction findPasskeyStrategy(factors: SignInFirstFactor[]) {\n if (isWebAuthnSupported()) {\n const passkeyFactor = factors.find(({ strategy }) => strategy === 'passkey');\n\n if (passkeyFactor) {\n return passkeyFactor;\n }\n }\n return null;\n}\n\nfunction determineStrategyWhenPasswordIsPreferred(factors: SignInFirstFactor[], identifier: string | null) {\n const passkeyFactor = findPasskeyStrategy(factors);\n if (passkeyFactor) {\n return passkeyFactor;\n }\n const selected = factors.sort(passwordPrefFactorComparator)[0];\n if (selected.strategy === 'password') {\n return selected;\n }\n return factors.find(findFactorForIdentifier(identifier)) || selected || null;\n}\n\nfunction determineStrategyWhenOTPIsPreferred(factors: SignInFirstFactor[], identifier: string | null) {\n const passkeyFactor = findPasskeyStrategy(factors);\n if (passkeyFactor) {\n return passkeyFactor;\n }\n\n const sortedBasedOnPrefFactor = factors.sort(otpPrefFactorComparator);\n const forIdentifier = sortedBasedOnPrefFactor.find(findFactorForIdentifier(identifier));\n if (forIdentifier) {\n return forIdentifier;\n }\n const firstBasedOnPref = sortedBasedOnPrefFactor[0];\n if (firstBasedOnPref.strategy === 'email_link') {\n return firstBasedOnPref;\n }\n return factors.find(findFactorForIdentifier(identifier)) || firstBasedOnPref || null;\n}\n\n// The priority of second factors is: TOTP -> Phone code -> any other factor\nexport function determineStartingSignInSecondFactor(secondFactors: SignInSecondFactor[] | null) {\n if (!secondFactors || secondFactors.length === 0) {\n return null;\n }\n\n const totpFactor = secondFactors.find(f => f.strategy === 'totp');\n if (totpFactor) {\n return totpFactor;\n }\n\n const phoneCodeFactor = secondFactors.find(f => f.strategy === 'phone_code');\n if (phoneCodeFactor) {\n return phoneCodeFactor;\n }\n\n return secondFactors[0];\n}\n","import type { DoneActorEvent, ErrorActorEvent, EventObject } from 'xstate';\n\nexport function assertIsDefined<T>(value: T, label?: string): asserts value is NonNullable<T> {\n if (value === undefined || value === null) {\n throw new Error(`${label || value} is not defined`);\n }\n}\n\nexport function assertActorEventDone<T>(event: EventObject): asserts event is DoneActorEvent<T> {\n if ('output' in event === false) {\n throw new Error(`Expected a done event, got \"${event.type}\"`);\n }\n}\n\nexport function assertActorEventError<T = Error>(event: EventObject): asserts event is ErrorActorEvent<T> {\n if ('error' in event === false) {\n throw new Error(`Expected an error event, got \"${event.type}\"`);\n }\n}\n","import type { ClerkAPIResponseError } from '@clerk/shared/error';\nimport type { SignInFactor } from '@clerk/types';\nimport type { ActorRefFrom, ErrorActorEvent } from 'xstate';\n\nimport type { FormMachine } from '~/internals/machines/form';\nimport type { SignInStrategyName } from '~/internals/machines/shared';\n\nimport type { SignInRouterMachineActorRef } from './router.types';\n\n// ---------------------------------- Tags ---------------------------------- //\n\nexport type SignInVerificationTags =\n | 'state:attempting'\n | 'state:choose-strategy'\n | 'state:forgot-password'\n | 'state:loading'\n | 'state:pending'\n | 'state:preparing';\n\n// ---------------------------------- Events ---------------------------------- //\n\nexport type SignInVerificationSubmitEvent = { type: 'SUBMIT'; action: 'submit' };\nexport type SignInVerificationFactorUpdateEvent = { type: 'STRATEGY.UPDATE'; factor: SignInFactor | undefined };\nexport type SignInVerificationRetryEvent = { type: 'RETRY' };\nexport type SignInVerificationStrategyRegisterEvent = { type: 'STRATEGY.REGISTER'; factor: SignInStrategyName };\nexport type SignInVerificationStrategyUnregisterEvent = { type: 'STRATEGY.UNREGISTER'; factor: SignInStrategyName };\n\nexport type SignInVerificationEvents =\n | ErrorActorEvent\n | SignInVerificationSubmitEvent\n | SignInVerificationFactorUpdateEvent\n | SignInVerificationRetryEvent\n | SignInVerificationStrategyRegisterEvent\n | SignInVerificationStrategyUnregisterEvent;\n\n// ---------------------------------- Input ---------------------------------- //\n\nexport interface SignInVerificationInput {\n formRef: ActorRefFrom<typeof FormMachine>;\n parent: SignInRouterMachineActorRef;\n basePath?: string;\n}\n\n// ---------------------------------- Context ---------------------------------- //\n\nexport interface SignInVerificationContext {\n currentFactor: SignInFactor | null;\n error?: Error | ClerkAPIResponseError;\n formRef: ActorRefFrom<typeof FormMachine>;\n parent: SignInRouterMachineActorRef;\n loadingStep: 'verifications';\n registeredStrategies: Set<SignInStrategyName>;\n resendable: boolean;\n resendableAfter: number;\n basePath?: string;\n}\n\n// ---------------------------------- Delays ---------------------------------- //\n\nexport const SignInVerificationDelays = {\n resendableTimeout: 1_000, // 1 second\n} as const;\n\nexport type SignInVerificationDelays = keyof typeof SignInVerificationDelays;\n\n// ---------------------------------- Schema ---------------------------------- //\n\nexport interface SignInVerificationSchema {\n context: SignInVerificationContext;\n input: SignInVerificationInput;\n delays: SignInVerificationDelays;\n events: SignInVerificationEvents;\n tags: SignInVerificationTags;\n}\n","import { joinURL } from '@clerk/shared/url';\nimport { isWebAuthnAutofillSupported } from '@clerk/shared/webauthn';\nimport type { SignInStatus } from '@clerk/types';\nimport type { NonReducibleUnknown } from 'xstate';\nimport { and, assign, enqueueActions, fromPromise, log, not, or, raise, sendTo, setup } from 'xstate';\n\nimport {\n CHOOSE_SESSION_PATH_ROUTE,\n ERROR_CODES,\n ROUTING,\n SEARCH_PARAMS,\n SIGN_IN_DEFAULT_BASE_PATH,\n SIGN_UP_DEFAULT_BASE_PATH,\n SSO_CALLBACK_PATH_ROUTE,\n} from '~/internals/constants';\nimport { ClerkElementsError, ClerkElementsRuntimeError } from '~/internals/errors';\nimport { ThirdPartyMachine, ThirdPartyMachineId } from '~/internals/machines/third-party';\nimport { shouldUseVirtualRouting } from '~/internals/machines/utils/next';\n\nimport { FormMachine } from '../form';\nimport { SignInResetPasswordMachine } from './reset-password.machine';\nimport type {\n SignInRouterContext,\n SignInRouterEvents,\n SignInRouterNextEvent,\n SignInRouterSchema,\n SignInRouterSessionSetActiveEvent,\n} from './router.types';\nimport { SignInStartMachine } from './start.machine';\nimport { SignInFirstFactorMachine, SignInSecondFactorMachine } from './verification.machine';\n\nexport type TSignInRouterMachine = typeof SignInRouterMachine;\n\nconst isCurrentPath =\n (path: `/${string}`) =>\n ({ context }: { context: SignInRouterContext }, _params?: NonReducibleUnknown) => {\n return context.router?.match(path) ?? false;\n };\n\nconst needsStatus =\n (status: SignInStatus) =>\n ({ context, event }: { context: SignInRouterContext; event?: SignInRouterEvents }, _?: NonReducibleUnknown) =>\n (event as SignInRouterNextEvent)?.resource?.status === status || context.clerk?.client.signIn.status === status;\n\nexport const SignInRouterMachineId = 'SignInRouter';\n\nexport const SignInRouterMachine = setup({\n actors: {\n firstFactorMachine: SignInFirstFactorMachine,\n formMachine: FormMachine,\n resetPasswordMachine: SignInResetPasswordMachine,\n startMachine: SignInStartMachine,\n secondFactorMachine: SignInSecondFactorMachine,\n thirdPartyMachine: ThirdPartyMachine,\n webAuthnAutofillSupport: fromPromise(() => isWebAuthnAutofillSupported()),\n },\n actions: {\n clearFormErrors: sendTo(({ context }) => context.formRef, { type: 'ERRORS.CLEAR' }),\n navigateInternal: ({ context }, { path, force = false }: { path: string; force?: boolean }) => {\n if (!context.router) {\n return;\n }\n if (!force && shouldUseVirtualRouting()) {\n return;\n }\n if (context.exampleMode) {\n return;\n }\n\n const resolvedPath = joinURL(context.router.basePath, path);\n if (resolvedPath === context.router.pathname()) {\n return;\n }\n\n context.router.shallowPush(resolvedPath);\n },\n navigateExternal: ({ context }, { path }: { path: string }) => context.router?.push(path),\n raiseNext: raise({ type: 'NEXT' }),\n setActive: enqueueActions(({ enqueue, check, context, event }) => {\n if (check('isExampleMode')) {\n return;\n }\n\n const id = (event as SignInRouterSessionSetActiveEvent)?.id;\n const lastActiveSessionId = context.clerk.client.lastActiveSessionId;\n const createdSessionId = ((event as SignInRouterNextEvent)?.resource || context.clerk.client.signIn)\n .createdSessionId;\n\n const session = id || createdSessionId || lastActiveSessionId || null;\n\n void context.clerk.setActive({\n session,\n redirectUrl: context.clerk.buildAfterSignInUrl({\n params: context.router?.searchParams(),\n }),\n });\n\n enqueue.raise({ type: 'RESET' }, { delay: 2000 }); // Reset machine after 2s delay.\n }),\n setError: assign({\n error: (_, { error }: { error?: ClerkElementsError }) => {\n if (error) {\n return error;\n }\n return new ClerkElementsRuntimeError('Unknown error');\n },\n }),\n setFormErrors: ({ context }, params: { error: Error }) =>\n sendTo(context.formRef, {\n type: 'ERRORS.SET',\n error: params.error,\n }),\n setFormOAuthErrors: ({ context }) => {\n const errorOrig = context.clerk.client.signIn.firstFactorVerification.error;\n\n if (!errorOrig) {\n return;\n }\n\n let error: ClerkElementsError;\n\n switch (errorOrig.code) {\n case ERROR_CODES.NOT_ALLOWED_TO_SIGN_UP:\n case ERROR_CODES.OAUTH_ACCESS_DENIED:\n case ERROR_CODES.NOT_ALLOWED_ACCESS:\n case ERROR_CODES.SAML_USER_ATTRIBUTE_MISSING:\n case ERROR_CODES.OAUTH_EMAIL_DOMAIN_RESERVED_BY_SAML:\n case ERROR_CODES.USER_LOCKED:\n case ERROR_CODES.ENTERPRISE_SSO_USER_ATTRIBUTE_MISSING:\n case ERROR_CODES.ENTERPRISE_SSO_EMAIL_ADDRESS_DOMAIN_MISMATCH:\n case ERROR_CODES.ENTERPRISE_SSO_HOSTED_DOMAIN_MISMATCH:\n case ERROR_CODES.SAML_EMAIL_ADDRESS_DOMAIN_MISMATCH:\n case ERROR_CODES.ORGANIZATION_MEMBERSHIP_QUOTA_EXCEEDED_FOR_SSO:\n error = new ClerkElementsError(errorOrig.code, errorOrig.longMessage || '');\n break;\n default:\n error = new ClerkElementsError(\n 'unable_to_complete',\n 'Unable to complete action at this time. If the problem persists please contact support.',\n );\n }\n\n context.formRef.send({\n type: 'ERRORS.SET',\n error,\n });\n },\n transfer: ({ context }) => {\n const searchParams = new URLSearchParams({ __clerk_transfer: '1' });\n context.router?.push(`${context.signUpPath}?${searchParams}`);\n },\n },\n guards: {\n hasAuthenticatedViaClerkJS: ({ context }) =>\n Boolean(context.clerk.client.signIn.status === null && context.clerk.client.lastActiveSessionId),\n hasOAuthError: ({ context }) => Boolean(context.clerk?.client?.signIn?.firstFactorVerification?.error),\n hasResource: ({ context }) => Boolean(context.clerk?.client?.signIn?.status),\n hasTicket: ({ context }) => Boolean(context.ticket),\n\n isLoggedInAndSingleSession: and(['isLoggedIn', 'isSingleSessionMode', not('isExampleMode')]),\n isActivePathRoot: isCurrentPath('/'),\n isComplete: ({ context, event }) => {\n const resource = (event as SignInRouterNextEvent)?.resource;\n const signIn = context.clerk.client.signIn;\n\n return (\n (resource?.status === 'complete' && Boolean(resource?.createdSessionId)) ||\n (signIn.status === 'complete' && Boolean(signIn.createdSessionId))\n );\n },\n isLoggedIn: ({ context }) => Boolean(context.clerk?.user),\n isSingleSessionMode: ({ context }) => Boolean(context.clerk?.__unstable__environment?.authConfig.singleSessionMode),\n isExampleMode: ({ context }) => Boolean(context.exampleMode),\n\n needsStart: or([not('hasResource'), 'statusNeedsIdentifier', isCurrentPath('/')]),\n needsFirstFactor: and(['statusNeedsFirstFactor', isCurrentPath('/continue')]),\n needsSecondFactor: and(['statusNeedsSecondFactor', isCurrentPath('/continue')]),\n needsCallback: isCurrentPath(SSO_CALLBACK_PATH_ROUTE),\n needsChooseSession: isCurrentPath(CHOOSE_SESSION_PATH_ROUTE),\n needsNewPassword: and(['statusNeedsNewPassword', isCurrentPath('/new-password')]),\n\n statusNeedsIdentifier: needsStatus('needs_identifier'),\n statusNeedsFirstFactor: needsStatus('needs_first_factor'),\n statusNeedsSecondFactor: needsStatus('needs_second_factor'),\n statusNeedsNewPassword: needsStatus('needs_new_password'),\n },\n types: {} as SignInRouterSchema,\n}).createMachine({\n id: SignInRouterMachineId,\n // @ts-expect-error - Set in INIT event\n context: {},\n initial: 'Idle',\n on: {\n 'AUTHENTICATE.OAUTH': {\n actions: sendTo(ThirdPartyMachineId, ({ context, event }) => ({\n type: 'REDIRECT',\n params: {\n strategy: event.strategy,\n redirectUrl: `${\n context.router?.mode === ROUTING.virtual\n ? context.clerk.__unstable__environment?.displayConfig.signInUrl\n : context.router?.basePath\n }${SSO_CALLBACK_PATH_ROUTE}`,\n redirectUrlComplete: context.clerk.buildAfterSignInUrl({\n params: context.router?.searchParams(),\n }),\n },\n })),\n },\n 'AUTHENTICATE.SAML': {\n actions: sendTo(ThirdPartyMachineId, ({ context }) => ({\n type: 'REDIRECT',\n params: {\n strategy: 'saml',\n identifier: context.formRef.getSnapshot().context.fields.get('identifier')?.value,\n redirectUrl: `${\n context.router?.mode === ROUTING.virtual\n ? context.clerk.__unstable__environment?.displayConfig.signInUrl\n : context.router?.basePath\n }${SSO_CALLBACK_PATH_ROUTE}`,\n redirectUrlComplete: context.clerk.buildAfterSignInUrl({\n params: context.router?.searchParams(),\n }),\n },\n })),\n },\n 'AUTHENTICATE.ENTERPRISE_SSO': {\n actions: sendTo(ThirdPartyMachineId, ({ context }) => ({\n type: 'REDIRECT',\n params: {\n strategy: 'enterprise_sso',\n identifier: context.formRef.getSnapshot().context.fields.get('identifier')?.value,\n redirectUrl: `${\n context.router?.mode === ROUTING.virtual\n ? context.clerk.__unstable__environment?.displayConfig.signInUrl\n : context.router?.basePath\n }${SSO_CALLBACK_PATH_ROUTE}`,\n redirectUrlComplete: context.clerk.buildAfterSignInUrl({\n params: context.router?.searchParams(),\n }),\n },\n })),\n },\n 'FORM.ATTACH': {\n description: 'Attach/re-attach the form to the router.',\n actions: enqueueActions(({ enqueue, event }) => {\n enqueue.assign({\n formRef: event.formRef,\n });\n\n // Reset the current step, to reset the form reference.\n enqueue.raise({ type: 'RESET.STEP' });\n }),\n },\n 'NAVIGATE.PREVIOUS': '.Hist',\n 'NAVIGATE.START': '.Start',\n LOADING: {\n actions: assign(({ event }) => ({\n loading: {\n isLoading: event.isLoading,\n step: event.step,\n strategy: event.strategy,\n action: event.action,\n },\n })),\n },\n RESET: '.Idle',\n },\n states: {\n Idle: {\n invoke: {\n id: 'webAuthnAutofill',\n src: 'webAuthnAutofillSupport',\n onDone: {\n actions: assign({ webAuthnAutofillSupport: ({ event }) => event.output }),\n },\n },\n on: {\n INIT: {\n actions: assign(({ event }) => {\n const searchParams = event.router?.searchParams();\n\n return {\n clerk: event.clerk,\n exampleMode: event.exampleMode || false,\n formRef: event.formRef,\n loading: {\n isLoading: false,\n },\n router: event.router,\n signUpPath: event.signUpPath || SIGN_UP_DEFAULT_BASE_PATH,\n ticket: searchParams?.get(SEARCH_PARAMS.ticket) || undefined,\n };\n }),\n target: 'Init',\n },\n },\n },\n Init: {\n entry: enqueueActions(({ context, enqueue, self }) => {\n if (!self.getSnapshot().children[ThirdPartyMachineId]) {\n enqueue.spawnChild('thirdPartyMachine', {\n id: ThirdPartyMachineId,\n systemId: ThirdPartyMachineId,\n input: {\n basePath: context.router?.basePath ?? SIGN_IN_DEFAULT_BASE_PATH,\n flow: 'signIn',\n formRef: context.formRef,\n parent: self,\n },\n });\n }\n }),\n always: [\n {\n guard: 'needsCallback',\n target: 'Callback',\n },\n {\n guard: 'needsChooseSession',\n target: 'ChooseSession',\n },\n {\n guard: 'isComplete',\n actions: 'setActive',\n },\n {\n guard: 'isLoggedInAndSingleSession',\n actions: [\n log('Already logged in'),\n {\n type: 'navigateExternal',\n params: ({ context }) => ({\n path: context.clerk.buildAfterSignInUrl({\n params: context.router?.searchParams(),\n }),\n }),\n },\n ],\n },\n {\n guard: 'needsStart',\n actions: { type: 'navigateInternal', params: { force: true, path: '/' } },\n target: 'Start',\n },\n {\n guard: 'needsFirstFactor',\n actions: { type: 'navigateInternal', params: { force: true, path: '/continue' } },\n target: 'FirstFactor',\n },\n {\n guard: 'needsSecondFactor',\n actions: { type: 'navigateInternal', params: { force: true, path: '/continue' } },\n target: 'SecondFactor',\n },\n {\n guard: 'needsNewPassword',\n actions: { type: 'navigateInternal', params: { force: true, path: '/reset-password' } },\n target: 'ResetPassword',\n },\n {\n actions: { type: 'navigateInternal', params: { force: true, path: '/' } },\n target: 'Start',\n },\n {\n guard: 'hasTicket',\n actions: { type: 'navigateInternal', params: { force: true, path: '/' } },\n target: 'Start',\n },\n ],\n },\n Start: {\n tags: ['step:start'],\n exit: 'clearFormErrors',\n invoke: {\n id: 'start',\n src: 'startMachine',\n input: ({ context, self }) => ({\n basePath: context.router?.basePath,\n formRef: context.formRef,\n parent: self,\n ticket: context.ticket,\n }),\n onDone: {\n actions: 'raiseNext',\n },\n },\n on: {\n 'RESET.STEP': {\n target: 'Start',\n reenter: true,\n },\n 'AUTHENTICATE.PASSKEY': {\n actions: sendTo('start', ({ event }) => event),\n },\n 'AUTHENTICATE.PASSKEY.AUTOFILL': {\n actions: sendTo('start', ({ event }) => event),\n },\n 'AUTHENTICATE.WEB3': {\n actions: sendTo('start', ({ event }) => event),\n },\n NEXT: [\n {\n guard: 'isComplete',\n actions: 'setActive',\n },\n {\n guard: 'statusNeedsFirstFactor',\n actions: { type: 'navigateInternal', params: { path: '/continue' } },\n target: 'FirstFactor',\n },\n {\n guard: 'statusNeedsSecondFactor',\n actions: { type: 'navigateInternal', params: { path: '/continue' } },\n target: 'SecondFactor',\n },\n {\n guard: 'statusNeedsNewPassword',\n actions: { type: 'navigateInternal', params: { path: '/reset-password' } },\n target: 'ResetPassword',\n },\n ],\n },\n },\n FirstFactor: {\n tags: ['step:first-factor', 'step:verifications'],\n invoke: {\n id: 'firstFactor',\n src: 'firstFactorMachine',\n input: ({ context, self }) => ({\n formRef: context.formRef,\n parent: self,\n basePath: context.router?.basePath,\n }),\n onDone: {\n actions: 'raiseNext',\n },\n },\n on: {\n 'AUTHENTICATE.PASSKEY': {\n actions: sendTo('firstFactor', ({ event }) => event),\n },\n 'RESET.STEP': {\n target: 'FirstFactor',\n reenter: true,\n },\n NEXT: [\n {\n guard: 'isComplete',\n actions: 'setActive',\n },\n {\n guard: 'statusNeedsSecondFactor',\n actions: { type: 'navigateInternal', params: { path: '/continue' } },\n target: 'SecondFactor',\n },\n {\n guard: 'statusNeedsNewPassword',\n actions: { type: 'navigateInternal', params: { path: '/reset-password' } },\n target: 'ResetPassword',\n },\n ],\n 'STRATEGY.UPDATE': {\n description: 'Send event to verification machine to update the current strategy.',\n actions: sendTo('firstFactor', ({ event }) => event),\n target: '.Idle',\n },\n },\n initial: 'Idle',\n states: {\n Idle: {\n on: {\n 'NAVIGATE.FORGOT_PASSWORD': {\n description: 'Navigate to forgot password screen.',\n actions: sendTo('firstFactor', ({ event }) => event),\n target: 'ForgotPassword',\n },\n 'NAVIGATE.CHOOSE_STRATEGY': {\n description: 'Navigate to choose strategy screen.',\n actions: sendTo('firstFactor', ({ event }) => event),\n target: 'ChoosingStrategy',\n },\n },\n },\n ChoosingStrategy: {\n tags: ['step:choose-strategy'],\n on: {\n 'NAVIGATE.PREVIOUS': {\n description: 'Go to Idle, and also tell firstFactor to go to Pending',\n target: 'Idle',\n actions: sendTo('firstFactor', { type: 'NAVIGATE.PREVIOUS' }),\n },\n },\n },\n ForgotPassword: {\n tags: ['step:forgot-password'],\n on: {\n 'NAVIGATE.PREVIOUS': 'Idle',\n },\n },\n },\n },\n SecondFactor: {\n tags: ['step:second-factor', 'step:verifications'],\n invoke: {\n id: 'secondFactor',\n src: 'secondFactorMachine',\n input: ({ context, self }) => ({\n formRef: context.formRef,\n parent: self,\n }),\n onDone: {\n actions: 'raiseNext',\n },\n },\n on: {\n 'RESET.STEP': {\n target: 'SecondFactor',\n reenter: true,\n },\n NEXT: [\n {\n guard: 'isComplete',\n actions: 'setActive',\n },\n {\n guard: 'statusNeedsNewPassword',\n actions: { type: 'navigateInternal', params: { path: '/reset-password' } },\n target: 'ResetPassword',\n },\n ],\n 'STRATEGY.UPDATE': {\n description: 'Send event to verification machine to update the current strategy.',\n actions: sendTo('secondFactor', ({ event }) => event),\n target: '.Idle',\n },\n },\n initial: 'Idle',\n states: {\n Idle: {\n on: {\n 'NAVIGATE.CHOOSE_STRATEGY': {\n description: 'Navigate to choose strategy screen.',\n actions: sendTo('secondFactor', ({ event }) => event),\n target: 'ChoosingStrategy',\n },\n },\n },\n ChoosingStrategy: {\n tags: ['step:choose-strategy'],\n on: {\n 'NAVIGATE.PREVIOUS': {\n description: 'Go to Idle, and also tell firstFactor to go to Pending',\n target: 'Idle',\n actions: sendTo('secondFactor', { type: 'NAVIGATE.PREVIOUS' }),\n },\n },\n },\n },\n },\n ResetPassword: {\n tags: ['step:reset-password'],\n invoke: {\n id: 'resetPassword',\n src: 'resetPasswordMachine',\n input: ({ context, self }) => ({\n formRef: context.formRef,\n parent: self,\n }),\n onDone: {\n actions: 'raiseNext',\n },\n },\n on: {\n 'RESET.STEP': {\n target: 'ResetPassword',\n reenter: true,\n },\n NEXT: [\n {\n guard: 'isComplete',\n actions: 'setActive',\n },\n {\n guard: 'statusNeedsFirstFactor',\n actions: { type: 'navigateInternal', params: { path: '/continue' } },\n target: 'FirstFactor',\n },\n {\n guard: 'statusNeedsSecondFactor',\n actions: { type: 'navigateInternal', params: { path: '/continue' } },\n target: 'SecondFactor',\n },\n ],\n },\n },\n Callback: {\n tags: ['step:callback'],\n entry: sendTo(ThirdPartyMachineId, { type: 'CALLBACK' }),\n on: {\n NEXT: [\n {\n guard: 'hasOAuthError',\n actions: ['setFormOAuthErrors', { type: 'navigateInternal', params: { force: true, path: '/' } }],\n target: 'Start',\n },\n {\n guard: or(['isLoggedIn', 'isComplete', 'hasAuthenticatedViaClerkJS']),\n actions: 'setActive',\n },\n {\n guard: 'statusNeedsIdentifier',\n actions: 'transfer',\n },\n {\n guard: 'statusNeedsFirstFactor',\n actions: { type: 'navigateInternal', params: { path: '/continue' } },\n target: 'FirstFactor',\n },\n {\n guard: 'statusNeedsSecondFactor',\n actions: { type: 'navigateInternal', params: { path: '/continue' } },\n target: 'SecondFactor',\n },\n {\n guard: 'statusNeedsNewPassword',\n actions: { type: 'navigateInternal', params: { path: '/reset-password' } },\n target: 'ResetPassword',\n },\n ],\n },\n },\n ChooseSession: {\n tags: ['step:choose-session'],\n on: {\n 'SESSION.SET_ACTIVE': {\n actions: {\n type: 'setActive',\n params: ({ event }) => ({ id: event.id }),\n },\n },\n },\n },\n Error: {\n tags: ['step:error'],\n on: {\n NEXT: {\n target: 'Start',\n actions: 'clearFormErrors',\n },\n },\n },\n Hist: {\n type: 'history',\n exit: 'clearFormErrors',\n },\n },\n});\n","import type {\n AuthenticateWithRedirectParams,\n HandleOAuthCallbackParams,\n HandleSamlCallbackParams,\n LoadedClerk,\n} from '@clerk/types';\nimport type { SetOptional } from 'type-fest';\nimport type { AnyActorRef, AnyEventObject } from 'xstate';\nimport { fromCallback, fromPromise } from 'xstate';\n\nimport { ClerkElementsRuntimeError } from '~/internals/errors';\nimport type { WithParams, WithUnsafeMetadata } from '~/internals/machines/shared';\nimport { ClerkJSNavigationEvent, isClerkJSNavigationEvent } from '~/internals/machines/utils/clerkjs';\n\ntype OptionalRedirectParams = 'redirectUrl' | 'redirectUrlComplete';\n\nexport type AuthenticateWithRedirectSignInParams = SetOptional<AuthenticateWithRedirectParams, OptionalRedirectParams>;\nexport type AuthenticateWithRedirectSignUpParams = SetOptional<\n WithUnsafeMetadata<AuthenticateWithRedirectParams>,\n OptionalRedirectParams\n>;\n\nexport type AuthenticateWithRedirectInput = (\n | (WithParams<AuthenticateWithRedirectSignInParams> & { flow: 'signIn' })\n | (WithParams<AuthenticateWithRedirectSignUpParams> & { flow: 'signUp' })\n) & { basePath: string; parent: AnyActorRef }; // TODO: Fix circular dependency\n\nexport const redirect = fromPromise<void, AuthenticateWithRedirectInput>(\n async ({ input: { flow, params, parent } }) => {\n const clerk: LoadedClerk = parent.getSnapshot().context.clerk;\n\n return clerk.client[flow].authenticateWithRedirect({\n redirectUrl: clerk.buildUrlWithAuth(params.redirectUrl || '/'),\n redirectUrlComplete: clerk.buildUrlWithAuth(params.redirectUrlComplete || '/'),\n ...params,\n });\n },\n);\n\nexport type HandleRedirectCallbackParams<T = Required<HandleOAuthCallbackParams | HandleSamlCallbackParams>> = {\n [K in keyof T]: NonNullable<T[K]>;\n};\n\nexport type HandleRedirectCallbackInput = AnyActorRef;\n\n/**\n * This function hijacks handleRedirectCallback from ClerkJS to handle navigation events\n * from the state machine.\n */\nexport const handleRedirectCallback = fromCallback<AnyEventObject, HandleRedirectCallbackInput>(\n ({ sendBack, input: parent }) => {\n const clerk: LoadedClerk = parent.getSnapshot().context.clerk;\n const displayConfig = clerk.__unstable__environment?.displayConfig;\n\n const customNavigate = (toEvt: string) => {\n const to = toEvt.split('/').slice(-1)[0];\n\n if (isClerkJSNavigationEvent(to)) {\n // Handle known redefined navigation events\n sendBack({ type: to });\n } else if (to === displayConfig?.signInUrl) {\n // Handle known non-redefined sign-in navigation events\n sendBack({ type: ClerkJSNavigationEvent.signIn });\n } else if (to === displayConfig?.signUpUrl) {\n // Handle known non-redefined sign-up navigation events\n sendBack({ type: ClerkJSNavigationEvent.signUp });\n } else {\n // Handle unknown navigation events\n sendBack({ type: 'FAILURE', error: new ClerkElementsRuntimeError(`Unknown navigation event: ${to}`) });\n }\n\n return Promise.resolve();\n };\n\n // @ts-expect-error - Clerk types are incomplete\n // TODO: Update local Clerk types\n const loadedClerk = (clerk.clerkjs ?? clerk) as LoadedClerk;\n\n void loadedClerk.handleRedirectCallback(\n {\n continueSignUpUrl: ClerkJSNavigationEvent.continue,\n firstFactorUrl: ClerkJSNavigationEvent.signIn,\n resetPasswordUrl: ClerkJSNavigationEvent.resetPassword,\n secondFactorUrl: ClerkJSNavigationEvent.signIn,\n verifyEmailAddressUrl: ClerkJSNavigationEvent.verification,\n verifyPhoneNumberUrl: ClerkJSNavigationEvent.verification,\n signUpUrl: ClerkJSNavigationEvent.signUp,\n signInUrl: ClerkJSNavigationEvent.signIn,\n } satisfies HandleOAuthCallbackParams,\n customNavigate,\n );\n\n return () => void 0;\n },\n);\n","import type { Simplify } from 'type-fest';\n\n// ================= Types ================= //\n\nexport type ClerkJSEventCategory = 'NAVIGATE';\nexport type ClerkJSEvent<T extends ClerkJSEventCategory = ClerkJSEventCategory> = `CLERKJS.${T}.${string}`;\nexport type ClerkJSEventObject<T extends ClerkJSEventCategory = ClerkJSEventCategory> = Simplify<\n Record<string, ClerkJSEvent<T>>\n>;\nexport type ClerkJSEventExtractCategory<S extends string> = S extends `CLERKJS.${infer T}.${string}` ? T : never;\n\n// ================= Type Narrowing ================= //\n\nexport function isClerkJSEvent<T extends ClerkJSEventObject<ClerkJSEventExtractCategory<E>>, E extends ClerkJSEvent>(\n eventObj: T,\n event: E,\n): event is typeof event {\n return Object.values(eventObj).includes(event as any);\n}\n\n// ================= ClerkJSNavigationEvent ================= //\n\nexport type ClerkJSNavigationEvent = (typeof ClerkJSNavigationEvent)[keyof typeof ClerkJSNavigationEvent];\nexport const ClerkJSNavigationEvent: ClerkJSEventObject<'NAVIGATE'> = {\n complete: 'CLERKJS.NAVIGATE.COMPLETE',\n signUp: 'CLERKJS.NAVIGATE.SIGN_UP',\n continue: 'CLERKJS.NAVIGATE.CONTINUE',\n generic: 'CLERKJS.NAVIGATE.GENERIC',\n resetPassword: 'CLERKJS.NAVIGATE.RESET_PASSWORD',\n signIn: 'CLERKJS.NAVIGATE.SIGN_IN',\n verification: 'CLERKJS.NAVIGATE.VERIFICATION',\n} as const;\n\nexport function isClerkJSNavigationEvent(event: unknown): event is ClerkJSNavigationEvent {\n return isClerkJSEvent(ClerkJSNavigationEvent, event as ClerkJSEvent<'NAVIGATE'>);\n}\n","import { assertEvent, assign, log, not, sendTo, setup } from 'xstate';\n\nimport { sendToLoading } from '~/internals/machines/shared';\nimport { assertActorEventError } from '~/internals/machines/utils/assert';\n\nimport { handleRedirectCallback, redirect } from './third-party.actors';\nimport type { ThirdPartyMachineSchema } from './third-party.types';\n\nexport const ThirdPartyMachineId = 'ThirdParty';\n\nexport type TThirdPartyMachine = typeof ThirdPartyMachine;\n\nexport const ThirdPartyMachine = setup({\n actors: {\n handleRedirectCallback,\n redirect,\n },\n actions: {\n logError: log(({ event }) => `Error: ${event.type}`),\n assignActiveStrategy: assign({\n activeStrategy: ({ event }) => {\n assertEvent(event, 'REDIRECT');\n return event.params.strategy;\n },\n }),\n unassignActiveStrategy: assign({\n activeStrategy: null,\n }),\n sendToNext: ({ context }) => context.parent.send({ type: 'NEXT' }),\n sendToLoading,\n setFormErrors: sendTo(\n ({ context }) => context.formRef,\n ({ event }) => {\n assertActorEventError(event);\n return {\n type: 'ERRORS.SET',\n error: event.error,\n };\n },\n ),\n },\n guards: {\n isExampleMode: ({ context }) => Boolean(context.parent.getSnapshot().context.exampleMode),\n },\n types: {} as ThirdPartyMachineSchema,\n}).createMachine({\n id: ThirdPartyMachineId,\n context: ({ input }) => ({\n activeStrategy: null,\n basePath: input.basePath,\n formRef: input.formRef,\n flow: input.flow,\n parent: input.parent,\n loadingStep: 'strategy',\n }),\n initial: 'Idle',\n states: {\n Idle: {\n description: 'Sets third-party providers if not already set, and waits for a redirect or callback event',\n on: {\n CALLBACK: 'HandlingCallback',\n REDIRECT: {\n guard: not('isExampleMode'),\n target: 'Redirecting',\n reenter: true,\n },\n },\n },\n Redirecting: {\n description: 'Redirects to the third-party provider for authentication',\n tags: ['state:redirect', 'state:loading'],\n entry: ['assignActiveStrategy', 'sendToLoading'],\n exit: ['unassignActiveStrategy', 'sendToLoading'],\n invoke: {\n id: 'redirect',\n src: 'redirect',\n input: ({ context, event }) => {\n assertEvent(event, 'REDIRECT');\n\n const legalAcceptedField = context.formRef.getSnapshot().context.fields.get('legalAccepted')?.checked;\n\n return {\n basePath: context.basePath,\n flow: context.flow,\n params: {\n ...event.params,\n legalAccepted: legalAcceptedField || undefined,\n },\n parent: context.parent,\n };\n },\n onError: {\n actions: 'setFormErrors',\n target: 'Idle',\n },\n },\n },\n HandlingCallback: {\n description: 'Handles the callback from the third-party provider',\n tags: ['state:callback', 'state:loading'],\n invoke: {\n id: 'handleRedirectCallback',\n src: 'handleRedirectCallback',\n input: ({ context }) => context.parent,\n onError: {\n actions: ['logError', 'setFormErrors'],\n target: 'Idle',\n },\n },\n on: {\n 'CLERKJS.NAVIGATE.*': {\n actions: 'sendToNext',\n target: 'Idle',\n },\n },\n },\n },\n});\n","import { NEXT_WINDOW_HISTORY_SUPPORT_VERSION } from '~/internals/constants';\n\nexport function shouldUseVirtualRouting() {\n if (typeof window === 'undefined') {\n return false;\n }\n\n if (!window.next) {\n return false;\n }\n\n return window.next.version < NEXT_WINDOW_HISTORY_SUPPORT_VERSION;\n}\n","import type { SignInResource } from '@clerk/types';\nimport type { DoneActorEvent } from 'xstate';\nimport { fromPromise, sendTo, setup } from 'xstate';\n\nimport type { FormFields } from '~/internals/machines/form';\nimport { sendToLoading } from '~/internals/machines/shared';\nimport { assertActorEventError } from '~/internals/machines/utils/assert';\n\nimport type { SignInResetPasswordSchema } from './reset-password.types';\nimport type { SignInRouterMachineActorRef } from './router.types';\n\nexport type TSignInResetPasswordMachine = typeof SignInResetPasswordMachine;\n\nexport const SignInResetPasswordMachineId = 'SignInResetPasswordMachine';\n\nexport const SignInResetPasswordMachine = setup({\n actors: {\n attempt: fromPromise<SignInResource, { parent: SignInRouterMachineActorRef; fields: FormFields }>(\n ({ input: { fields, parent } }) => {\n const password = (fields.get('password')?.value as string) || '';\n const signOutOfOtherSessions = fields.get('signOutOfOtherSessions')?.checked || false;\n return parent.getSnapshot().context.clerk.client.signIn.resetPassword({ password, signOutOfOtherSessions });\n },\n ),\n },\n actions: {\n sendToLoading,\n sendToNext: ({ context, event }) =>\n context.parent.send({ type: 'NEXT', resource: (event as unknown as DoneActorEvent<SignInResource>).output }),\n setFormErrors: sendTo(\n ({ context }) => context.formRef,\n ({ event }) => {\n assertActorEventError(event);\n return {\n type: 'ERRORS.SET',\n error: event.error,\n };\n },\n ),\n },\n types: {} as SignInResetPasswordSchema,\n}).createMachine({\n id: SignInResetPasswordMachineId,\n context: ({ input }) => ({\n loadingStep: 'reset-password',\n parent: input.parent,\n formRef: input.formRef,\n }),\n initial: 'Pending',\n states: {\n Pending: {\n tags: ['state:pending'],\n description: 'Waiting for user input',\n on: {\n SUBMIT: {\n target: 'Attempting',\n reenter: true,\n },\n },\n },\n Attempting: {\n tags: ['state:attempting', 'state:loading'],\n entry: 'sendToLoading',\n invoke: {\n id: 'attempt',\n src: 'attempt',\n input: ({ context }) => ({\n parent: context.parent,\n fields: context.formRef.getSnapshot().context.fields,\n }),\n onDone: {\n actions: ['sendToNext', 'sendToLoading'],\n },\n onError: {\n actions: ['setFormErrors', 'sendToLoading'],\n target: 'Pending',\n },\n },\n },\n },\n});\n","import type { SignInResource, Web3Strategy } from '@clerk/types';\nimport { assertEvent, enqueueActions, fromPromise, not, sendTo, setup } from 'xstate';\n\nimport { SIGN_IN_DEFAULT_BASE_PATH } from '~/internals/constants';\nimport { ClerkElementsRuntimeError } from '~/internals/errors';\nimport type { FormFields } from '~/internals/machines/form';\nimport { sendToLoading } from '~/internals/machines/shared';\nimport { assertActorEventError } from '~/internals/machines/utils/assert';\n\nimport type { SignInRouterMachineActorRef } from './router.types';\nimport type { SignInStartSchema } from './start.types';\n\nconst DISABLEABLE_FIELDS = ['emailAddress', 'phoneNumber'] as const;\n\nexport type TSignInStartMachine = typeof SignInStartMachine;\n\nexport const SignInStartMachineId = 'SignInStart';\n\ntype AttemptParams = { strategy: 'ticket'; ticket: string } | { strategy?: never; ticket?: never };\n\nexport const SignInStartMachine = setup({\n actors: {\n attemptPasskey: fromPromise<\n SignInResource,\n { parent: SignInRouterMachineActorRef; flow: 'autofill' | 'discoverable' | undefined }\n >(({ input: { parent, flow } }) => {\n return parent.getSnapshot().context.clerk.client.signIn.authenticateWithPasskey({\n flow,\n });\n }),\n attemptWeb3: fromPromise<SignInResource, { parent: SignInRouterMachineActorRef; strategy: Web3Strategy }>(\n ({ input: { parent, strategy } }) => {\n if (strategy === 'web3_metamask_signature') {\n return parent.getSnapshot().context.clerk.client.signIn.authenticateWithMetamask();\n }\n if (strategy === 'web3_coinbase_wallet_signature') {\n return parent.getSnapshot().context.clerk.client.signIn.authenticateWithCoinbaseWallet();\n }\n if (strategy === 'web3_base_signature') {\n return parent.getSnapshot().context.clerk.client.signIn.authenticateWithBase();\n }\n if (strategy === 'web3_okx_wallet_signature') {\n return parent.getSnapshot().context.clerk.client.signIn.authenticateWithOKXWallet();\n }\n throw new ClerkElementsRuntimeError(`Unsupported Web3 strategy: ${strategy}`);\n },\n ),\n attempt: fromPromise<\n SignInResource,\n { parent: SignInRouterMachineActorRef; fields: FormFields; params?: AttemptParams }\n >(({ input: { fields, parent, params } }) => {\n const clerk = parent.getSnapshot().context.clerk;\n\n const password = fields.get('password');\n const identifier = fields.get('identifier');\n\n const passwordParams = password?.value\n ? {\n password: password.value,\n strategy: 'password',\n }\n : {};\n\n return clerk.client.signIn.create({\n ...passwordParams,\n ...(params?.ticket\n ? params\n : {\n identifier: (identifier?.value as string) ?? '',\n }),\n });\n }),\n },\n actions: {\n sendToNext: ({ context, event }) => {\n // @ts-expect-error -- We're calling this in onDone, and event.output exists on the actor done event\n return context.parent.send({ type: 'NEXT', resource: event?.output });\n },\n sendToLoading,\n setFormDisabledTicketFields: enqueueActions(({ context, enqueue }) => {\n if (!context.ticket) {\n return;\n }\n\n const currentFields = context.formRef.getSnapshot().context.fields;\n\n for (const name of DISABLEABLE_FIELDS) {\n if (currentFields.has(name)) {\n enqueue.sendTo(context.formRef, { type: 'FIELD.DISABLE', field: { name } });\n }\n }\n }),\n setFormErrors: sendTo(\n ({ context }) => context.formRef,\n ({ event }) => {\n assertActorEventError(event);\n return {\n type: 'ERRORS.SET',\n error: event.error,\n };\n },\n ),\n },\n guards: {\n hasTicket: ({ context }) => Boolean(context.ticket),\n isExampleMode: ({ context }) => Boolean(context.parent.getSnapshot().context.exampleMode),\n },\n types: {} as SignInStartSchema,\n}).createMachine({\n id: SignInStartMachineId,\n context: ({ input }) => ({\n basePath: input.basePath || SIGN_IN_DEFAULT_BASE_PATH,\n parent: input.parent,\n formRef: input.formRef,\n loadingStep: 'start',\n ticket: input.ticket,\n }),\n initial: 'Init',\n states: {\n Init: {\n description: 'Handle ticket, if present; Else, default to Pending state.',\n always: [\n {\n guard: 'hasTicket',\n target: 'Attempting',\n },\n {\n target: 'Pending',\n },\n ],\n },\n Pending: {\n tags: ['state:pending'],\n description: 'Waiting for user input',\n on: {\n SUBMIT: {\n guard: not('isExampleMode'),\n target: 'Attempting',\n reenter: true,\n },\n 'AUTHENTICATE.PASSKEY': {\n guard: not('isExampleMode'),\n target: 'AttemptingPasskey',\n reenter: true,\n },\n 'AUTHENTICATE.PASSKEY.AUTOFILL': {\n guard: not('isExampleMode'),\n target: 'AttemptingPasskeyAutoFill',\n reenter: false,\n },\n 'AUTHENTICATE.WEB3': {\n guard: not('isExampleMode'),\n target: 'AttemptingWeb3',\n reenter: true,\n },\n },\n },\n Attempting: {\n tags: ['state:attempting', 'state:loading'],\n entry: 'sendToLoading',\n invoke: {\n id: 'attempt',\n src: 'attempt',\n input: ({ context }) => {\n // Standard fields\n const defaultParams = {\n fields: context.formRef.getSnapshot().context.fields,\n parent: context.parent,\n };\n\n // Handle ticket-specific flows\n const params: AttemptParams = context.ticket\n ? {\n strategy: 'ticket',\n ticket: context.ticket,\n }\n : {};\n\n return { ...defaultParams, params };\n },\n onDone: {\n actions: ['setFormDisabledTicketFields', 'sendToNext', 'sendToLoading'],\n },\n onError: {\n actions: ['setFormDisabledTicketFields', 'setFormErrors', 'sendToLoading'],\n target: 'Pending',\n },\n },\n },\n AttemptingPasskey: {\n tags: ['state:attempting', 'state:loading'],\n entry: 'sendToLoading',\n invoke: {\n id: 'attemptPasskey',\n src: 'attemptPasskey',\n input: ({ context }) => ({\n parent: context.parent,\n flow: 'discoverable',\n }),\n onDone: {\n actions: ['sendToNext', 'sendToLoading'],\n },\n onError: {\n actions: ['setFormErrors', 'sendToLoading'],\n target: 'Pending',\n },\n },\n },\n AttemptingPasskeyAutoFill: {\n on: {\n 'AUTHENTICATE.PASSKEY': {\n guard: not('isExampleMode'),\n target: 'AttemptingPasskey',\n reenter: true,\n },\n SUBMIT: {\n guard: not('isExampleMode'),\n target: 'Attempting',\n reenter: true,\n },\n },\n invoke: {\n id: 'attemptPasskeyAutofill',\n src: 'attemptPasskey',\n input: ({ context }) => ({\n parent: context.parent,\n flow: 'autofill',\n }),\n onDone: {\n actions: ['sendToNext'],\n },\n onError: {\n actions: ['setFormErrors'],\n target: 'Pending',\n },\n },\n },\n AttemptingWeb3: {\n tags: ['state:attempting', 'state:loading'],\n entry: 'sendToLoading',\n invoke: {\n id: 'attemptWeb3',\n src: 'attemptWeb3',\n input: ({ context, event }) => {\n assertEvent(event, 'AUTHENTICATE.WEB3');\n return {\n parent: context.parent,\n strategy: event.strategy,\n };\n },\n onDone: {\n actions: ['sendToNext', 'sendToLoading'],\n },\n onError: {\n actions: ['setFormErrors', 'sendToLoading'],\n target: 'Pending',\n },\n },\n },\n },\n});\n","import { titleize } from '@clerk/shared/underscore';\n\n// TODO: ideally the derivation of these values lives in FAPI and comes back directly from the API\n\nexport function formatName(...args: (string | undefined)[]): string | undefined {\n switch (args.length) {\n case 0:\n return undefined;\n case 1:\n return titleize(args[0]);\n default:\n return args.filter(Boolean).map(titleize).join(' ');\n }\n}\n\nexport function formatSalutation({\n firstName,\n lastName,\n identifier,\n}: {\n firstName: string | undefined;\n lastName: string | undefined;\n identifier: string | undefined | null;\n}): string {\n return (firstName && formatName(firstName)) || (lastName && formatName(lastName)) || identifier || '';\n}\n","import type { SignInStrategyName } from '~/internals/machines/shared';\nimport { formatSalutation } from '~/internals/machines/utils/formatters';\n\nimport type { SignInRouterSnapshot } from './router.types';\n\nexport function SignInSafeIdentifierSelectorForStrategy(\n strategy: SignInStrategyName | undefined,\n): (s: SignInRouterSnapshot) => string {\n return (s: SignInRouterSnapshot) => {\n const signIn = s.context.clerk?.client.signIn;\n\n if (strategy) {\n const matchingFactors = [\n ...(signIn.supportedFirstFactors ?? []),\n ...(signIn.supportedSecondFactors ?? []),\n ].filter(f => f.strategy === strategy);\n\n const matchingFactorForIdentifier =\n signIn.identifier && matchingFactors.length > 0\n ? matchingFactors.find(f => 'safeIdentifier' in f && f.safeIdentifier === signIn.identifier)\n : null;\n\n const matchingFactorForStrategy = matchingFactors[0];\n\n if (matchingFactorForIdentifier && 'safeIdentifier' in matchingFactorForIdentifier) {\n return matchingFactorForIdentifier.safeIdentifier;\n }\n\n if (matchingFactorForStrategy && 'safeIdentifier' in matchingFactorForStrategy) {\n return matchingFactorForStrategy.safeIdentifier;\n }\n }\n\n return signIn.identifier || '';\n };\n}\n\nexport function SignInSalutationSelector(s: SignInRouterSnapshot): string {\n const signIn = s.context.clerk?.client.signIn;\n\n return formatSalutation({\n firstName: signIn?.userData?.firstName,\n identifier: signIn?.identifier,\n lastName: signIn?.userData?.lastName,\n });\n}\n","import type { SignInResource } from '@clerk/types';\nimport type { ActorRefFrom, MachineSnapshot, StateMachine } from 'xstate';\n\nimport type { TFormMachine } from '~/internals/machines/form';\nimport type {\n BaseRouterContext,\n BaseRouterErrorEvent,\n BaseRouterFormAttachEvent,\n BaseRouterInput,\n BaseRouterLoadingEvent,\n BaseRouterNextEvent,\n BaseRouterPrevEvent,\n BaseRouterRedirectEvent,\n BaseRouterResetEvent,\n BaseRouterResetStepEvent,\n BaseRouterSetClerkEvent,\n BaseRouterStartEvent,\n BaseRouterTransferEvent,\n} from '~/internals/machines/types';\n\nimport type { SignInVerificationFactorUpdateEvent } from './verification.types';\n\n// ---------------------------------- Tags ---------------------------------- //\n\nexport const SignInRouterSteps = {\n start: 'step:start',\n verifications: 'step:verifications',\n firstFactor: 'step:first-factor',\n secondFactor: 'step:second-factor',\n callback: 'step:callback',\n error: 'step:error',\n forgotPassword: 'step:forgot-password',\n resetPassword: 'step:reset-password',\n chooseSession: 'step:choose-session',\n chooseStrategy: 'step:choose-strategy',\n} as const;\n\nexport type SignInRouterSteps = keyof typeof SignInRouterSteps;\nexport type SignInRouterTags = (typeof SignInRouterSteps)[keyof typeof SignInRouterSteps];\n\n// ---------------------------------- Children ---------------------------------- //\n\nexport const SignInRouterSystemId = {\n start: 'start',\n firstFactor: 'firstFactor',\n secondFactor: 'secondFactor',\n resetPassword: 'resetPassword',\n} as const;\n\nexport type SignInRouterSystemId = keyof typeof SignInRouterSystemId;\n\n// ---------------------------------- Events ---------------------------------- //\n\nexport type SignInRouterFormAttachEvent = BaseRouterFormAttachEvent;\nexport type SignInRouterNextEvent = BaseRouterNextEvent<SignInResource>;\nexport type SignInRouterStartEvent = BaseRouterStartEvent;\nexport type SignInRouterPrevEvent = BaseRouterPrevEvent;\nexport type SignInRouterChooseStrategyEvent = { type: 'NAVIGATE.CHOOSE_STRATEGY' };\nexport type SignInRouterForgotPasswordEvent = { type: 'NAVIGATE.FORGOT_PASSWORD' };\nexport type SignInRouterErrorEvent = BaseRouterErrorEvent;\nexport type SignInRouterTransferEvent = BaseRouterTransferEvent;\nexport type SignInRouterRedirectEvent = BaseRouterRedirectEvent;\nexport type SignInRouterResetEvent = BaseRouterResetEvent;\nexport type SignInRouterResetStepEvent = BaseRouterResetStepEvent;\nexport type SignInRouterLoadingEvent = BaseRouterLoadingEvent<\n 'start' | 'verifications' | 'reset-password' | 'forgot-password' | 'choose-strategy'\n>;\nexport type SignInRouterSetClerkEvent = BaseRouterSetClerkEvent;\nexport type SignInRouterSubmitEvent = { type: 'SUBMIT' };\nexport type SignInRouterPasskeyEvent = { type: 'AUTHENTICATE.PASSKEY' };\nexport type SignInRouterPasskeyAutofillEvent = {\n type: 'AUTHENTICATE.PASSKEY.AUTOFILL';\n};\nexport type SignInRouterSessionSetActiveEvent = { type: 'SESSION.SET_ACTIVE'; id: string };\n\nexport interface SignInRouterInitEvent extends BaseRouterInput {\n type: 'INIT';\n formRef: ActorRefFrom<TFormMachine>;\n signUpPath?: string;\n}\n\nexport type SignInRouterNavigationEvents =\n | SignInRouterStartEvent\n | SignInRouterChooseStrategyEvent\n | SignInRouterForgotPasswordEvent\n | SignInRouterPrevEvent;\n\nexport type SignInRouterEvents =\n | SignInRouterFormAttachEvent\n | SignInRouterInitEvent\n | SignInRouterNextEvent\n | SignInRouterNavigationEvents\n | SignInRouterErrorEvent\n | SignInRouterTransferEvent\n | SignInRouterRedirectEvent\n | SignInRouterResetEvent\n | SignInRouterResetStepEvent\n | SignInVerificationFactorUpdateEvent\n | SignInRouterLoadingEvent\n | SignInRouterSessionSetActiveEvent\n | SignInRouterSetClerkEvent\n | SignInRouterSubmitEvent\n | SignInRouterPasskeyEvent\n | SignInRouterPasskeyAutofillEvent;\n\n// ---------------------------------- Context ---------------------------------- //\n\nexport type SignInRouterLoadingContext = Omit<SignInRouterLoadingEvent, 'type'>;\n\nexport interface SignInRouterContext extends BaseRouterContext {\n formRef: ActorRefFrom<TFormMachine>;\n loading: SignInRouterLoadingContext;\n signUpPath: string;\n webAuthnAutofillSupport: boolean;\n ticket: string | undefined;\n}\n\n// ---------------------------------- Input ---------------------------------- //\n\nexport type SignInRouterInput = object;\n\n// ---------------------------------- Schema ---------------------------------- //\n\nexport interface SignInRouterSchema {\n context: SignInRouterContext;\n events: SignInRouterEvents;\n tags: SignInRouterTags;\n}\n\n// ---------------------------------- Schema ---------------------------------- //\n\nexport type SignInRouterChildren = any; // TODO: Update\nexport type SignInRouterOuptut = any; // TODO: Update\nexport type SignInRouterStateValue = any; // TODO: Update\n\nexport type SignInRouterSnapshot = MachineSnapshot<\n SignInRouterContext,\n SignInRouterEvents,\n SignInRouterChildren,\n SignInRouterStateValue,\n SignInRouterTags,\n SignInRouterOuptut,\n any, // TMeta - Introduced in XState 5.12.x\n any // TConfig - Required in newer XState versions\n>;\n\n// ---------------------------------- Machine Type ---------------------------------- //\n\nexport type TSignInRouterParentMachine = StateMachine<\n SignInRouterContext, // context\n SignInRouterEvents, // event\n SignInRouterChildren, // children\n any, // actor\n any, // action\n any, // guard\n any, // delay\n any, // state value\n string, // tag\n any, // input\n SignInRouterOuptut, // output\n any, // emitted\n any, // meta\n any // config\n>;\n\n// ---------------------------------- Machine Actor Ref ---------------------------------- //\n\nexport type SignInRouterMachineActorRef = ActorRefFrom<TSignInRouterParentMachine>;\n","import type { TSignInResetPasswordMachine } from '~/internals/machines/sign-in';\nimport type { FormProps } from '~/react/common/form';\nimport { Form } from '~/react/common/form';\nimport { useActiveTags } from '~/react/hooks';\nimport { SignInRouterCtx, useSignInResetPasswordStep } from '~/react/sign-in/context';\nimport { createContextFromActorRef } from '~/react/utils/create-context-from-actor-ref';\n\nexport type SignInResetPasswordProps = FormProps;\n\nexport const SignInResetPasswordCtx = createContextFromActorRef<TSignInResetPasswordMachine>('SignInResetPasswordCtx');\n\nexport function SignInResetPassword(props: SignInResetPasswordProps) {\n const routerRef = SignInRouterCtx.useActorRef();\n const activeState = useActiveTags(routerRef, 'step:reset-password');\n\n return activeState ? <SignInResetPasswordInner {...props} /> : null;\n}\n\nfunction SignInResetPasswordInner(props: SignInResetPasswordProps) {\n const ref = useSignInResetPasswordStep();\n\n if (!ref) {\n return null;\n }\n\n return (\n <SignInResetPasswordCtx.Provider actorRef={ref}>\n <Form\n flowActor={ref}\n {...props}\n />\n </SignInResetPasswordCtx.Provider>\n );\n}\n","import type { PropsWithChildren } from 'react';\n\nimport { useActiveTags } from '~/react/hooks';\nimport { SignInRouterCtx } from '~/react/sign-in/context';\n\nexport type SignInSSOCallbackProps = PropsWithChildren;\n\nexport function SignInSSOCallback({ children }: SignInSSOCallbackProps) {\n const routerRef = SignInRouterCtx.useActorRef();\n const activeState = useActiveTags(routerRef, 'step:callback');\n\n return activeState ? children : null;\n}\n","import type { TSignInStartMachine } from '~/internals/machines/sign-in';\nimport type { FormProps } from '~/react/common/form';\nimport { Form } from '~/react/common/form';\nimport { useActiveTags } from '~/react/hooks';\nimport { SignInRouterCtx, useSignInStartStep } from '~/react/sign-in/context';\nimport { createContextFromActorRef } from '~/react/utils/create-context-from-actor-ref';\n\nexport type SignInStartProps = FormProps;\n\nexport const SignInStartCtx = createContextFromActorRef<TSignInStartMachine>('SignInStartCtx');\n\nexport function SignInStart(props: SignInStartProps) {\n const routerRef = SignInRouterCtx.useActorRef();\n const activeState = useActiveTags(routerRef, 'step:start');\n\n return activeState ? <SignInStartInner {...props} /> : null;\n}\n\nfunction SignInStartInner(props: SignInStartProps) {\n const ref = useSignInStartStep();\n\n if (!ref) {\n return null;\n }\n\n return (\n <SignInStartCtx.Provider actorRef={ref}>\n <Form\n flowActor={ref}\n {...props}\n />\n </SignInStartCtx.Provider>\n );\n}\n","import type { SignInStrategy as ClerkSignInStrategy } from '@clerk/types';\nimport { useSelector } from '@xstate/react';\nimport { useCallback, useEffect } from 'react';\nimport type { ActorRefFrom, SnapshotFrom } from 'xstate';\n\nimport type { SignInStrategyName } from '~/internals/machines/shared';\nimport type { TSignInFirstFactorMachine, TSignInSecondFactorMachine } from '~/internals/machines/sign-in';\nimport { matchStrategy } from '~/internals/machines/utils/strategies';\nimport type { FormProps } from '~/react/common/form';\nimport { Form } from '~/react/common/form';\nimport { useActiveTags } from '~/react/hooks';\nimport {\n SignInRouterCtx,\n SignInStrategyContext,\n StrategiesContext,\n useSignInFirstFactorStep,\n useSignInSecondFactorStep,\n useStrategy,\n} from '~/react/sign-in/context';\nimport { createContextFromActorRef } from '~/react/utils/create-context-from-actor-ref';\n\nexport type SignInVerificationsProps = { preferred?: ClerkSignInStrategy } & FormProps;\n\nexport const SignInFirstFactorCtx = createContextFromActorRef<TSignInFirstFactorMachine>('SignInFirstFactorCtx');\nexport const SignInSecondFactorCtx = createContextFromActorRef<TSignInSecondFactorMachine>('SignInSecondFactorCtx');\n\nconst strategiesSelector = (state: SnapshotFrom<TSignInFirstFactorMachine | TSignInSecondFactorMachine>) =>\n state.context.currentFactor?.strategy;\n\nfunction SignInStrategiesProvider({\n children,\n preferred,\n actorRef,\n ...props\n}: SignInVerificationsProps & { actorRef: ActorRefFrom<TSignInFirstFactorMachine | TSignInSecondFactorMachine> }) {\n const routerRef = SignInRouterCtx.useActorRef();\n const current = useSelector(actorRef, strategiesSelector);\n const isChoosingAltStrategy = useActiveTags(routerRef, ['step:choose-strategy', 'step:forgot-password']);\n const isActive = useCallback((name: string) => (current ? matchStrategy(current, name) : false), [current]);\n\n return (\n <StrategiesContext.Provider value={{ current: current, preferred, isActive }}>\n {isChoosingAltStrategy.active ? null : (\n <Form\n flowActor={actorRef}\n {...props}\n >\n {children}\n </Form>\n )}\n </StrategiesContext.Provider>\n );\n}\n\nexport type SignInStrategyProps = { name: SignInStrategyName; children: React.ReactNode };\n\nfunction useFactorCtx() {\n const firstFactorRef = SignInFirstFactorCtx.useActorRef(true);\n const secondFactorRef = SignInSecondFactorCtx.useActorRef(true);\n\n return firstFactorRef || secondFactorRef;\n}\n\n/**\n * Generic component to handle both first and second factor verifications.\n *\n * @param {string} name - The name of the strategy for which its children will be rendered.\n *\n * @example\n * <SignIn.Step name=\"verifications\">\n * <SignIn.Strategy name=\"password\">...</SignIn.Strategy>\n * </SignIn.Step>\n */\nexport function SignInStrategy({ children, name }: SignInStrategyProps) {\n const { active } = useStrategy(name);\n const factorCtx = useFactorCtx();\n\n useEffect(() => {\n if (factorCtx) {\n factorCtx.send({ type: 'STRATEGY.REGISTER', factor: name });\n }\n\n return () => {\n if (factorCtx?.getSnapshot().status === 'active') {\n factorCtx.send({ type: 'STRATEGY.UNREGISTER', factor: name });\n }\n };\n }, [factorCtx, name]);\n\n return active ? (\n <SignInStrategyContext.Provider value={{ strategy: name }}>{children}</SignInStrategyContext.Provider>\n ) : null;\n}\n\n/**\n * Generic component to handle both first and second factor verifications.\n *\n * @example\n * <Step name=\"verifications\">...</Step>\n */\nexport function SignInVerifications(props: SignInVerificationsProps) {\n const routerRef = SignInRouterCtx.useActorRef();\n const { activeTags: activeRoutes } = useActiveTags(routerRef, ['step:first-factor', 'step:second-factor']);\n\n if (activeRoutes.has('step:first-factor')) {\n return <SignInFirstFactorInner {...props} />;\n }\n\n if (activeRoutes.has('step:second-factor')) {\n return <SignInSecondFactorInner {...props} />;\n }\n\n return null;\n}\n\n/**\n * Component to handle specifically first factor verifications.\n * Generally, you should use the <SignInVerifications> component instead via <Step name=\"verifications\">.\n *\n * @example\n * <FirstFactor>...</FirstFactor>\n */\nexport function SignInFirstFactor(props: SignInVerificationsProps) {\n const routerRef = SignInRouterCtx.useActorRef();\n const activeState = useActiveTags(routerRef, 'step:first-factor');\n\n return activeState ? <SignInFirstFactorInner {...props} /> : null;\n}\n\n/**\n * Component to handle specifically second factor verifications.\n * Generally, you should use the <SignInVerifications> component instead via <Step name=\"verifications\">.\n *\n * @example\n * <SecondFactor>...</SecondFactor>\n */\nexport function SignInSecondFactor(props: SignInVerificationsProps) {\n const routerRef = SignInRouterCtx.useActorRef();\n const activeState = useActiveTags(routerRef, 'step:second-factor');\n\n return activeState ? <SignInSecondFactorInner {...props} /> : null;\n}\n\nexport function SignInFirstFactorInner(props: SignInVerificationsProps) {\n const ref = useSignInFirstFactorStep();\n\n if (!ref) {\n return null;\n }\n\n return ref ? (\n <SignInFirstFactorCtx.Provider actorRef={ref}>\n <SignInStrategiesProvider\n actorRef={ref}\n {...props}\n />\n </SignInFirstFactorCtx.Provider>\n ) : null;\n}\n\nexport function SignInSecondFactorInner(props: SignInVerificationsProps) {\n const ref = useSignInSecondFactorStep();\n\n if (!ref) {\n return null;\n }\n\n return ref ? (\n <SignInSecondFactorCtx.Provider actorRef={ref}>\n <SignInStrategiesProvider\n actorRef={ref}\n {...props}\n />\n </SignInSecondFactorCtx.Provider>\n ) : null;\n}\n\nexport type SignInVerificationResendableRenderProps = {\n resendable: boolean;\n resendableAfter: number;\n};\n\nexport type SignInVerificationResendableProps = {\n children: (props: SignInVerificationResendableRenderProps) => React.ReactNode;\n};\n","export const matchStrategy = (current: string | undefined, desired: string | undefined): boolean => {\n if (!current || !desired) {\n return false;\n }\n\n if (current === desired) {\n return true;\n }\n\n return current.startsWith(`${desired}_`);\n};\n","import { useClerk } from '@clerk/shared/react';\nimport { eventComponentMounted } from '@clerk/shared/telemetry';\n\nimport { ClerkElementsRuntimeError } from '~/internals/errors';\n\nimport type { SignUpContinueProps } from './continue';\nimport { SignUpContinue } from './continue';\nimport type { SignUpRestrictedProps } from './restricted';\nimport { SignUpRestricted } from './restricted';\nimport type { SignUpStartProps } from './start';\nimport { SignUpStart } from './start';\nimport type { SignUpVerificationsProps } from './verifications';\nimport { SignUpVerifications } from './verifications';\n\nexport const SIGN_UP_STEPS = {\n start: 'start',\n continue: 'continue',\n verifications: 'verifications',\n restricted: 'restricted',\n} as const;\n\nexport type TSignUpStep = (typeof SIGN_UP_STEPS)[keyof typeof SIGN_UP_STEPS];\ntype StepWithProps<N extends TSignUpStep, T> = { name: N } & T;\n\nexport type SignUpStepProps =\n | StepWithProps<'start', SignUpStartProps>\n | StepWithProps<'continue', SignUpContinueProps>\n | StepWithProps<'verifications', SignUpVerificationsProps>\n | StepWithProps<'restricted', SignUpRestrictedProps>;\n\n/**\n * Render different steps of the sign-up flow. Initially the `'start'` step is rendered. Optionally, you can render additional fields in the `'continue'` step. Once a sign-up attempt has been created, `'verifications'` will be displayed.\n *\n * You typically want to place fields like username, password, or social providers in the `'start'` step. The `'continue'` step can hold inputs for username, first name/last name or other metadata. The `'verifications'` step is used to verify the user's information like an email verification. Once the user has been verified, the sign-up attempt will be completed.\n *\n * @param {string} name - Step name. Use `'start'`, `'continue'`, or `'verifications'`.\n *\n * @example\n * <SignUp.Root>\n * <SignUp.Step name='start' />\n * <SignUp.Step name='continue' />\n * <SignUp.Step name='verifications' />\n * </SignUp.Root>\n */\nexport function SignUpStep(props: SignUpStepProps) {\n const clerk = useClerk();\n\n clerk.telemetry?.record(eventComponentMounted('Elements_SignUpStep', { name: props.name }));\n\n switch (props.name) {\n case SIGN_UP_STEPS.start:\n return <SignUpStart {...props} />;\n case SIGN_UP_STEPS.continue:\n return <SignUpContinue {...props} />;\n case SIGN_UP_STEPS.verifications:\n return <SignUpVerifications {...props} />;\n case SIGN_UP_STEPS.restricted:\n return <SignUpRestricted {...props} />;\n default:\n throw new ClerkElementsRuntimeError(\n `Invalid step name. Use 'start', 'continue', 'verifications', or 'restricted'.`,\n );\n }\n}\n","import type { TSignUpContinueMachine } from '~/internals/machines/sign-up';\nimport type { FormProps } from '~/react/common/form';\nimport { Form } from '~/react/common/form';\nimport { useActiveTags } from '~/react/hooks';\nimport { SignUpRouterCtx, useSignUpContinueStep } from '~/react/sign-up/context';\nimport { createContextFromActorRef } from '~/react/utils/create-context-from-actor-ref';\n\nexport type SignUpContinueProps = FormProps;\n\nexport const SignUpContinueCtx = createContextFromActorRef<TSignUpContinueMachine>('SignUpContinueCtx');\n\nexport function SignUpContinue(props: SignUpContinueProps) {\n const routerRef = SignUpRouterCtx.useActorRef();\n const activeState = useActiveTags(routerRef, 'step:continue');\n\n return activeState ? <SignUpContinueInner {...props} /> : null;\n}\n\nfunction SignUpContinueInner(props: SignUpContinueProps) {\n const ref = useSignUpContinueStep();\n\n if (!ref) {\n return null;\n }\n\n return (\n <SignUpContinueCtx.Provider actorRef={ref}>\n <Form\n flowActor={ref}\n {...props}\n />\n </SignUpContinueCtx.Provider>\n );\n}\n","import type { FormProps } from '~/react/common/form';\nimport { Form } from '~/react/common/form';\nimport { useActiveTags } from '~/react/hooks';\nimport { SignUpRouterCtx } from '~/react/sign-up/context';\n\nexport type SignUpRestrictedProps = FormProps;\n\nexport function SignUpRestricted(props: SignUpRestrictedProps) {\n const routerRef = SignUpRouterCtx.useActorRef();\n const activeState = useActiveTags(routerRef, 'step:restricted');\n\n return activeState ? (\n <Form\n // TODO: Update when sign-up flow is consolidated\n // @ts-expect-error - `flowActor` is not a valid prop for `Form`\n flowActor={routerRef}\n {...props}\n />\n ) : null;\n}\n","import type { TSignUpStartMachine } from '~/internals/machines/sign-up';\nimport type { FormProps } from '~/react/common/form';\nimport { Form } from '~/react/common/form';\nimport { useActiveTags } from '~/react/hooks';\nimport { SignUpRouterCtx, useSignUpStartStep } from '~/react/sign-up/context';\nimport { createContextFromActorRef } from '~/react/utils/create-context-from-actor-ref';\n\nexport type SignUpStartProps = FormProps;\n\nexport const SignUpStartCtx = createContextFromActorRef<TSignUpStartMachine>('SignUpStartCtx');\n\nexport function SignUpStart(props: SignUpStartProps) {\n const routerRef = SignUpRouterCtx.useActorRef();\n const activeState = useActiveTags(routerRef, 'step:start');\n\n return activeState ? <SignUpStartInner {...props} /> : null;\n}\n\nfunction SignUpStartInner(props: SignUpStartProps) {\n const ref = useSignUpStartStep();\n\n if (!ref) {\n return null;\n }\n\n return (\n <SignUpStartCtx.Provider actorRef={ref}>\n <Form\n flowActor={ref}\n {...props}\n />\n </SignUpStartCtx.Provider>\n );\n}\n","import type {\n SignUpVerificationFriendlyTags,\n SignUpVerificationTags,\n TSignUpVerificationMachine,\n} from '~/internals/machines/sign-up';\nimport type { FormProps } from '~/react/common/form';\nimport { Form } from '~/react/common/form';\nimport { useActiveTags } from '~/react/hooks';\nimport { SignUpRouterCtx, useSignUpVerificationStep } from '~/react/sign-up/context';\n\nimport { createContextFromActorRef } from '../utils/create-context-from-actor-ref';\n\nexport type SignUpVerificationsProps = FormProps;\n\nexport const SignUpVerificationCtx = createContextFromActorRef<TSignUpVerificationMachine>('SignUpVerificationCtx');\n\n/**\n * Renders its children when the user is in the verification step of the sign-up flow. This happens after the user has signed up but before their account is active & verified.\n * @example\n * import { SignUp, Step, Strategy } from \"@clerk/elements/sign-up\"\n *\n * export default SignUpPage = () => (\n * <SignUp>\n * <Step name=\"verifications\">\n * <Strategy name=\"email_link\">\n * Please check your email for a verification link.\n * </Strategy>\n * </Step>\n * </SignUp>\n * )\n */\nexport function SignUpVerifications(props: SignUpVerificationsProps) {\n const ref = SignUpRouterCtx.useActorRef();\n const activeState = useActiveTags(ref, 'step:verification');\n\n return activeState ? <SignUpVerifyInner {...props} /> : null;\n}\n\nfunction SignUpVerifyInner(props: SignUpVerificationsProps) {\n const ref = useSignUpVerificationStep();\n\n if (!ref) {\n return null;\n }\n\n return (\n <SignUpVerificationCtx.Provider actorRef={ref}>\n <Form\n flowActor={ref}\n {...props}\n />\n </SignUpVerificationCtx.Provider>\n );\n}\n\nexport type SignUpStrategyProps = { name: SignUpVerificationFriendlyTags; children: React.ReactNode };\n\n/**\n * Conditionally render its children depending on the authentication strategy that needs to be verified. Does not render any markup on its own.\n *\n * @param {string} name - The name of the strategy for which its children will be rendered.\n *\n * @example\n * <SignUp.Strategy name=\"email_code\">\n * <Clerk.Field name=\"code\">\n * <Clerk.Label>Code</Clerk.Label>\n * <Clerk.Input />\n * <Clerk.FieldError />\n * </Clerk.Field>\n * <SignUp.Action submit>Verify</SignUp.Action>\n * </SignUp.Strategy>\n */\nexport function SignUpStrategy({ children, name: tag }: SignUpStrategyProps) {\n const ref = SignUpVerificationCtx.useActorRef(true);\n\n if (!ref) {\n throw new Error(\n '<Strategy> used outside of <SignUp>. Did you mean to `import { Strategy } from \"@clerk/elements/sign-in\"` instead?',\n );\n }\n\n const { active } = useActiveTags(ref, [\n `verification:${tag}`,\n `verification:category:${tag}`,\n ] as unknown as SignUpVerificationTags[]);\n\n return active ? <>{children}</> : null;\n}\n","import type { EnterpriseSSOStrategy, OAuthProvider, SamlStrategy, SignInStrategy, Web3Provider } from '@clerk/types';\n\ntype Strategy = OAuthProvider | SamlStrategy | EnterpriseSSOStrategy | Web3Provider;\n\nexport function isProviderStrategyScope(value: string): value is Strategy {\n return value.startsWith('provider:');\n}\n\nexport function mapScopeToStrategy<T extends `provider:${Strategy}`>(scope: T): SignInStrategy {\n if (scope === 'provider:metamask') {\n return 'web3_metamask_signature';\n }\n\n if (scope === 'provider:coinbase_wallet') {\n return 'web3_coinbase_wallet_signature';\n }\n\n if (scope === 'provider:base') {\n return 'web3_base_signature';\n }\n\n if (scope === 'provider:okx_wallet') {\n return 'web3_okx_wallet_signature';\n }\n\n if (scope === 'provider:saml') {\n return 'saml';\n }\n\n if (scope === 'provider:enterprise_sso') {\n return 'enterprise_sso';\n }\n\n const scopeWithoutPrefix = scope.replace('provider:', '') as OAuthProvider;\n\n return `oauth_${scopeWithoutPrefix}`;\n}\n","import { useClerk } from '@clerk/shared/react';\nimport { useClerkRouter } from '@clerk/shared/router';\nimport type { ClerkOptions } from '@clerk/types';\nimport React from 'react';\n\ntype Destination = 'sign-in' | 'sign-up';\nexport interface LinkProps extends Omit<React.HTMLAttributes<HTMLAnchorElement>, 'children'> {\n navigate: Destination;\n children: React.ReactNode | ((props: { url: string }) => React.ReactNode);\n}\n\nconst paths: Record<Destination, keyof Pick<ClerkOptions, 'signInUrl' | 'signUpUrl'>> = {\n 'sign-in': 'signInUrl',\n 'sign-up': 'signUpUrl',\n};\n\n/**\n * The `<Link>` component is used to navigate between sign-in and sign-up flows.\n *\n * @param {Destination} navigate - The destination to navigate to.\n *\n * @example\n * ```tsx\n * <Link navigate=\"sign-in\">Sign in</Link>\n * ```\n * @example\n * ```tsx\n * <Link navigate=\"sign-in\">\n * {({ url }) => (\n * <NextLink href={url}>Sign in</NextLink>\n * )}\n * </Link>\n */\n\nexport function Link({ navigate, children, ...rest }: LinkProps) {\n const router = useClerkRouter();\n const clerk = useClerk();\n const destinationUrl = router.makeDestinationUrlWithPreservedQueryParameters(\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n clerk.__internal_getOption(paths[navigate])!,\n );\n\n if (typeof children === 'function') {\n return children({ url: destinationUrl });\n }\n\n return (\n <a\n onClick={e => {\n if (router) {\n e.preventDefault();\n router.push(destinationUrl);\n }\n }}\n href={destinationUrl}\n {...rest}\n >\n {children}\n </a>\n );\n}\n"],"mappings":"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","names":["React","RadixControl","React","React","_a","React","OTPInput","React","React","RadixControl","jsx","React","React","jsx","DISPLAY_NAME","DISPLAY_NAME","React","jsx","DISPLAY_NAME","Slot","React","jsx","DISPLAY_NAME","Slot","useClerk","React","React","useContext","useSelector","createContext","useContext","createContext","useContext","createContext","useContext","createContext","useContext","jsx","DISPLAY_NAME","useClerk","DISPLAY_NAME","DISPLAY_NAME","Slot","createContext","useContext","useClerk","useCallback","useClerk","useCallback","jsx","createContext","useContext","Slot","useClerk","eventComponentMounted","useSelector","useSelector","useClerk","eventComponentMounted","Slot","React","React","useContext","React","React","jsx","Slot","Slot","useSelector","React","isClerkAPIResponseError","assign","setup","setup","assign","_a","isClerkAPIResponseError","assign","enqueueActions","fromPromise","log","not","sendTo","setup","fromPromise","fromPromise","assign","log","sendTo","setup","setup","log","assign","sendTo","fromPromise","sendTo","setup","setup","fromPromise","sendTo","assertEvent","enqueueActions","fromPromise","not","sendTo","setup","setup","fromPromise","enqueueActions","sendTo","not","assertEvent","setup","fromPromise","sendTo","enqueueActions","assign","not","log","jsx","Slot","jsx","factor","useSelector","jsx","jsx","useSelector","useCallback","useEffect","jsx","useSelector","useCallback","useEffect","jsx","useClerk","eventComponentMounted","useClerk","eventComponentMounted","jsx","jsx","jsx","Fragment","jsx","jsx","useClerk","eventComponentMounted","jsx","useClerk","eventComponentMounted","useSelector","useClerk","jsx"]}