{"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 type { PasswordSettingsData, PasswordValidation } from '@clerk/shared/types';\nimport { noop } from '@clerk/shared/utils';\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  // @ts-expect-error - ignore error for now\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      // @ts-expect-error - __unstable__environment is not typed\n      clerk.__unstable__environment?.userSettings.saml.enabled ??\n      // @ts-expect-error - __unstable__environment is not typed\n      clerk.__unstable__environment?.userSettings.enterpriseSSO.enabled ??\n      false\n    );\n  }\n\n  const data = getEnabledThirdPartyProviders(\n    // @ts-expect-error - __unstable__environment is not typed\n    clerk.__unstable__environment as EnvironmentResource,\n  );\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      if (provider === 'solana') {\n        return ref.send({ type: 'AUTHENTICATE.WEB3', strategy: 'web3_solana_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        // @ts-expect-error - email_link is not supported in the attemptSecondFactor params\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"]}