{"version":3,"file":"static/chunks/5880-f0a234050ba86abe.js","mappings":"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","sources":["webpack://_N_E/./src/components/atoms/LabelChip/LabelChip.tsx","webpack://_N_E/./src/components/atoms/ProgressBar/ProgressBar.tsx","webpack://_N_E/./src/components/templates/StepperFormTemplate/StepperFormTemplate.tsx","webpack://_N_E/./src/lib/constants/constants/forms.ts","webpack://_N_E/./src/lib/constants/constants/privacy.ts","webpack://_N_E/./src/lib/utils/helpers/formHelpers/featureFlagOrder.ts","webpack://_N_E/./src/lib/hooks/multiPageForm/MultiPageForm.tsx","webpack://_N_E/./src/lib/hooks/multiPageForm/configs/ActivateAccount.tsx","webpack://_N_E/./src/lib/hooks/multiPageForm/configs/AddPetFound.ts","webpack://_N_E/./src/lib/hooks/multiPageForm/configs/AddPetLost.ts","webpack://_N_E/./src/lib/hooks/multiPageForm/configs/AddPetSafe.ts","webpack://_N_E/./src/lib/hooks/multiPageForm/configs/AddPetStart.ts","webpack://_N_E/./src/lib/hooks/multiPageForm/configs/AllPets.ts","webpack://_N_E/./src/lib/hooks/multiPageForm/configs/ReportAsLost.ts","webpack://_N_E/./src/lib/hooks/multiPageForm/configs/TestConfiguration.ts","webpack://_N_E/./src/lib/hooks/multiPageForm/configs/Configuration.ts","webpack://_N_E/./src/lib/hooks/multiPageForm/configs/CreateAccountFound.tsx","webpack://_N_E/./src/lib/hooks/multiPageForm/configs/CreateAccountFoundDistance.tsx","webpack://_N_E/./src/lib/hooks/multiPageForm/configs/CreateAccountFoundPhoto.tsx","webpack://_N_E/./src/lib/hooks/multiPageForm/configs/CreateAccountFoundReport.ts","webpack://_N_E/./src/lib/hooks/multiPageForm/configs/CreateAccountLost.tsx","webpack://_N_E/./src/lib/hooks/multiPageForm/configs/CreateAccountLostDistance.tsx","webpack://_N_E/./src/lib/hooks/multiPageForm/configs/CreateAccountLostPhoto.tsx","webpack://_N_E/./src/lib/hooks/multiPageForm/configs/CreateAccountLostReport.ts","webpack://_N_E/./src/lib/hooks/multiPageForm/configs/CreateAccountSafe.tsx","webpack://_N_E/./src/lib/hooks/multiPageForm/configs/CreateAccountStart.tsx","webpack://_N_E/./src/lib/hooks/multiPageForm/configs/IFoundAPetConfiguration.tsx","webpack://_N_E/./src/lib/hooks/multiPageForm/configs/ILostAPetConfiguration.tsx","webpack://_N_E/./src/lib/hooks/multiPageForm/configs/OnboardPet.tsx","webpack://_N_E/./src/lib/utils/storage/form-storage.ts","webpack://_N_E/./src/pages/activate-account/[id]/index.tsx","webpack://_N_E/./src/components/templates/OnboardPetTemplate/OnboardPetTemplate.tsx","webpack://_N_E/./src/pages/onboard-pet/[id]/index.tsx","webpack://_N_E/<anon>"],"sourcesContent":["import { ColorShade, ColorType } from '@/components/atoms/Colors/Colors';\n\n/**\n * ILabelChip\n *\n * @interface ILabelChip\n */\nexport interface ILabelChip {\n  /**\n   * The text to display\n   *\n   * @memberof ILabelChip\n   * @member {string} text\n   */\n  text: string;\n  /**\n   * The color of the icon. Do not use with `colorInherit`.\n   *\n   * @memberof ILabelChip\n   * @member {ColorType} colorType\n   */\n  colorType: ColorType;\n  /**\n   * The shade of the color to use. Do not use with `colorInherit`.\n   *\n   * @memberof ILabelChip\n   * @member {ColorShade} colorShade\n   */\n  colorShade: ColorShade;\n  /**\n   * Optional classes\n   *\n   * @memberof ILabelChip\n   * @member {string} [className]\n   */\n  className?: string;\n}\n\n/**\n * LabelChip A chip used only for labeling\n *\n * @param {ILabelChip} props - The props for the LabelChip component\n * @returns {React.FC<ILabelChip>} Component\n */\nconst LabelChip: React.FC<ILabelChip> = ({\n  text,\n  colorShade,\n  colorType,\n  className = '',\n}: ILabelChip) => {\n  return (\n    <div\n      data-testid=\"label-chip\"\n      className={`inline-block border-${colorType}-${colorShade} text-${colorType}-${colorShade} border-2 text-xs font-bold h-5 leading-4.5 rounded-full px-2 py-0 ${className}`}\n    >\n      {text}\n    </div>\n  );\n};\n\nexport default LabelChip;\n","/**\n * IProgressBar Interface for the Progress Bar component\n *\n * @interface IProgressBar\n */\nexport interface IProgressBar {\n  /**\n   * The percentage of the progress bar\n   *\n   * @memberof IProgressBar\n   * @member {number} percentage\n   */\n  percentage: number;\n  /**\n   * If the progress bar should be displayed\n   *\n   * @memberof IProgressBar\n   * @default false\n   * @member {boolean} [hidden]\n   */\n  hidden?: boolean;\n  /**\n   * The optional classes for the component\n   *\n   * @memberof IProgressBar\n   * @default ''\n   * @member {string} [classes]\n   */\n  classes?: string;\n}\n\n/**\n * Progress Bar Shows a simple progress bar and takes in percentage, variant,\n * classes and disabled properties\n *\n * @param {IProgressBar} props - The props for the Progress Bar component\n * @returns {React.FC<IProgressBar>} Progress Bar Component\n */\nconst ProgressBar: React.FC<IProgressBar> = ({\n  percentage,\n  classes = '',\n  hidden = false,\n}: IProgressBar) => {\n  /** Setting the background and progress bar variant/attributes */\n  const dataTestId = `progress-bar-${hidden}`;\n  const progressClassBackground = `${classes} bg-base-200 h-1 rounded-full`;\n  const progressClassBar = `${classes} bg-base-400 h-1 rounded-full`;\n  return (\n    <div className=\"max-w-[1440px] mx-auto\" data-testid=\"progress-bar\">\n      <div\n        className={`mx-6 sm:mx-8 md:mx-10 ${progressClassBackground}`}\n        hidden={hidden}\n        data-testid={dataTestId}\n        role=\"progressbar\"\n        aria-valuenow={percentage}\n        aria-valuemin={0}\n        aria-valuemax={100}\n      >\n        <div\n          className={progressClassBar}\n          style={{ width: `${percentage}%` }}\n        ></div>\n      </div>\n    </div>\n  );\n};\n\nexport default ProgressBar;\n","import Button from '@/components/atoms/Button/Button';\nimport Heading from '@/components/atoms/Heading/Heading';\nimport Paragraph from '@/components/atoms/Paragraph/Paragraph';\nimport ProgressBar from '@/components/atoms/ProgressBar/ProgressBar';\nimport Loading from '@/components/molecules/Loading/Loading';\nimport FieldBuilder from '@/components/organisms/FormBuilder/FieldBuilder';\nimport PageWrapper from '@/components/organisms/PageWrapper/PageWrapper';\nimport {\n  clearAllFormRelatedData,\n  useMultiPageFormContext,\n} from '@/lib/hooks/multiPageForm/MultiPageForm';\nimport FormStorage from '@/lib/utils/storage/form-storage';\nimport { formValidationBuilder } from '@/lib/validations/FormBuilderValidation';\nimport { yupResolver } from '@hookform/resolvers/yup';\nimport { NextPage } from 'next';\nimport { useRouter } from 'next/router';\nimport { ParsedUrlQuery } from 'querystring';\nimport React, { useEffect, useMemo, useRef, useState } from 'react';\nimport { useForm } from 'react-hook-form';\n\n/**\n * The default label for the submit button\n *\n * @constant {string}\n */\nexport const defaultSubmitLabel = 'Submit';\n\n/**\n * IStepperFormTemplate\n *\n * @interface\n */\nexport interface IStepperFormTemplate {\n  /** Submit function handler */\n  submitFunction: (data: object) => Promise<void>;\n  /** The optional disabled state of the submit button */\n  submitButtonDisabled?: boolean;\n  /** The loading state of the submit button */\n  loading?: boolean;\n  /** The loading state of the form. Used for client-side form. */\n  isLoadingForm?: boolean;\n  /** The optional original query params to be included in the next steps */\n  originalQueryParams?: ParsedUrlQuery;\n}\n\n/**\n * Stepper Form Template The template for using the stepper form component in\n * the application\n *\n * @param {IStepperFormTemplate} props - The props for the stepper form template\n * @returns {React.FC<IStepperFormTemplate>} - The stepper form template\n */\nconst StepperFormTemplate: NextPage<IStepperFormTemplate> = ({\n  submitFunction,\n  submitButtonDisabled,\n  loading,\n  isLoadingForm,\n  originalQueryParams,\n}: IStepperFormTemplate) => {\n  // Form Content\n  const [formTitle, setFormTitle] = useState('');\n  const [formDescription, setFormDescription] = useState('');\n  const [formOverline, setFormOverline] = useState('');\n  // Is Form Completed\n  const [completed, setCompleted] = useState(false);\n\n  // The inner hide submit for the stepper form\n  const [hideSubmitStepperForm, setHideSubmitStepperForm] = useState(false);\n\n  // Import the Next Router\n  const router = useRouter();\n  // Import in the MultiPageFormContext\n  const {\n    progress,\n    formId,\n    pageId,\n    nextUrl,\n    previousUrl,\n    validProgress,\n    formData,\n    formContent,\n    formOrder,\n    state,\n    renderMode,\n    dispatch,\n  } = useMultiPageFormContext();\n\n  // Form Content\n  const {\n    title,\n    description,\n    overline,\n    fields,\n    defaults,\n    hideSubmit: hideSubmitForm,\n    submitLabel,\n  } = formContent;\n\n  /**\n   * Computed hide submit value. We get this value by checking if either the\n   * hideSubmitForm or the hideSubmitStepperForm are true. We can use this\n   * computed state mostly for the components that have their own Submit button,\n   * like for example the Image Upload component or the Image Upload Tile\n   * component\n   *\n   * @constant {boolean}\n   */\n  const hideSubmit = useMemo(\n    () => hideSubmitForm || hideSubmitStepperForm,\n    [hideSubmitForm, hideSubmitStepperForm]\n  );\n\n  /**\n   * Reference to the form local storage so it can be used by any input field\n   * from the Filed Builder if needed\n   *\n   * @example\n   *   Get the uploaded photo objectKey from the form storage to crop the image\n   *   <ImageUploadHandlerGroup\n   *   uploadedImage={generateImageUrl(formStorage.get('photo'))}\n   *   ...{props}\n   *   />\n   */\n  const formStorage = useRef<FormStorage>();\n\n  /**\n   * Hook to update the formStorage ref with a valid instance of FormStorage\n   * when formId changes\n   */\n  useEffect(() => {\n    const storage = state.forms[formId].storage;\n\n    if (storage) {\n      formStorage.current = new FormStorage({ storage, formId });\n    }\n  }, [formId, state]);\n\n  // Swap out the handlebars in the form title and description\n  useEffect(() => {\n    (async () => {\n      // Set the Form Data\n      let formDataSwap = formData;\n      if (defaults) {\n        formDataSwap = { ...defaults, ...formData };\n      }\n      // Dynamically import the handlebars library\n      const HandlebarStringReplace = (\n        await import('@/component-library-lib/utils/stringReplace/handlebar-stringReplace')\n      ).default;\n      // String Replaced Content\n      const stringReplacer = new HandlebarStringReplace();\n      const compiledTitle = stringReplacer.replace(title, formDataSwap);\n      const compiledDescription =\n        description && typeof description === 'string'\n          ? stringReplacer.replace(description, formDataSwap)\n          : description;\n      const compiledOverline = overline\n        ? stringReplacer.replace(overline, formDataSwap)\n        : '';\n      // Set the Form Title\n      setFormTitle(compiledTitle);\n      // Set the Form Description\n      setFormDescription(compiledDescription ?? '');\n      // Set the Form Overline\n      setFormOverline(compiledOverline);\n    })();\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  // Build Form Validation based on the specified fields\n  const formValidationSchema = formValidationBuilder(fields);\n\n  // Use React Hook Form\n  const {\n    register,\n    handleSubmit,\n    reset,\n    control,\n    formState: { errors, isValid },\n    setError,\n  } = useForm({\n    resolver: yupResolver(formValidationSchema),\n    mode: 'onChange',\n  });\n\n  /**\n   * Submit Form\n   *\n   * @param {object} data - The data from the form\n   */\n  const submitForm = (data: object) => {\n    dispatch({\n      type: 'NEXT_PAGE',\n      data: { ...data },\n      pageId: pageId,\n      formId: formId,\n    });\n    setCompleted(true);\n  };\n\n  /** Back Button Handler */\n  const backButtonHandler = () => {\n    router.push(previousUrl);\n  };\n\n  /**\n   * Set the Form Up for the default values If the form is completed, then go to\n   * the next page or if you are on the last page, then submit the form\n   */\n  useEffect(() => {\n    // If the form is completed\n    if (completed) {\n      // If the next page is not null\n      if (nextUrl) {\n        // Parse the nextUrl to extract pathname and query\n        const [pathname, search] = nextUrl.split('?');\n        const nextUrlParams = new URLSearchParams(search || '');\n\n        // Merge the original query params if they exist\n        if (\n          originalQueryParams &&\n          Object.keys(originalQueryParams).length > 0\n        ) {\n          Object.entries(originalQueryParams).forEach(([key, value]) => {\n            nextUrlParams.set(key, String(value));\n          });\n        }\n\n        // Push the updated URL\n        router.push({\n          pathname,\n          query: Object.fromEntries(nextUrlParams.entries()),\n        });\n      } else {\n        submitFunction(formData)?.then(() => {\n          if (state.forms[formId].storage !== undefined) {\n            const storage = state.forms[formId].storage;\n            /**\n             * Check if the form has the retain Data On Submit property before\n             * clearing all form data\n             *\n             * @constant {boolean}\n             */\n            const shouldClearFormData =\n              storage && !state.forms[formId].retainDataOnSubmit;\n\n            if (shouldClearFormData) clearAllFormRelatedData(formId, storage);\n          }\n        });\n      }\n    } else {\n      // Loads the Form Data into the form\n      reset(formData);\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [formData]);\n\n  /**\n   * Check that the form is on the correct page and that the progress is valid\n   * If the progress is not valid, then redirect to the first page\n   */\n  useEffect(() => {\n    const urlSeparator = renderMode === 'client' ? '?step=' : '/';\n\n    if (!validProgress && !isValid) {\n      const formIndexUrl = `/${formId}${urlSeparator}${formOrder[0]}`;\n      router.push(formIndexUrl);\n    }\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, [isValid, validProgress]);\n\n  /**\n   * Whether or not to show the skip option\n   *\n   * @constant {boolean}\n   */\n  const showSkipOption = useMemo(\n    () =>\n      /** We should only show the skip option if the submit button is being shown */\n      !hideSubmit &&\n      /** And if this is not the last step of the form */\n      progress !== 100 &&\n      /** And if none of the fields for the current step have any validation */\n      fields.every(\n        (field) =>\n          field.validations === undefined || field.validations.length === 0\n      ),\n    [hideSubmit, fields, progress]\n  );\n\n  if (isLoadingForm) {\n    return (\n      <section\n        data-testid={`${formId}-${pageId}-stepper-form`}\n        className=\"min-h-[calc(100vh-60px)] md:min-h-[calc(100vh-110px)]\"\n      >\n        <ProgressBar percentage={0} classes=\"mt-6 md:mt-8\" />\n        <PageWrapper classes=\"flex px-6 sm:px-8 md:px-16 pt-12 md:pt-16 grid grid-cols-4 sm:grid-cols-6 md:grid-cols-12 gap-x-4 sm:gap-x-6 md:gap-x-8\">\n          <div className=\"text-center col-span-4 sm:col-span-6 md:col-span-8 md:col-start-3\">\n            <div className=\"flex items-center justify-center w-full\">\n              <Loading title=\"\" />\n            </div>\n          </div>\n        </PageWrapper>\n      </section>\n    );\n  }\n\n  return (\n    <section\n      data-testid={`${formId}-${pageId}-stepper-form`}\n      className=\"min-h-[calc(100vh-60px)] md:min-h-[calc(100vh-110px)]\"\n    >\n      <ProgressBar percentage={progress} classes=\"mt-6 md:mt-8\" />\n      <PageWrapper classes=\"px-6 sm:px-8 md:px-16 pt-12 md:pt-16 grid grid-cols-4 sm:grid-cols-6 md:grid-cols-12 gap-x-4 sm:gap-x-6 md:gap-x-8\">\n        <div className=\"text-center col-span-4 sm:col-span-6 md:col-span-8 md:col-start-3\">\n          <Paragraph size=\"overline\" font=\"petco\">\n            {formOverline}\n          </Paragraph>\n          <Heading\n            size=\"h1\"\n            font=\"petco\"\n            className=\"stepperForm-heading mb-3 text-mkNavy-400 text-h3\"\n          >\n            {formTitle}\n          </Heading>\n          <Paragraph size=\"body4\" className=\"mb-9\">\n            {formDescription}\n          </Paragraph>\n        </div>\n\n        <form\n          className=\"flex flex-col col-span-4 sm:col-start-2 md:col-start-5 text-center mb-[100px]\"\n          onSubmit={handleSubmit((data) => submitForm(data))}\n        >\n          {fields.map((field) => (\n            <FieldBuilder\n              formData={formData}\n              key={field.name}\n              {...field}\n              register={register}\n              control={control}\n              errors={errors[field.name]}\n              forwardHandler={handleSubmit((data) => submitForm(data))}\n              backHandler={backButtonHandler}\n              formStorage={formStorage.current}\n              setError={setError}\n              setHideSubmit={setHideSubmitStepperForm}\n            />\n          ))}\n          {hideSubmit || (\n            <Button\n              data-testid=\"stepper-form-submit-button\"\n              type=\"submit\"\n              size=\"md\"\n              variant=\"light\"\n              color=\"primary\"\n              className=\"mt-4 mx-auto\"\n              disabled={!isValid || submitButtonDisabled}\n              loading={loading}\n            >\n              {progress === 100\n                ? submitLabel || defaultSubmitLabel\n                : 'Continue'}\n            </Button>\n          )}\n          {showSkipOption && (\n            <Paragraph\n              size=\"body5\"\n              className=\"mt-3 mx-auto text-neutral-800 underline hover:cursor-pointer hover:no-underline\"\n              onClick={() => submitForm({})}\n              data-testid=\"stepper-form-skip-button\"\n            >\n              Skip\n            </Paragraph>\n          )}\n        </form>\n      </PageWrapper>\n    </section>\n  );\n};\n\nexport default StepperFormTemplate;\n","export const notificationsHeader = 'New Match Alerts';\nexport const notificationsDescription =\n  'We are searching for your pet on Petco Love Lost, Nextdoor, and Neighbors. Turn on alerts to be notified of new matches.';\nexport const notificationsInfo =\n  'We still encourage you to run photo, distance, and microchip ID searches regularly.';\n\nexport const microchipLostFoundDescription =\n  'Please provide the microchip ID so we can notify you immediately if we have a match.';\n\nexport const microchipSafeDescription =\n  'Please provide the microchip ID so we can notify you of a match immediately if your pet ever goes missing.';\n","/**\n * This copy will be displayed with phone inputs to tell the user about our\n * privacy policy and how we'll use their phone number.\n *\n * @constant {string}\n */\nexport const phonePrivacyDisclosure =\n  \"We'll never share your number publicly and will only contact you with updates about the pet you register.\";\n\n/**\n * This copy will be displayed with location inputs to tell the user about our\n * privacy policy and how we'll use their location.\n *\n * @constant {string}\n */\nexport const locationPrivacyDisclosure =\n  \"We'll never publicly display your location and will only use it to help with your search.\";\n","/* eslint-disable jsdoc/tag-lines */\n/**\n * Determine if the form should use the feature order or the default page order.\n * NOTE- This function will only return the first feature order that matches a\n * feature flag.\n *\n * @example\n *   if you have the following feature flags: ['flag1', 'flag2', 'flag3']\n *   and the following feature orders: ['flag2', 'flag3']\n *   this code will return 'flag2'\n *\n * @param {string[]} featureFlags - The feature flags active in the application\n * @param {string[]} featureOrders - The feature orders for the form\n * @returns {string | null} - Returns the feature order or null if the default\n *   order should be used\n */\nexport const useFeatureOrder = (\n  featureFlags: string[] | null,\n  featureOrders?: string[]\n): string | null => {\n  if (!featureFlags || !featureOrders) {\n    return null;\n  }\n  // If any featureOrders item matches a featureFlags item return that item, otherwise return null\n  const intersection = featureFlags.filter((element) =>\n    featureOrders.includes(element)\n  );\n\n  if (intersection[0]) {\n    return intersection[0];\n  }\n  return null;\n};\n","/* eslint-disable jsdoc/tag-lines */\nimport { tomorrow } from '@/lib/utils/helpers/dateHelpers/dates';\nimport { useFeatureOrder } from '@/lib/utils/helpers/formHelpers/featureFlagOrder';\nimport maybeCallFunctionWithParams from '@/lib/utils/helpers/maybeCallFunctionWithParams/maybeCallFunctionWithParams';\nimport {\n  createContext,\n  Dispatch,\n  ReactNode,\n  useContext,\n  useMemo,\n  useReducer,\n} from 'react';\nimport InitConfiguration, {\n  FormTypes,\n  MultiPageFormConfiguration,\n  MultiPageFormConfigurationData,\n  MultiPageFormConfigurationPageContent,\n  MultiPageFormConfigurationPageContentWithValuesOrGetters,\n  PageTypes,\n  StorageTypes,\n} from './configs/Configuration';\n\n/**\n * Multi Page Form Action Types Actions Allowed for Toast\n *\n * @typedef\n */\nexport type MultiPageFormActionType = 'NEXT_PAGE';\n\n/**\n * The allowed keys for the stored Form Data object\n *\n * @typedef\n */\nexport type FormTypeData = `${FormTypes}-data`;\n\n/**\n * The allowed keys for the stored Form Progress object\n *\n * @typedef\n */\nexport type FormProgressType = `${FormTypes}-progress`;\n\n/**\n * Multi Page Form State Interface Interface for the Multi Page Form State\n *\n * @interface\n */\nexport interface IMultiPageFormState {\n  /** The forms to be used in the Multi Page Form */\n  forms: MultiPageFormConfiguration;\n}\n\n/**\n * Load All Form Data Builds out the form data from the storage adapter\n * specified by each form\n *\n * @returns {MultiPageFormConfigurationData} - Returns the form data\n */\nexport const loadAllFormData = () => {\n  const config = InitConfiguration;\n  Object.keys(config).forEach((form) => {\n    const storage = config[form as FormTypes].storage;\n    if (storage) {\n      const loadedData = storage.get(form);\n      if (loadedData) {\n        config[form as FormTypes].data =\n          loadedData as MultiPageFormConfigurationData;\n      }\n    }\n  });\n  return config;\n};\n\n/**\n * MultiPageForm State Initial Value\n *\n * @constant\n */\nexport const multiPageFormInitialState: IMultiPageFormState = {\n  forms: loadAllFormData(),\n};\n\n/**\n * MultiPage Init Config\n *\n * @param {IMultiPageFormState} state - State of the forms\n * @returns {object} - Returns the initial state of the forms\n */\nexport const initConfig = (state: IMultiPageFormState) => ({\n  ...multiPageFormInitialState,\n  ...state,\n});\n\n/**\n * IToastAction Interface for Toast Actions\n *\n * @interface\n */\nexport interface IMultiPageFormAction {\n  /** The type of action to be performed. */\n  type: MultiPageFormActionType;\n  /** The payload for the action. */\n  data: object;\n  /** The id of the page on the form. */\n  pageId: PageTypes;\n  /** The name of the form. */\n  formId: FormTypes;\n}\n\n/**\n * Interface for get next and prev pages functions.\n *\n * @interface\n */\ninterface IGetPage {\n  /** Id of the page currently on */\n  pageId: PageTypes;\n  /** The name of the form */\n  formId: FormTypes;\n  /** The order of the pages in the form */\n  order: PageTypes[];\n  /** The path to prepend to the page id */\n  prependPath?: string;\n  /** The navigation mode */\n  renderMode?: 'server' | 'client';\n}\n\n/**\n * GetNextPage Get the Next Page of the Form based on the current page\n *\n * @param {IGetPage} props - The props for the getNextPage function\n * @returns {string} - Returns the next page id\n */\nexport const getNextPage = ({\n  pageId,\n  formId,\n  order,\n  prependPath = '',\n  renderMode,\n}: IGetPage): string | null => {\n  const index = order.indexOf(pageId);\n  if (index + 1 >= order.length) {\n    return null;\n  }\n\n  const urlSeparator = renderMode === 'client' ? '?step=' : '/';\n\n  return `${prependPath}/${formId}${urlSeparator}${order[index + 1]}`;\n};\n\n/**\n * GetPreviousPage Get the Previous Page of the Form based on the current page\n *\n * @param {IGetPage} props - The props for the getNextPage function\n * @returns {string} - Returns the next page id\n */\nexport const getPreviousPage = ({\n  pageId,\n  formId,\n  order,\n  prependPath = '',\n  renderMode,\n}: IGetPage): string => {\n  const index = order.indexOf(pageId);\n  if (index - 1 < 0) {\n    return `${prependPath}/${formId}/`;\n  }\n\n  const urlSeparator = renderMode === 'client' ? '?step=' : '/';\n\n  return `${prependPath}/${formId}${urlSeparator}${order[index - 1]}`;\n};\n\n/**\n * Get Progress Percentage Gets the current progress of the form\n *\n * @param {string} pageId - Id of the page currently on\n * @param {PageTypes[]} order - The order of pages in form\n * @returns {number} - Returns the progress percentage\n */\nconst getProgressPercentage = (\n  pageId: PageTypes,\n  order: PageTypes[]\n): number => {\n  const progressBarPercent = 100 / order.length;\n  const currentPage = order.indexOf(pageId) + 1;\n  return currentPage * progressBarPercent;\n};\n\n/**\n * IMultiPageFormContext Interface for the Multi Page Form Context\n *\n * @interface\n */\ninterface IMultiPageFormContext {\n  /** The id of the form */\n  formId: FormTypes;\n  /** The id of the page on the form */\n  pageId: PageTypes;\n  /** The progress of the form */\n  progress: number;\n  /** The next page of the form */\n  nextUrl: string | null;\n  /** The next page of the form */\n  previousUrl: string;\n  /** The validity of the progress */\n  validProgress: boolean;\n  /** The data of the form */\n  formData: MultiPageFormConfigurationData;\n  /** The content of the form */\n  formContent: MultiPageFormConfigurationPageContent;\n  /** The order of the form */\n  formOrder: PageTypes[];\n  /** The state of the form */\n  state: IMultiPageFormState;\n  /**\n   * The form navigation mode.\n   *\n   * - `server`: the url path is used to navigate form steps.\n   * - `client`: a url query param is used to navigate form steps.\n   *\n   * @example\n   *   server:      /form-id/form-step\n   *   client:      /form-id/?step=form-step\n   *\n   * @default 'server'\n   */\n  renderMode?: 'server' | 'client';\n  /** The dispatch of the form */\n  dispatch: Dispatch<IMultiPageFormAction>;\n}\n\n/**\n * Multi Page Form Context Used for creating the Context Object for the\n * useMultiPageForm Hook\n *\n * @constant\n */\nexport const MultiPageFormContext = createContext<IMultiPageFormContext>({\n  formId: 'i-lost-a-pet',\n  pageId: 'location',\n  progress: 0,\n  nextUrl: '',\n  previousUrl: '',\n  validProgress: true,\n  formData: {},\n  formContent: {\n    title: '',\n    fields: [],\n  },\n  formOrder: [],\n  state: multiPageFormInitialState,\n  renderMode: 'server',\n  /** @returns {null} - Returns null */\n  dispatch: (): null => null,\n});\n\n/**\n * Save Form Data to Storage Class Saves the form data to the storage adapter\n * specified by the form\n *\n * @param {object} data - The data to be saved\n * @param {FormTypes} formId - The name of the form\n * @param {StorageTypes} storageAdapter - The Storage Adapter to be used\n */\nconst storeFormData = (\n  data: object,\n  formId: FormTypes,\n  storageAdapter: StorageTypes\n) => {\n  storageAdapter.set(formId, data, { expires: tomorrow });\n};\n\n/**\n * Clear Form Data from Storage Class *\n *\n * @param {FormTypes} formId - The name of the form\n * @param {StorageTypes} storageAdapter - The Storage Adapter to be used\n */\nexport const clearFormData = (\n  formId: FormTypes | FormTypeData | FormProgressType,\n  storageAdapter: StorageTypes\n) => {\n  storageAdapter.delete(formId);\n};\n\n/**\n * We stored the form data in three different places. This function will try to\n * clear `${formId}-progress`, `${formId}-data`, and `${formId}` from the\n * storage adapter\n *\n * @param {FormTypes} formId - The name of the form\n * @param {StorageTypes} storageAdapter - The Storage Adapter to be used\n */\nexport const clearAllFormRelatedData = (\n  formId: FormTypes,\n  storageAdapter: StorageTypes\n) => {\n  clearFormData(formId, storageAdapter);\n  clearFormData(`${formId}-progress`, storageAdapter);\n};\n\n/**\n * IStorageProgress Interface for the Storage Progress Object that is saved to\n * the storage adapter\n *\n * @interface\n */\ninterface IStorageProgress {\n  /** The current page of the form */\n  current: PageTypes;\n}\n\n/**\n * Store Form Progress to Storage Class Saves the form progress to the storage\n * adapter specified by the form\n *\n * @param {FormTypes} formId - The name of the form\n * @param {PageTypes} pageId - The page to be saved\n * @param {StorageTypes} storageAdapter - The Storage Adapter to be used\n */\nexport const storeFormProgress = (\n  formId: FormTypes,\n  pageId: PageTypes,\n  storageAdapter: StorageTypes\n) => {\n  const progress: IStorageProgress = {\n    current: pageId,\n  };\n  storageAdapter.set(`${formId}-progress`, progress, { expires: tomorrow });\n};\n\n/**\n * Get Form Progress from Storage Class Gets the form progress from the storage\n * adapter specified by the form\n *\n * @param {FormTypes} formId - The name of the form\n * @param {StorageTypes} storageAdapter - The Storage Adapter to be used\n * @returns {PageTypes | null} - Returns the current page of the form\n */\nconst getFormProgress = (\n  formId: FormTypes,\n  storageAdapter: StorageTypes\n): PageTypes | null => {\n  const progress = storageAdapter.get(`${formId}-progress`) as IStorageProgress;\n  if (progress) {\n    return progress.current;\n  }\n  return null;\n};\n\n/**\n * ICheckProgressOrder\n *\n * @interface\n */\ninterface ICheckProgressOrder {\n  /** The Id of the current form */\n  formId: FormTypes;\n  /** The current page id */\n  pageId: PageTypes;\n  /** The order of the form pages */\n  order: PageTypes[];\n  /** The storage class associated with this form */\n  storage?: StorageTypes;\n}\n\n/**\n * Check if Form Order is Valid Checks if the order of the pages in the form is\n * valid\n *\n * @param {ICheckProgressOrder} props - The props\n * @returns {boolean} - Returns true if the order is valid\n */\nexport const checkProgressOrder = ({\n  formId,\n  pageId,\n  order,\n  storage,\n}: ICheckProgressOrder) => {\n  /** Get Order and Storage from State Get the current page from storage */\n  const currentIndex = order.indexOf(pageId);\n  // We are on first Page always return true\n  if (currentIndex == 0) {\n    return true;\n  }\n  // If Storage is Set\n  if (storage) {\n    // Get Progress from Storage\n    const progress = getFormProgress(formId, storage);\n    // If Progress is Set\n    if (progress) {\n      const progressIndex = order.indexOf(progress);\n      const currentIndex = order.indexOf(pageId);\n      // If the current page is at the proper index\n      if (progressIndex + 1 >= currentIndex) {\n        return true;\n        // The current page is not at the proper index\n      } else {\n        return false;\n      }\n      // Progress is not set\n    } else {\n      return false;\n    }\n    // If Storage is not set\n  } else {\n    return false;\n  }\n};\n\n/**\n * Multi Page Form Reducer Reducer for adding and removing data from the Multi\n * Page Form\n *\n * @param {IMultiPageFormState} state - The state of the Multi Page Form\n * @param {IMultiPageFormAction} action -The action to be performed on the Multi\n *   Page Form\n * @returns {IMultiPageFormState} - Returns the new state of the Multi Page Form\n */\nexport function MultiPageFormReducer(\n  state: IMultiPageFormState,\n  action: IMultiPageFormAction\n): IMultiPageFormState {\n  switch (action.type) {\n    case 'NEXT_PAGE': {\n      const { formId, pageId, data } = action;\n      // Get Past Data\n      const pastData = state.forms[formId].data;\n      // Merge Past Data with New Data\n      const newData = { ...pastData, ...data };\n      // Save Data to Storage\n      const storageAdapter = state.forms[formId].storage;\n      if (storageAdapter) {\n        storeFormData(newData, formId, storageAdapter);\n        storeFormProgress(formId, pageId, storageAdapter);\n      }\n      return {\n        ...state,\n        forms: {\n          ...state.forms,\n          [formId]: {\n            ...state.forms[formId],\n            data: {\n              ...state.forms[formId].data,\n              ...data,\n            },\n          },\n        },\n      };\n    }\n  }\n}\n\n/**\n * IFormContext Interface for the Form Context\n *\n * @interface\n */\nexport interface IFormContext {\n  /** Key value pairs of the form context */\n  [key: string]: number | string | boolean;\n}\n\n/**\n * IUseInitData The interface for what the useInitData hook will be expecting\n *\n * @interface\n */\nexport interface IUseInitData {\n  /** The name of the form */\n  formId: FormTypes;\n  /** The optional form context */\n  formContext?: IFormContext;\n}\n\n/**\n * Custom hook to initialize the data for the Multi Page Form\n *\n * @param {IUseInitData} props - The props for the useInitData hook\n * @returns {IMultiPageFormState} - Returns the initial state of the Multi Page\n */\nexport const useInitData = ({\n  formId,\n  formContext,\n}: IUseInitData): IMultiPageFormState => {\n  /**\n   * Initial State\n   *\n   * @constant {IMultiPageFormState} initialState\n   */\n  const initialState = useMemo(\n    /**\n     * Create the initial state of the Multi Page Form\n     *\n     * @returns {MultiPageFormConfiguration} - Returns the initial state of the\n     *   Multi Page Form\n     */\n    (): MultiPageFormConfiguration => {\n      // Load All Form Data\n      const forms = loadAllFormData();\n\n      // Try to get a storage adapter for the current form\n      const storageAdapter = forms[formId].storage;\n\n      // Add a context it can be added to the form\n      if (formContext && storageAdapter) {\n        // Get the form data\n        const formData = forms[formId].data;\n        storeFormData(\n          {\n            ...formData,\n            formContext: formContext,\n          },\n          formId,\n          storageAdapter\n        );\n      }\n      return loadAllFormData();\n    },\n    [formContext, formId]\n  );\n  return { forms: initialState };\n};\n\n/**\n * IMultiFormProvider The Interface for what the MultiPageForm Provider will be\n * expecting\n *\n * @interface\n */\nexport interface IMultiPageFormProvider {\n  /** The name of the form */\n  formId: FormTypes;\n  /** The id of the page on the form */\n  pageId: PageTypes;\n  /** The children of the MultiPageForm Provider */\n  children: ReactNode;\n  /** Prepend Path */\n  prependPath?: string;\n  /** The optional form context */\n  formContext?: IFormContext;\n  /** The feature flags active in the application */\n  featureFlags?: string[] | null;\n  /**\n   * The form navigation mode.\n   *\n   * - `server`: the url path is used to navigate form steps.\n   * - `client`: a url query param is used to navigate form steps.\n   *\n   * @example\n   *   server:       /form-id/form-step\n   *   client:       /form-id/?step=form-step\n   *\n   * @default 'server'\n   */\n  renderMode?: 'server' | 'client';\n}\n\n/**\n * Get values from form content getters\n *\n * @param {MultiPageFormConfigurationData} formData - The form data\n * @param {MultiPageFormConfigurationPageContentWithValuesOrGetters} formContent\n *   - The form content\n *\n * @returns {MultiPageFormConfigurationData} - The form content\n */\nexport const withFormContentValues = (\n  formData: MultiPageFormConfigurationData,\n  formContent?: MultiPageFormConfigurationPageContentWithValuesOrGetters\n): MultiPageFormConfigurationPageContent => {\n  /**\n   * @property {string} title The title of the form\n   * @property {string} description The description of the form\n   */\n  const { title, description, ...rest } = formContent ?? {};\n\n  return {\n    title: maybeCallFunctionWithParams<string, MultiPageFormConfigurationData>(\n      formData,\n      title\n    ),\n    description: maybeCallFunctionWithParams<\n      string | JSX.Element | undefined,\n      MultiPageFormConfigurationData\n    >(formData, description),\n    ...rest,\n  } as MultiPageFormConfigurationPageContent;\n};\n\n/**\n * Multi Page Form Provider Used to provide the ability to use Multi Page Forms\n * on the current page.\n *\n * @param {IMultiPageFormProvider} props - The props for the MultiPageForm\n *   Provider\n * @returns {MultiPageFormContext} ToastContext\n */\nexport function MultiPageFormProvider({\n  formId,\n  pageId,\n  featureFlags = null,\n  children,\n  prependPath,\n  formContext,\n  renderMode = 'server',\n}: IMultiPageFormProvider): JSX.Element {\n  // Initialize the Data\n  const initialState = useInitData({ formId, formContext });\n  // Get the State and Dispatch\n  const [state, dispatch] = useReducer(MultiPageFormReducer, initialState);\n\n  // Form Data\n  const formData = state.forms[formId].data;\n  // Form Content\n  const formContent = state.forms[formId].content[\n    pageId\n  ] as MultiPageFormConfigurationPageContentWithValuesOrGetters;\n\n  /** Determine the order of the form according the feature flag that is enabled. */\n  const featureOrder = state.forms[formId].featureOrder;\n  const useFeature = useFeatureOrder(\n    featureFlags,\n    Object.keys(featureOrder || {})\n  );\n  let formOrder = state.forms[formId].featureOrder?.[useFeature || ''];\n  if (!formOrder) {\n    formOrder = state.forms[formId].order;\n  }\n\n  // Check the Progress Order\n  const validProgress = checkProgressOrder({\n    formId,\n    pageId,\n    order: formOrder,\n    storage: state.forms[formId].storage,\n  });\n  // Get Next Page\n  const nextUrl = getNextPage({\n    pageId,\n    formId,\n    order: formOrder,\n    prependPath,\n    renderMode: renderMode,\n  });\n  // Get Previous Page\n  const previousUrl = getPreviousPage({\n    pageId,\n    formId,\n    order: formOrder,\n    prependPath,\n    renderMode: renderMode,\n  });\n\n  // Get Progress Bar Percentage\n  const progress = getProgressPercentage(pageId, formOrder);\n  return (\n    <MultiPageFormContext.Provider\n      value={{\n        formId,\n        pageId,\n        progress,\n        nextUrl,\n        previousUrl,\n        formData,\n        formContent: withFormContentValues(formData, formContent),\n        formOrder,\n        validProgress,\n        state,\n        renderMode: renderMode,\n        dispatch,\n      }}\n    >\n      {children}\n    </MultiPageFormContext.Provider>\n  );\n}\n\n/**\n * Use Multi Page Form Context Used to allow components to interact with the\n * Multi Page Form Context\n *\n * @returns {IMultiPageFormContext} Multi Page Form Context\n */\nexport const useMultiPageFormContext = (): IMultiPageFormContext =>\n  useContext(MultiPageFormContext);\n","import LabelChip from '@/components/atoms/LabelChip/LabelChip';\nimport Paragraph from '@/components/atoms/Paragraph/Paragraph';\nimport {\n  microchipSafeDescription,\n  notificationsDescription,\n  notificationsHeader,\n  notificationsInfo,\n} from '@/lib/constants/constants/forms';\nimport { phonePrivacyDisclosure } from '@/lib/constants/constants/privacy';\nimport SessionStorage from '@/lib/utils/storage/session-storage';\nimport {\n  adopterPetPhotoStorageKey,\n  IAdopterPetPhotoStorage,\n} from '@/pages/activate-account/[id]';\nimport { MultiPageFormConfigurationItem } from './Configuration';\n\n/**\n * The storage for the Activate Account Multi-step Form.\n *\n * @constant\n * @type {SessionStorage}\n */\nexport const storage: SessionStorage = new SessionStorage();\n\n/**\n * The submit label for the form.\n *\n * @constant {string}\n */\nexport const submitLabel = 'Submit';\n\n/** The handler for the image change button of the Cropper */\n/**\n * This function single purpose is to overwrite the default behavior of this\n * action which is going to the previous step of the form. We want this to be\n * handled by the ImageUploadHandlerGroup which will bring back the\n * ImageUploader.\n */\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nconst onChangeImageHandler = () => {};\n\nconst petPhoto = storage.get(\n  adopterPetPhotoStorageKey\n) as IAdopterPetPhotoStorage;\n\n/**\n * Activate Account Configuration The Configuration for the Activate Account\n * Multi-step Form .\n *\n * @constant\n */\nconst ActivateAccountConfiguration: MultiPageFormConfigurationItem = {\n  order: [\n    'name',\n    'phone',\n    'upload-photo',\n    'pet-name',\n    'pet-sex',\n    'location',\n    'pet-microchip',\n    'password-alerts',\n  ],\n  data: {},\n  storage,\n  content: {\n    name: {\n      title: 'Welcome to Petco Love Lost',\n      description:\n        'Thanks for choosing to adopt a pet! Register them on Petco Love Lost now in case they ever go missing later.',\n      fields: [\n        {\n          label: 'First Name',\n          name: 'firstName',\n          type: 'text',\n          validations: [\n            {\n              type: 'required',\n              message: 'First Name is required',\n            },\n          ],\n        },\n        {\n          label: 'Last Name',\n          name: 'lastName',\n          type: 'text',\n          validations: [\n            {\n              type: 'required',\n              message: 'Last Name is required',\n            },\n          ],\n        },\n      ],\n    },\n    phone: {\n      title: \"What's your number?\",\n      description: phonePrivacyDisclosure,\n      fields: [\n        {\n          label: 'Phone',\n          name: 'phone',\n          type: 'tel',\n          validations: [\n            {\n              type: 'required',\n              message: 'Phone number is required',\n            },\n          ],\n        },\n      ],\n    },\n    'upload-photo': {\n      title: 'Crop photo',\n      description:\n        'Crop the photo around the pet’s face and body for best results. Or you can upload a new photo below.',\n      hideSubmit: true,\n      fields: [\n        {\n          label: '',\n          name: 'photo',\n          type: 'uploadPhoto',\n          fieldOptions: {\n            imageUploadHandler: {\n              quality: 0.8,\n              outputType: 'image/jpeg',\n              aspectRatio: 1,\n              uploadedImage: petPhoto?.photo,\n              onChangeImage: onChangeImageHandler,\n            },\n          },\n        },\n      ],\n    },\n    'pet-name': {\n      title: 'Now let’s confirm or update your pet’s name',\n      fields: [\n        {\n          label: 'Pet name',\n          name: 'petName',\n          type: 'text',\n          validations: [\n            {\n              type: 'blockProfanity',\n            },\n            {\n              type: 'required',\n              message: 'Pet Name is required',\n            },\n          ],\n          fieldOptions: {},\n        },\n      ],\n    },\n    'pet-sex': {\n      title: '{{petName}} is a',\n      fields: [\n        {\n          label: '',\n          name: 'typeOfPet',\n          type: 'inputButtons',\n          classes: 'mb-5',\n          fieldOptions: {\n            inputButtons: {\n              orientation: 'vertical',\n              /** OnChange function */\n              onChange: () => {\n                return;\n              },\n              options: [\n                {\n                  text: 'Female',\n                  active: false,\n                  icon: 'crown',\n                  value: 'female',\n                },\n                {\n                  text: 'Male',\n                  active: false,\n                  icon: 'bowTie',\n                  value: 'male',\n                },\n              ],\n            },\n          },\n          validations: [],\n        },\n      ],\n    },\n    location: {\n      title: 'Where do you and {{petName}} live?',\n      description:\n        'Please provide a specific street address. We will never share your exact location.',\n      fields: [\n        {\n          label: 'Address',\n          name: 'address',\n          type: 'locationGoogle',\n          validations: [\n            {\n              type: 'required',\n              message: 'Address is required',\n            },\n          ],\n        },\n      ],\n    },\n    'pet-microchip': {\n      title: 'Confirm or update your pet’s Microchip ID',\n      description: microchipSafeDescription,\n      fields: [\n        {\n          label: 'Enter microchip ID',\n          name: 'microchip',\n          type: 'microchip',\n          validations: [],\n        },\n      ],\n    },\n    'password-alerts': {\n      title: 'Create password',\n      submitLabel,\n      fields: [\n        {\n          label: 'Password',\n          name: 'password',\n          type: 'password',\n          validations: [\n            {\n              type: 'required',\n              message: 'Password is required',\n            },\n          ],\n        },\n        {\n          classes: 'pt-3',\n          label: '',\n          name: 'node',\n          type: 'node',\n          fieldOptions: {\n            node: {\n              options: (\n                <div className=\"flex flex-col text-left w-full\">\n                  <div className=\"flex flex-row h-[30px] mb-1 items-center space-x-2\">\n                    <Paragraph styling=\"bold\" size=\"body4\">\n                      {notificationsHeader}\n                    </Paragraph>\n                    <LabelChip text=\"BETA\" colorShade={200} colorType=\"info\" />\n                  </div>\n                  <Paragraph size=\"body5\">{notificationsDescription}</Paragraph>\n                </div>\n              ),\n            },\n          },\n        },\n        {\n          name: 'top divider',\n          label: '',\n          type: 'divider',\n          classes: 'mt-4 mb-1',\n          fieldOptions: {\n            divider: {\n              type: 'lightGrey',\n            },\n          },\n        },\n        {\n          label: 'Text alerts',\n          name: 'textAlerts',\n          type: 'toggle',\n        },\n        {\n          name: 'mid divider',\n          label: '',\n          type: 'divider',\n          classes: 'my-1',\n          fieldOptions: {\n            divider: {\n              type: 'lightGrey',\n            },\n          },\n        },\n        {\n          label: 'Email alerts',\n          name: 'emailAlerts',\n          type: 'toggle',\n        },\n        {\n          name: 'bottom divider',\n          label: '',\n          type: 'divider',\n          classes: 'mt-1',\n          fieldOptions: {\n            divider: {\n              type: 'lightGrey',\n            },\n          },\n        },\n        {\n          label: '',\n          name: 'node-info',\n          type: 'node',\n          classes: 'mt-3 mb-8',\n          fieldOptions: {\n            node: {\n              options: (\n                <Paragraph\n                  styling=\"italic\"\n                  size=\"overline\"\n                  className=\"text-left\"\n                >\n                  {notificationsInfo}\n                </Paragraph>\n              ),\n            },\n          },\n        },\n      ],\n    },\n  },\n};\n\nexport default ActivateAccountConfiguration;\n","import { microchipLostFoundDescription } from '@/lib/constants/constants/forms';\nimport LocalStorage from '@/lib/utils/storage/local-storage';\nimport { MultiPageFormConfigurationItem } from './Configuration';\n\n/**\n * The storage for the Add Pet Start Multi-step Form.\n *\n * @constant\n * @type {LocalStorage}\n */\nexport const storage: LocalStorage = new LocalStorage();\n\n/**\n * Add Pet Found Configuration The Configuration for the Create Account Start\n * Multi-step Form .\n *\n * @constant\n */\nconst AddPetFoundConfiguration: MultiPageFormConfigurationItem = {\n  order: [\n    'location',\n    'cross-streets',\n    'pet-date',\n    'pet-sex',\n    'pet-microchip',\n    'pet-description',\n  ],\n  data: {},\n  storage,\n  content: {\n    location: {\n      title: 'Where did you find them?',\n      description:\n        'Please provide a specific address. We will never share your exact location to the public.',\n      fields: [\n        {\n          label: 'Found near (address)',\n          name: 'address',\n          type: 'locationGoogle',\n          fieldOptions: {\n            locationGoogle: {\n              displayStaticMap: true,\n            },\n          },\n          validations: [\n            {\n              type: 'required',\n              message: 'Address is required',\n            },\n          ],\n        },\n      ],\n    },\n    'cross-streets': {\n      title: 'What are the nearest cross streets?',\n      description:\n        'Please provide the nearest cross streets and a landmark if there’s one nearby (e.g. 3rd and Main by the grocery store).',\n      fields: [\n        {\n          label: 'Nearest cross streets, landmark. etc.',\n          name: 'crossStreets',\n          type: 'text',\n          validations: [\n            {\n              type: 'blockProfanity',\n            },\n            {\n              type: 'max',\n              message: 'Cross streets must be at most 60 characters',\n              value: 60,\n            },\n          ],\n        },\n      ],\n    },\n    'pet-date': {\n      title: 'When did you find them?',\n      description:\n        'It may take 24 hours for this pet to be reported in our database - check back often!',\n      fields: [\n        {\n          label: 'Found date (mm/dd/yyyy)',\n          name: 'foundDate',\n          type: 'date',\n          validations: [\n            {\n              type: 'required',\n              message: 'Found Date is required',\n            },\n          ],\n        },\n      ],\n    },\n    'pet-sex': {\n      title: 'This pet is a',\n      fields: [\n        {\n          label: '',\n          name: 'typeOfPet',\n          type: 'inputButtons',\n          classes: 'mb-5',\n          fieldOptions: {\n            inputButtons: {\n              orientation: 'vertical',\n              /** OnChange function */\n              onChange: () => {\n                return;\n              },\n              options: [\n                {\n                  text: 'Female',\n                  active: false,\n                  icon: 'crown',\n                  value: 'female',\n                },\n                {\n                  text: 'Male',\n                  active: false,\n                  icon: 'bowTie',\n                  value: 'male',\n                },\n                {\n                  text: 'Unknown',\n                  active: false,\n                  icon: 'questionCircle',\n                  value: 'unknown',\n                },\n              ],\n            },\n          },\n        },\n      ],\n    },\n    'pet-microchip': {\n      title: 'What is their Microchip ID?',\n      description: microchipLostFoundDescription,\n      fields: [\n        {\n          label: 'Enter microchip ID (optional)',\n          name: 'microchip',\n          type: 'microchip',\n          validations: [],\n        },\n      ],\n    },\n    'pet-description': {\n      title: 'What are they like?',\n      description: 'Describe their personality, physical traits, etc.',\n      submitLabel: 'Add Pet',\n      fields: [\n        {\n          label: 'Description (optional)',\n          name: 'description',\n          type: 'textarea',\n          fieldOptions: {\n            textArea: {\n              rows: 5,\n              floatingLabel: true,\n            },\n          },\n          validations: [\n            {\n              type: 'blockProfanity',\n            },\n          ],\n        },\n      ],\n    },\n  },\n};\nexport default AddPetFoundConfiguration;\n","import { microchipLostFoundDescription } from '@/lib/constants/constants/forms';\nimport LocalStorage from '@/lib/utils/storage/local-storage';\nimport { MultiPageFormConfigurationItem } from './Configuration';\n\n/**\n * The storage for the Add Pet Start Multi-step Form.\n *\n * @constant\n * @type {LocalStorage}\n */\nexport const storage: LocalStorage = new LocalStorage();\n\n/**\n * Add Pet Lost Configuration The Configuration for the Create Account Start\n * Multi-step Form .\n *\n * @constant\n */\nconst AddPetLostConfiguration: MultiPageFormConfigurationItem = {\n  order: [\n    'pet-name',\n    'location',\n    'cross-streets',\n    'pet-date',\n    'pet-sex',\n    'pet-microchip',\n    'pet-description',\n  ],\n  data: {},\n  storage,\n  content: {\n    'pet-name': {\n      title: 'What is your pet’s name?',\n      fields: [\n        {\n          label: 'Pet name',\n          name: 'petName',\n          type: 'text',\n          validations: [\n            {\n              type: 'blockProfanity',\n            },\n            {\n              type: 'required',\n              message: 'Pet Name is required',\n            },\n          ],\n        },\n      ],\n    },\n    location: {\n      title: 'Where did {{petName}} get lost?',\n      description:\n        'Please provide a specific address. We will never share your exact location to the public.',\n      fields: [\n        {\n          label: 'Lost near (address)',\n          name: 'address',\n          type: 'locationGoogle',\n          fieldOptions: {\n            locationGoogle: {\n              displayStaticMap: true,\n            },\n          },\n          validations: [\n            {\n              type: 'required',\n              message: 'Address is required',\n            },\n          ],\n        },\n      ],\n    },\n    'cross-streets': {\n      title: 'What are the nearest cross streets?',\n      description:\n        'Please provide the nearest cross streets and a landmark if there’s one nearby (e.g. 3rd and Main by the grocery store).',\n      fields: [\n        {\n          label: 'Nearest cross streets, landmark. etc.',\n          name: 'crossStreets',\n          type: 'text',\n          validations: [\n            {\n              type: 'blockProfanity',\n            },\n            {\n              type: 'max',\n              message: 'Cross streets must be at most 60 characters',\n              value: 60,\n            },\n          ],\n        },\n      ],\n    },\n    'pet-date': {\n      title: 'When was {{petName}} last seen?',\n      description:\n        'It may take 24 hours for this pet to be reported in our database - check back often!',\n      fields: [\n        {\n          label: 'Lost date (mm/dd/yyyy)',\n          name: 'lostDate',\n          type: 'date',\n          validations: [\n            {\n              type: 'required',\n              message: 'Lost date is required',\n            },\n          ],\n        },\n      ],\n    },\n    'pet-sex': {\n      title: '{{petName}} is a',\n      fields: [\n        {\n          label: '',\n          name: 'typeOfPet',\n          type: 'inputButtons',\n          classes: 'mb-5',\n          fieldOptions: {\n            inputButtons: {\n              orientation: 'vertical',\n              /** OnChange function */\n              onChange: () => {\n                return;\n              },\n              options: [\n                {\n                  text: 'Female',\n                  active: false,\n                  icon: 'crown',\n                  value: 'female',\n                },\n                {\n                  text: 'Male',\n                  active: false,\n                  icon: 'bowTie',\n                  value: 'male',\n                },\n                {\n                  text: 'Unknown',\n                  active: false,\n                  icon: 'questionCircle',\n                  value: 'unknown',\n                },\n              ],\n            },\n          },\n        },\n      ],\n    },\n    'pet-microchip': {\n      title: \"What is {{petName}}'s Microchip ID?\",\n      description: microchipLostFoundDescription,\n      fields: [\n        {\n          label: 'Enter microchip ID (optional)',\n          name: 'microchip',\n          type: 'microchip',\n          validations: [],\n        },\n      ],\n    },\n    'pet-description': {\n      title: 'What is {{petName}} like?',\n      description: 'Describe their personality, physical traits, etc.',\n      submitLabel: 'Add Pet',\n      fields: [\n        {\n          label: 'Description (optional)',\n          name: 'description',\n          type: 'textarea',\n          fieldOptions: {\n            textArea: {\n              rows: 5,\n              floatingLabel: true,\n            },\n          },\n          validations: [\n            {\n              type: 'blockProfanity',\n            },\n          ],\n        },\n      ],\n    },\n  },\n};\nexport default AddPetLostConfiguration;\n","import { microchipSafeDescription } from '@/lib/constants/constants/forms';\nimport LocalStorage from '@/lib/utils/storage/local-storage';\nimport { MultiPageFormConfigurationItem } from './Configuration';\n\n/**\n * The storage for the Add Pet Start Multi-step Form.\n *\n * @constant\n * @type {LocalStorage}\n */\nexport const storage: LocalStorage = new LocalStorage();\n\n/**\n * Add Pet Safe Configuration The Configuration for the Create Account Start\n * Multi-step Form .\n *\n * @constant\n */\nconst AddPetSafeConfiguration: MultiPageFormConfigurationItem = {\n  order: [\n    'pet-name',\n    'location',\n    'pet-sex',\n    'pet-microchip',\n    'pet-description',\n  ],\n  data: {},\n  storage,\n  content: {\n    'pet-name': {\n      title: 'What is your pet’s name?',\n      fields: [\n        {\n          label: 'Pet name',\n          name: 'petName',\n          type: 'text',\n          validations: [\n            {\n              type: 'blockProfanity',\n            },\n            {\n              type: 'required',\n              message: 'Pet Name is required',\n            },\n          ],\n        },\n      ],\n    },\n    location: {\n      title: 'Where do you and {{petName}} live?',\n      description:\n        'Please provide a specific street address. We will never share your exact location.',\n      fields: [\n        {\n          label: 'Street address',\n          name: 'address',\n          type: 'locationGoogle',\n          fieldOptions: {\n            locationGoogle: {\n              requiredAddressComponents: ['streetAddress'],\n            },\n          },\n          validations: [\n            {\n              type: 'required',\n              message: 'Address is required',\n            },\n          ],\n        },\n      ],\n    },\n    'pet-sex': {\n      title: '{{petName}} is a',\n      fields: [\n        {\n          label: '',\n          name: 'typeOfPet',\n          type: 'inputButtons',\n          classes: 'mb-5',\n          fieldOptions: {\n            inputButtons: {\n              orientation: 'vertical',\n              /** OnChange function */\n              onChange: () => {\n                return;\n              },\n              options: [\n                {\n                  text: 'Female',\n                  active: false,\n                  icon: 'crown',\n                  value: 'female',\n                },\n                {\n                  text: 'Male',\n                  active: false,\n                  icon: 'bowTie',\n                  value: 'male',\n                },\n                {\n                  text: 'Unknown',\n                  active: false,\n                  icon: 'questionCircle',\n                  value: 'unknown',\n                },\n              ],\n            },\n          },\n        },\n      ],\n    },\n    'pet-microchip': {\n      title: \"What is {{petName}}'s Microchip ID?\",\n      description: microchipSafeDescription,\n      fields: [\n        {\n          label: 'Enter microchip ID (optional)',\n          name: 'microchip',\n          type: 'microchip',\n          validations: [],\n        },\n      ],\n    },\n    'pet-description': {\n      title: 'What is {{petName}} like?',\n      submitLabel: 'Add Pet',\n      description: 'Describe their personality, physical traits, etc.',\n      fields: [\n        {\n          label: 'Description (optional)',\n          name: 'description',\n          type: 'textarea',\n          fieldOptions: {\n            textArea: {\n              rows: 5,\n              floatingLabel: true,\n            },\n          },\n          validations: [\n            {\n              type: 'blockProfanity',\n            },\n          ],\n        },\n      ],\n    },\n  },\n};\nexport default AddPetSafeConfiguration;\n","import LocalStorage from '@/lib/utils/storage/local-storage';\nimport { MultiPageFormConfigurationItem } from './Configuration';\n\n/**\n * The storage for the Add Pet Start Multi-step Form.\n *\n * @constant\n * @type {LocalStorage}\n */\nexport const storage: LocalStorage = new LocalStorage();\n\n/**\n * Add Pet Start Configuration The Configuration for the Add Pet Start\n * Multi-step Form .\n *\n * @constant\n */\nconst AddPetStartConfiguration: MultiPageFormConfigurationItem = {\n  order: ['upload-photo', 'pet-type'],\n  data: {},\n  storage,\n  retainDataOnSubmit: true,\n  content: {\n    'upload-photo': {\n      title: 'Add pet photo',\n      description:\n        'Photo quality will affect your search results. Please select a clear image of one pet looking directly at the camera.',\n      hideSubmit: true,\n      fields: [\n        {\n          label: 'Photo',\n          name: 'photo',\n          type: 'uploadPhoto',\n          fieldOptions: {\n            imageUploadHandler: {\n              quality: 0.8,\n              outputType: 'image/jpeg',\n              aspectRatio: 1,\n            },\n          },\n          validations: [\n            {\n              type: 'required',\n              message: 'Pet Photo is required',\n            },\n          ],\n        },\n      ],\n    },\n    'pet-type': {\n      title: 'Nice pic! This pet is:',\n      submitLabel: 'Continue',\n      fields: [\n        {\n          label: '',\n          name: 'petType',\n          type: 'inputButtons',\n          validations: [\n            {\n              type: 'required',\n              message: 'Pet Type is required',\n            },\n          ],\n          classes: 'mb-5',\n          fieldOptions: {\n            inputButtons: {\n              orientation: 'vertical',\n              /** OnChange function */\n              onChange: () => {\n                return;\n              },\n              options: [\n                {\n                  text: 'Safe at Home',\n                  icon: 'home',\n                  value: 'safePet',\n                  active: false,\n                },\n                {\n                  text: 'Lost',\n                  icon: 'signPost',\n                  value: 'lostPet',\n                  active: false,\n                },\n                {\n                  text: 'Pet I found',\n                  icon: 'search',\n                  value: 'foundPet',\n                  active: false,\n                },\n              ],\n            },\n          },\n        },\n      ],\n    },\n  },\n};\n\nexport default AddPetStartConfiguration;\n","import LocalStorage from '@/lib/utils/storage/local-storage';\nimport { MultiPageFormConfigurationItem, PageTypes } from './Configuration';\n\n/**\n * The storage for the All Pets Multi-step Form.\n *\n * @constant\n * @type {LocalStorage}\n */\nexport const storage: LocalStorage = new LocalStorage();\n\n/**\n * The order of the pages in the All pets Multi-step Form.\n *\n * @constant {PageTypes[]} allPetsPage\n */\nexport const allPetsPage: PageTypes[] = ['location'];\n\n/**\n * All Pets Configuration Multi-step Form .\n *\n * @constant\n */\nconst AllPetsConfiguration: MultiPageFormConfigurationItem = {\n  order: allPetsPage,\n  data: {},\n  storage,\n  content: {\n    location: {\n      submitLabel: 'Search All Pets',\n      title: 'Where are you located?',\n      description:\n        'You may provide the specific address. We will never share your exact location.',\n      fields: [\n        {\n          label: 'Search location (city, state or zip)',\n          name: 'address',\n          type: 'locationGoogle',\n          validations: [\n            {\n              type: 'required',\n              message: 'Address is required',\n            },\n          ],\n          fieldOptions: {\n            locationGoogle: {\n              requiredAddressComponents: ['region', 'city', 'postalCode'],\n              autocompleteTypes: ['geocode'],\n            },\n          },\n        },\n      ],\n    },\n  },\n};\nexport default AllPetsConfiguration;\n","import SessionStorage from '@/lib/utils/storage/session-storage';\nimport { MultiPageFormConfigurationItem } from './Configuration';\n\n/**\n * The storage to be used for the multi page form\n *\n * @constant {SessionStorage}\n */\nexport const storage = new SessionStorage();\n\n/**\n * Report a pet as lost Configuration\n *\n * @constant\n */\nconst ReportAsLostConfiguration: MultiPageFormConfigurationItem = {\n  order: ['location', 'cross-streets', 'pet-date'],\n  data: {},\n  storage,\n  content: {\n    location: {\n      title: `Where did your pet get lost?`,\n      description:\n        'Please provide a specific address. We will never share your exact location to the public.',\n      fields: [\n        {\n          label: 'Lost near (address)',\n          name: 'address',\n          type: 'locationGoogle',\n          fieldOptions: {\n            locationGoogle: {\n              displayStaticMap: true,\n            },\n          },\n          validations: [\n            {\n              type: 'required',\n              message: 'Address is required',\n            },\n          ],\n        },\n      ],\n    },\n    'cross-streets': {\n      title: 'What are the nearest cross streets?',\n      description:\n        'Please provide the nearest cross streets and a landmark if there’s one nearby (e.g. 3rd and Main by the grocery store).',\n      fields: [\n        {\n          label: 'Nearest cross streets, landmark. etc.',\n          name: 'crossStreets',\n          type: 'text',\n          validations: [\n            {\n              type: 'blockProfanity',\n            },\n            {\n              type: 'max',\n              message: 'Cross streets must be at most 60 characters',\n              value: 60,\n            },\n          ],\n        },\n      ],\n    },\n    'pet-date': {\n      title: `When was your pet last seen?`,\n      description:\n        'It may take 24 hours for this pet to be reported in our database - check back often!',\n      fields: [\n        {\n          label: 'Lost date (mm/dd/yyyy)',\n          name: 'date',\n          type: 'date',\n          validations: [\n            {\n              type: 'required',\n              message: 'Lost Date is required',\n            },\n          ],\n        },\n      ],\n    },\n  },\n};\nexport default ReportAsLostConfiguration;\n","import SessionStorage from '@/lib/utils/storage/session-storage';\nimport { MultiPageFormConfigurationItem, PageTypes } from './Configuration';\n\nconst storage = new SessionStorage();\n\nconst pageOrder: PageTypes[] = ['location', 'photo', 'crop-photo'];\nconst featureFlagOrder: PageTypes[] = [\n  'location',\n  'pet-date',\n  'photo',\n  'crop-photo',\n];\n\n/**\n * I Lost A Pet Configuration The Configuration for the I Lost A Pet Multi-step\n * Form .\n *\n * @constant\n */\nconst TestConfiguration: MultiPageFormConfigurationItem = {\n  order: pageOrder,\n  featureOrder: {\n    test_flag_date_filter: featureFlagOrder,\n  },\n  data: {},\n  storage,\n  content: {\n    location: {\n      overline: 'Step 1',\n      title: 'Where did your pet get lost? {{address}}',\n      defaults: {\n        address: '123 Main St',\n      },\n      fields: [\n        {\n          label: 'Address',\n          name: 'address',\n          type: 'text',\n          validations: [\n            {\n              type: 'required',\n              message: 'Address is required',\n            },\n          ],\n        },\n      ],\n    },\n    photo: {\n      title: 'Add pet photo',\n      description:\n        'Photo quality will affect your search results. Please select a clear image of one pet looking directly at the camera.',\n      fields: [\n        {\n          label: 'Photo',\n          name: 'photo',\n          type: 'text',\n          validations: [\n            {\n              type: 'required',\n              message: 'Photo is required',\n            },\n          ],\n        },\n      ],\n    },\n    'crop-photo': {\n      title: 'Crop photo',\n      description:\n        'Photo quality will affect your search results. Please select a clear image of one pet looking directly at the camera.',\n\n      fields: [\n        {\n          label: 'Photo',\n          name: 'cropPhoto',\n          type: 'cropPhoto',\n          fieldOptions: {\n            imageCropper: {\n              aspectRatio: 1,\n              quality: 1,\n              outputType: 'image/jpeg',\n              image:\n                'https://d2cv8qvq4e7ii1.cloudfront.net/assets/lost/placeholder/pet-placeholder.jpg',\n            },\n          },\n        },\n      ],\n    },\n  },\n};\n\nexport default TestConfiguration;\n","import { IBaseField } from '@/components/organisms/FormBuilder/FieldPropTypes';\nimport { ValueOrGetter } from '@/lib/utils/helpers/maybeCallFunctionWithParams/maybeCallFunctionWithParams';\nimport CookieStorage from '@/lib/utils/storage/cookie-storage';\nimport LocalStorage from '@/lib/utils/storage/local-storage';\nimport SessionStorage from '@/lib/utils/storage/session-storage';\nimport ActivateAccountConfiguration from './ActivateAccount';\nimport OnboardPetConfiguration from './OnboardPet';\nimport AddPetFoundConfiguration from './AddPetFound';\nimport AddPetLostConfiguration from './AddPetLost';\nimport AddPetSafeConfiguration from './AddPetSafe';\nimport AddPetStartConfiguration from './AddPetStart';\nimport AllPetsConfiguration from './AllPets';\nimport CreateAccountFoundConfiguration from './CreateAccountFound';\nimport CreateAccountFoundDistanceConfiguration from './CreateAccountFoundDistance';\nimport CreateAccountFoundPhotoConfiguration from './CreateAccountFoundPhoto';\nimport CreateAccountFoundReportConfiguration from './CreateAccountFoundReport';\nimport CreateAccountLostConfiguration from './CreateAccountLost';\nimport CreateAccountLostDistanceConfiguration from './CreateAccountLostDistance';\nimport CreateAccountLostPhotoConfiguration from './CreateAccountLostPhoto';\nimport CreateAccountLostReportConfiguration from './CreateAccountLostReport';\nimport CreateAccountSafeConfiguration from './CreateAccountSafe';\nimport CreateAccountStartConfiguration from './CreateAccountStart';\nimport IFoundAPetConfiguration from './IFoundAPetConfiguration';\nimport ILostAPetConfiguration from './ILostAPetConfiguration';\nimport ReportAsLostConfiguration from './ReportAsLost';\nimport TestConfiguration from './TestConfiguration';\n\n/**\n * Form Types The Allowed Form Types to allow for the MultiPage MultiStep Form.\n *\n * @typedef\n */\nexport type FormTypes =\n  | 'activate-account/signup'\n  | 'all-pets'\n  | 'i-lost-a-pet'\n  | 'i-found-a-pet'\n  | 'create-account/start'\n  | 'create-account/lost-photo'\n  | 'create-account/lost-distance'\n  | 'create-account/lost-report'\n  | 'create-account/safe'\n  | 'create-account/lost'\n  | 'create-account/found'\n  | 'create-account/found-photo'\n  | 'create-account/found-distance'\n  | 'create-account/found-report'\n  | 'dash/add-pet/start'\n  | 'dash/add-pet/safe'\n  | 'dash/add-pet/found'\n  | 'dash/add-pet/lost'\n  | 'report-as-lost'\n  | 'onboard-pet/form'\n  | 'test';\n\n/**\n * Page Types The Allowed Page Types to allow for the MultiPage MultiStep Form.\n *\n * @typedef\n */\nexport type PageTypes =\n  | 'location'\n  | 'photo'\n  | 'test2'\n  | 'name'\n  | 'email'\n  | 'phone'\n  | 'upload-photo'\n  | 'crop-photo'\n  | 'pet-type'\n  | 'pet-name'\n  | 'pet-date'\n  | 'pet-sex'\n  | 'pet-microchip'\n  | 'pet-description'\n  | 'password'\n  | 'pet-location'\n  | 'pet-status'\n  | 'pet-details'\n  | 'password-alerts'\n  | 'upload-more-photos'\n  | 'cross-streets';\n\n/**\n * Storage Types The Allowed Storage Types to allow for the MultiPage MultiStep\n * Form.\n *\n * @typedef\n */\nexport type StorageTypes = LocalStorage | SessionStorage | CookieStorage;\n\n/**\n * MultiPage Form Configuration Data The Configuration Data for the MultiPage\n * Form.\n *\n * @interface\n */\nexport interface MultiPageFormConfigurationData {\n  [key: string]: number | string | boolean | React.ReactNode | null | object;\n}\n\n/** The Field Options Value or Getter type */\nexport type FieldOptionsValueOrGetter<T> = ValueOrGetter<\n  T,\n  MultiPageFormConfigurationData\n>;\n\n/**\n * MultiPage Form Configuration Page The Configuration for each Page for the\n * MultiPage Form with Values or Getters where applicable (For example title and\n * description)\n *\n * @interface\n */\nexport type MultiPageFormConfigurationContentWithValuesOrGetters = {\n  [Property in PageTypes]?: MultiPageFormConfigurationPageContentWithValuesOrGetters;\n};\n\n/**\n * MultiPage Form Configuration Content The Configuration Content for the\n * MultiPage Form. This is the content that is displayed on the page. With\n * Values or getters where applicable (For example title and description)\n *\n * @interface\n */\nexport interface MultiPageFormConfigurationPageContentWithValuesOrGetters {\n  /** The overline text */\n  overline?: string;\n  /** The title text */\n  title: FieldOptionsValueOrGetter<string>;\n  /** The description text */\n  description?: FieldOptionsValueOrGetter<string | JSX.Element>;\n  /** The form fields */\n  fields: IBaseField[];\n  /** The defaults associated with the form fields */\n  defaults?: MultiPageFormConfigurationData;\n  /**\n   * Hide the submit button\n   *\n   * @default false\n   */\n  hideSubmit?: boolean;\n  /**\n   * The label used for the submit button\n   *\n   * @default 'Continue'\n   */\n  submitLabel?: string;\n}\n\n/**\n * MultiPage Form Configuration Content The Configuration Content for the\n * MultiPage Form. This is the content that is displayed on the page.\n *\n * @interface\n */\nexport interface MultiPageFormConfigurationPageContent {\n  /** The overline text */\n  overline?: string;\n  /** The title text */\n  title: string;\n  /** The description text */\n  description?: string;\n  /** The form fields */\n  fields: IBaseField[];\n  /** The defaults associated with the form fields */\n  defaults?: MultiPageFormConfigurationData;\n  /**\n   * Hide the submit button\n   *\n   * @default false\n   */\n  hideSubmit?: boolean;\n  /**\n   * The label used for the submit button\n   *\n   * @default 'Continue'\n   */\n  submitLabel?: string;\n}\n\n/**\n * MultiPage Form Configuration Page The Configuration for each Page for the\n * MultiPage Form.\n *\n * @interface\n */\nexport type MultiPageFormConfigurationContent = {\n  [Property in PageTypes]?: MultiPageFormConfigurationPageContent;\n};\n\n/**\n * MultiPage Form Configuration\n *\n * @interface\n */\nexport interface MultiPageFormConfigurationItem {\n  /** The order of the pages */\n  order: PageTypes[];\n  /** The data for the form */\n  data: MultiPageFormConfigurationData;\n  /** The content for the form */\n  content: MultiPageFormConfigurationContentWithValuesOrGetters;\n  /** The storage type for the form */\n  storage?: StorageTypes;\n  /** The order of pages according to the feature flag */\n  featureOrder?: {\n    [key: string]: PageTypes[];\n  };\n  /** Retain the data on submit */\n  retainDataOnSubmit?: boolean;\n}\n\n/**\n * MultiPage Form Configuration The Configuration for the MultiPage Form.\n *\n * @typedef {MultiPageFormConfiguration}\n */\nexport type MultiPageFormConfiguration = {\n  [Property in FormTypes]: MultiPageFormConfigurationItem;\n};\n\n/** Main Configuration The Main Configuration for the MultiPage Form. */\nconst configurations: MultiPageFormConfiguration = {\n  'activate-account/signup': ActivateAccountConfiguration,\n  'all-pets': AllPetsConfiguration,\n  'i-lost-a-pet': ILostAPetConfiguration,\n  'i-found-a-pet': IFoundAPetConfiguration,\n  'create-account/start': CreateAccountStartConfiguration,\n  'create-account/lost-photo': CreateAccountLostPhotoConfiguration,\n  'create-account/lost-distance': CreateAccountLostDistanceConfiguration,\n  'create-account/lost-report': CreateAccountLostReportConfiguration,\n  'create-account/safe': CreateAccountSafeConfiguration,\n  'create-account/lost': CreateAccountLostConfiguration,\n  'create-account/found': CreateAccountFoundConfiguration,\n  'create-account/found-photo': CreateAccountFoundPhotoConfiguration,\n  'create-account/found-distance': CreateAccountFoundDistanceConfiguration,\n  'create-account/found-report': CreateAccountFoundReportConfiguration,\n  'dash/add-pet/start': AddPetStartConfiguration,\n  'dash/add-pet/safe': AddPetSafeConfiguration,\n  'dash/add-pet/found': AddPetFoundConfiguration,\n  'dash/add-pet/lost': AddPetLostConfiguration,\n  'report-as-lost': ReportAsLostConfiguration,\n  'onboard-pet/form': OnboardPetConfiguration,\n  test: TestConfiguration,\n};\n\nexport default configurations;\n","import LabelChip from '@/components/atoms/LabelChip/LabelChip';\nimport Paragraph from '@/components/atoms/Paragraph/Paragraph';\nimport {\n  microchipLostFoundDescription,\n  notificationsDescription,\n  notificationsHeader,\n  notificationsInfo,\n} from '@/lib/constants/constants/forms';\nimport SessionStorage from '@/lib/utils/storage/session-storage';\nimport { MultiPageFormConfigurationItem } from './Configuration';\n\n/**\n * The storage for the Add Pet Start Multi-step Form.\n *\n * @constant\n * @type {SessionStorage}\n */\nexport const storage: SessionStorage = new SessionStorage();\n\n/**\n * The submit label for the form.\n *\n * @constant {string}\n */\nexport const submitLabel = 'Submit';\n\n/**\n * Create Account Found Configuration The Configuration for the Create Account\n * Start Multi-step Form .\n *\n * @constant\n */\nconst CreateAccountFoundConfiguration: MultiPageFormConfigurationItem = {\n  order: [\n    'pet-location',\n    'cross-streets',\n    'pet-date',\n    'pet-sex',\n    'pet-microchip',\n    'pet-description',\n    'password-alerts',\n  ],\n  data: {},\n  storage,\n  content: {\n    'pet-location': {\n      title: 'Where did you find them?',\n      description:\n        'Please provide a specific address. We will never share your exact location to the public.',\n      fields: [\n        {\n          label: 'Street address',\n          name: 'petLocation',\n          type: 'locationGoogle',\n          fieldOptions: {\n            locationGoogle: {\n              requiredAddressComponents: ['streetAddress'],\n              displayStaticMap: true,\n            },\n          },\n          validations: [\n            {\n              type: 'required',\n              message: 'Location is required',\n            },\n          ],\n        },\n      ],\n    },\n    'cross-streets': {\n      title: 'What are the nearest cross streets?',\n      description:\n        'Please provide the nearest cross streets and a landmark if there’s one nearby (e.g. 3rd and Main by the grocery store).',\n      fields: [\n        {\n          label: 'Nearest cross streets, landmark. etc.',\n          name: 'crossStreets',\n          type: 'text',\n          validations: [\n            {\n              type: 'blockProfanity',\n            },\n            {\n              type: 'max',\n              message: 'Cross streets must be at most 60 characters',\n              value: 60,\n            },\n          ],\n        },\n      ],\n    },\n    'pet-date': {\n      title: 'When did you find them?',\n      description:\n        'It may take 24 hours for this pet to be reported in our database - check back often!',\n      fields: [\n        {\n          label: 'Found date (mm/dd/yyyy)',\n          name: 'foundDate',\n          type: 'date',\n          validations: [\n            {\n              type: 'required',\n              message: 'Found date is required',\n            },\n          ],\n        },\n      ],\n    },\n    'pet-sex': {\n      title: 'This pet is a',\n      fields: [\n        {\n          label: '',\n          name: 'typeOfPet',\n          type: 'inputButtons',\n          fieldOptions: {\n            inputButtons: {\n              orientation: 'vertical',\n              /** OnChange function */\n              onChange: () => {\n                return;\n              },\n              options: [\n                {\n                  text: 'Female',\n                  active: false,\n                  icon: 'crown',\n                  value: 'female',\n                },\n                {\n                  text: 'Male',\n                  active: false,\n                  icon: 'bowTie',\n                  value: 'male',\n                },\n                {\n                  text: 'Unknown',\n                  active: false,\n                  icon: 'questionCircle',\n                  value: 'unknown',\n                },\n              ],\n            },\n          },\n        },\n      ],\n    },\n    'pet-microchip': {\n      title: 'What is their Microchip ID?',\n      description: microchipLostFoundDescription,\n      fields: [\n        {\n          label: 'Enter microchip ID (optional)',\n          name: 'microchip',\n          type: 'microchip',\n          validations: [],\n        },\n      ],\n    },\n    'pet-description': {\n      title: 'What are they like?',\n      description: 'Describe their personality, physical traits, etc.',\n      fields: [\n        {\n          label: 'Description (optional)',\n          name: 'description',\n          type: 'textarea',\n          fieldOptions: {\n            textArea: {\n              rows: 5,\n              floatingLabel: true,\n            },\n          },\n          validations: [\n            {\n              type: 'blockProfanity',\n            },\n          ],\n        },\n      ],\n    },\n    'password-alerts': {\n      title: 'Create password',\n      submitLabel,\n      fields: [\n        {\n          label: 'Password',\n          name: 'password',\n          type: 'password',\n          validations: [\n            {\n              type: 'required',\n              message: 'Password is required',\n            },\n          ],\n        },\n        {\n          classes: 'pt-3',\n          label: '',\n          name: 'node',\n          type: 'node',\n          fieldOptions: {\n            node: {\n              options: (\n                <div className=\"flex flex-col text-left w-full\">\n                  <div className=\"flex flex-row h-[30px] mb-1 items-center space-x-2\">\n                    <Paragraph\n                      styling=\"bold\"\n                      size=\"body4\"\n                      className=\"text-secondaryBase-400\"\n                    >\n                      {notificationsHeader}\n                    </Paragraph>\n                    <LabelChip text=\"BETA\" colorShade={200} colorType=\"info\" />\n                  </div>\n                  <Paragraph size=\"body5\">{notificationsDescription}</Paragraph>\n                </div>\n              ),\n            },\n          },\n        },\n        {\n          name: 'top divider',\n          label: '',\n          type: 'divider',\n          classes: 'mt-4 mb-1',\n          fieldOptions: {\n            divider: {\n              type: 'lightGrey',\n            },\n          },\n        },\n        {\n          label: 'Text alerts',\n          name: 'textAlerts',\n          type: 'toggle',\n        },\n        {\n          name: 'mid divider',\n          label: '',\n          type: 'divider',\n          classes: 'my-1',\n          fieldOptions: {\n            divider: {\n              type: 'lightGrey',\n            },\n          },\n        },\n        {\n          label: 'Email alerts',\n          name: 'emailAlerts',\n          type: 'toggle',\n        },\n        {\n          name: 'bottom divider',\n          label: '',\n          type: 'divider',\n          classes: 'mt-1',\n          fieldOptions: {\n            divider: {\n              type: 'lightGrey',\n            },\n          },\n        },\n        {\n          label: '',\n          name: 'node-info',\n          type: 'node',\n          classes: 'mt-3 mb-8',\n          fieldOptions: {\n            node: {\n              options: (\n                <Paragraph\n                  styling=\"italic\"\n                  size=\"overline\"\n                  className=\"text-left\"\n                >\n                  {notificationsInfo}\n                </Paragraph>\n              ),\n            },\n          },\n        },\n        {\n          label: '',\n          name: 'facebookMessage',\n          type: 'facebookFormMessage',\n        },\n      ],\n    },\n  },\n};\n\nexport default CreateAccountFoundConfiguration;\n","import LabelChip from '@/components/atoms/LabelChip/LabelChip';\nimport Paragraph from '@/components/atoms/Paragraph/Paragraph';\nimport {\n  microchipLostFoundDescription,\n  notificationsDescription,\n  notificationsHeader,\n  notificationsInfo,\n} from '@/lib/constants/constants/forms';\nimport { phonePrivacyDisclosure } from '@/lib/constants/constants/privacy';\nimport SessionStorage from '@/lib/utils/storage/session-storage';\nimport { MultiPageFormConfigurationItem } from './Configuration';\n\n/**\n * The storage for the I Lost A Pet Multi-step Form.\n *\n * @constant\n * @type {SessionStorage}\n */\nexport const storage: SessionStorage = new SessionStorage();\n\n/**\n * The submit label for the form.\n *\n * @constant {string}\n */\nexport const submitLabel = 'Submit';\n\n/** The handler for the image change button of the Cropper */\n/**\n * This function single purpose is to overwrite the default behavior of this\n * action which is going to the previous step of the form. We want this to be\n * handled by the ImageUploadHandlerGroup which will bring back the\n * ImageUploader.\n */\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport const onChangeImageHandler = () => {};\n\n/**\n * Create Account Found Distance Configuration The Configuration for the Create\n * Account Start Multi-step Form .\n *\n * @constant\n */\nconst CreateAccountFoundDistanceConfiguration: MultiPageFormConfigurationItem =\n  {\n    order: [\n      'name',\n      'email',\n      'phone',\n      'upload-photo',\n      'pet-date',\n      'pet-sex',\n      'pet-microchip',\n      'pet-description',\n      'password-alerts',\n    ],\n    data: {},\n    storage,\n    content: {\n      name: {\n        title: 'Welcome to Petco Love Lost',\n        description:\n          'Whether you need to report a lost or found pet or want to register your pet in case they go missing later – you’re in the right place.',\n        fields: [\n          {\n            label: 'First Name',\n            name: 'firstName',\n            type: 'text',\n            validations: [\n              {\n                type: 'required',\n                message: 'First Name is required',\n              },\n            ],\n          },\n          {\n            label: 'Last Name',\n            name: 'lastName',\n            type: 'text',\n            validations: [\n              {\n                type: 'required',\n                message: 'Last Name is required',\n              },\n            ],\n          },\n        ],\n      },\n      email: {\n        title: \"What's your email?\",\n        description:\n          'We’ll only use your email to keep in touch about the pet you register.',\n        fields: [\n          {\n            label: 'Email',\n            name: 'email',\n            type: 'email',\n            validations: [\n              {\n                type: 'required',\n                message: 'Email is required',\n              },\n              {\n                type: 'newUser',\n                message: 'Email is already taken',\n              },\n            ],\n          },\n        ],\n      },\n      phone: {\n        title: \"What's your number?\",\n        description: phonePrivacyDisclosure,\n        fields: [\n          {\n            label: 'Phone',\n            name: 'phone',\n            type: 'tel',\n            validations: [\n              {\n                type: 'required',\n                message: 'Phone number is required',\n              },\n            ],\n          },\n        ],\n      },\n      'upload-photo': {\n        title: 'Add pet photo',\n        description:\n          'Please select a clear image of one pet looking directly at the camera',\n        hideSubmit: true,\n        fields: [\n          {\n            label: '',\n            name: 'photo',\n            type: 'uploadPhoto',\n            fieldOptions: {\n              imageUploadHandler: {\n                quality: 0.8,\n                outputType: 'image/jpeg',\n                aspectRatio: 1,\n                onChangeImage: onChangeImageHandler,\n              },\n            },\n          },\n        ],\n      },\n      'pet-date': {\n        title: 'When did you find them?',\n        description:\n          'It may take 24 hours for this pet to be reported in our database - check back often!',\n        fields: [\n          {\n            label: 'Found date (mm/dd/yyyy)',\n            name: 'foundDate',\n            type: 'date',\n            validations: [\n              {\n                type: 'required',\n                message: 'Found date is required',\n              },\n            ],\n          },\n        ],\n      },\n      'pet-sex': {\n        title: 'This pet is a',\n        fields: [\n          {\n            label: '',\n            name: 'typeOfPet',\n            type: 'inputButtons',\n            fieldOptions: {\n              inputButtons: {\n                orientation: 'vertical',\n                /** OnChange function */\n                onChange: () => {\n                  return;\n                },\n                options: [\n                  {\n                    text: 'Female',\n                    active: false,\n                    icon: 'crown',\n                    value: 'female',\n                  },\n                  {\n                    text: 'Male',\n                    active: false,\n                    icon: 'bowTie',\n                    value: 'male',\n                  },\n                  {\n                    text: 'Unknown',\n                    active: false,\n                    icon: 'questionCircle',\n                    value: 'unknown',\n                  },\n                ],\n              },\n            },\n          },\n        ],\n      },\n      'pet-microchip': {\n        title: 'What is their Microchip ID?',\n        description: microchipLostFoundDescription,\n        fields: [\n          {\n            label: 'Enter microchip ID (optional)',\n            name: 'microchip',\n            type: 'microchip',\n            validations: [],\n          },\n        ],\n      },\n      'pet-description': {\n        title: 'What are they like?',\n        description: 'Describe their personality, physical traits, etc.',\n        fields: [\n          {\n            label: 'Description (optional)',\n            name: 'description',\n            type: 'textarea',\n            fieldOptions: {\n              textArea: {\n                rows: 5,\n                floatingLabel: true,\n              },\n            },\n            validations: [\n              {\n                type: 'blockProfanity',\n              },\n            ],\n          },\n        ],\n      },\n      'password-alerts': {\n        title: 'Create password',\n        submitLabel,\n        fields: [\n          {\n            label: 'Password',\n            name: 'password',\n            type: 'password',\n            validations: [\n              {\n                type: 'required',\n                message: 'Password is required',\n              },\n            ],\n          },\n          {\n            classes: 'pt-3',\n            label: '',\n            name: 'node',\n            type: 'node',\n            fieldOptions: {\n              node: {\n                options: (\n                  <div className=\"flex flex-col text-left w-full\">\n                    <div className=\"flex flex-row h-[30px] mb-1 items-center space-x-2\">\n                      <Paragraph\n                        styling=\"bold\"\n                        size=\"body4\"\n                        className=\"text-secondaryBase-400\"\n                      >\n                        {notificationsHeader}\n                      </Paragraph>\n                      <LabelChip\n                        text=\"BETA\"\n                        colorShade={200}\n                        colorType=\"info\"\n                      />\n                    </div>\n                    <Paragraph size=\"body5\">\n                      {notificationsDescription}\n                    </Paragraph>\n                  </div>\n                ),\n              },\n            },\n          },\n          {\n            name: 'top divider',\n            label: '',\n            type: 'divider',\n            classes: 'mt-4 mb-1',\n            fieldOptions: {\n              divider: {\n                type: 'lightGrey',\n              },\n            },\n          },\n          {\n            label: 'Text alerts',\n            name: 'textAlerts',\n            type: 'toggle',\n          },\n          {\n            name: 'mid divider',\n            label: '',\n            type: 'divider',\n            classes: 'my-1',\n            fieldOptions: {\n              divider: {\n                type: 'lightGrey',\n              },\n            },\n          },\n          {\n            label: 'Email alerts',\n            name: 'emailAlerts',\n            type: 'toggle',\n          },\n          {\n            name: 'bottom divider',\n            label: '',\n            type: 'divider',\n            classes: 'mt-1',\n            fieldOptions: {\n              divider: {\n                type: 'lightGrey',\n              },\n            },\n          },\n          {\n            label: '',\n            name: 'node-info',\n            type: 'node',\n            classes: 'mt-3 mb-8',\n            fieldOptions: {\n              node: {\n                options: (\n                  <Paragraph\n                    styling=\"italic\"\n                    size=\"overline\"\n                    className=\"text-left\"\n                  >\n                    {notificationsInfo}\n                  </Paragraph>\n                ),\n              },\n            },\n          },\n          {\n            label: '',\n            name: 'facebookMessage',\n            type: 'facebookFormMessage',\n          },\n        ],\n      },\n    },\n  };\n\nexport default CreateAccountFoundDistanceConfiguration;\n","import LabelChip from '@/components/atoms/LabelChip/LabelChip';\nimport Paragraph from '@/components/atoms/Paragraph/Paragraph';\nimport {\n  microchipLostFoundDescription,\n  notificationsDescription,\n  notificationsHeader,\n  notificationsInfo,\n} from '@/lib/constants/constants/forms';\nimport { phonePrivacyDisclosure } from '@/lib/constants/constants/privacy';\nimport SessionStorage from '@/lib/utils/storage/session-storage';\nimport { MultiPageFormConfigurationItem } from './Configuration';\n\n/**\n * The storage for the Add Pet Start Multi-step Form.\n *\n * @constant\n * @type {SessionStorage}\n */\nexport const storage: SessionStorage = new SessionStorage();\n\n/**\n * The submit label for the form.\n *\n * @constant {string}\n */\nexport const submitLabel = 'Submit';\n\n/**\n * Create Account Found Photo Configuration The Configuration for the Create\n * Account Start Multi-step Form .\n *\n * @constant\n */\nconst CreateAccountFoundPhotoConfiguration: MultiPageFormConfigurationItem = {\n  order: [\n    'name',\n    'email',\n    'phone',\n    'pet-date',\n    'pet-sex',\n    'pet-microchip',\n    'pet-description',\n    'password-alerts',\n  ],\n  data: {},\n  storage,\n  content: {\n    name: {\n      title: 'Welcome to Petco Love Lost',\n      description:\n        'Whether you need to report a lost or found pet or want to register your pet in case they go missing later – you’re in the right place.',\n      fields: [\n        {\n          label: 'First Name',\n          name: 'firstName',\n          type: 'text',\n          validations: [\n            {\n              type: 'required',\n              message: 'First Name is required',\n            },\n          ],\n        },\n        {\n          label: 'Last Name',\n          name: 'lastName',\n          type: 'text',\n          validations: [\n            {\n              type: 'required',\n              message: 'Last Name is required',\n            },\n          ],\n        },\n      ],\n    },\n    email: {\n      title: \"What's your email?\",\n      description:\n        'We’ll only use your email to keep in touch about the pet you register.',\n      fields: [\n        {\n          label: 'Email',\n          name: 'email',\n          type: 'email',\n          validations: [\n            {\n              type: 'required',\n              message: 'Email is required',\n            },\n            {\n              type: 'newUser',\n              message: 'Email is already taken',\n            },\n          ],\n        },\n      ],\n    },\n    phone: {\n      title: \"What's your number?\",\n      description: phonePrivacyDisclosure,\n      fields: [\n        {\n          label: 'Phone',\n          name: 'phone',\n          type: 'tel',\n          validations: [\n            {\n              type: 'required',\n              message: 'Phone number is required',\n            },\n          ],\n        },\n      ],\n    },\n    'pet-date': {\n      title: 'When did you find them?',\n      description:\n        'It may take 24 hours for this pet to be reported in our database – check back often!',\n      fields: [\n        {\n          label: 'Found date (mm/dd/yyyy)',\n          name: 'foundDate',\n          type: 'date',\n          validations: [\n            {\n              type: 'required',\n              message: 'Found date is required',\n            },\n          ],\n        },\n      ],\n    },\n    'pet-sex': {\n      title: 'This pet is a',\n      fields: [\n        {\n          label: '',\n          name: 'typeOfPet',\n          type: 'inputButtons',\n          fieldOptions: {\n            inputButtons: {\n              orientation: 'vertical',\n              /** OnChange function */\n              onChange: () => {\n                return;\n              },\n              options: [\n                {\n                  text: 'Female',\n                  active: false,\n                  icon: 'crown',\n                  value: 'female',\n                },\n                {\n                  text: 'Male',\n                  active: false,\n                  icon: 'bowTie',\n                  value: 'male',\n                },\n                {\n                  text: 'Unknown',\n                  active: false,\n                  icon: 'questionCircle',\n                  value: 'unknown',\n                },\n              ],\n            },\n          },\n        },\n      ],\n    },\n    // TODO: LL2-886 - We need the ability to parse his/her instead of their\n    'pet-microchip': {\n      title: 'What is their Microchip ID?',\n      description: microchipLostFoundDescription,\n      fields: [\n        {\n          label: 'Enter microchip ID (optional)',\n          name: 'microchip',\n          type: 'microchip',\n          validations: [],\n        },\n      ],\n    },\n    'pet-description': {\n      title: 'What is {{petName}} like?',\n      description: \"Describe {{petName}}'s personality, physical traits, etc.\",\n      fields: [\n        {\n          label: 'Description (optional)',\n          name: 'description',\n          type: 'textarea',\n          fieldOptions: {\n            textArea: {\n              rows: 5,\n              floatingLabel: true,\n            },\n          },\n          validations: [\n            {\n              type: 'blockProfanity',\n            },\n          ],\n        },\n      ],\n    },\n    'password-alerts': {\n      title: 'Create password',\n      submitLabel,\n      fields: [\n        {\n          label: 'Password',\n          name: 'password',\n          type: 'password',\n          validations: [\n            {\n              type: 'required',\n              message: 'Password is required',\n            },\n          ],\n        },\n        {\n          classes: 'pt-3',\n          label: '',\n          name: 'node',\n          type: 'node',\n          fieldOptions: {\n            node: {\n              options: (\n                <div className=\"flex flex-col text-left w-full\">\n                  <div className=\"flex flex-row h-[30px] mb-1 items-center space-x-2\">\n                    <Paragraph\n                      styling=\"bold\"\n                      size=\"body4\"\n                      className=\"text-secondaryBase-400\"\n                    >\n                      {notificationsHeader}\n                    </Paragraph>\n                    <LabelChip text=\"BETA\" colorShade={200} colorType=\"info\" />\n                  </div>\n                  <Paragraph size=\"body5\">{notificationsDescription}</Paragraph>\n                </div>\n              ),\n            },\n          },\n        },\n        {\n          name: 'top divider',\n          label: '',\n          type: 'divider',\n          classes: 'mt-4 mb-1',\n          fieldOptions: {\n            divider: {\n              type: 'lightGrey',\n            },\n          },\n        },\n        {\n          label: 'Text alerts',\n          name: 'textAlerts',\n          type: 'toggle',\n        },\n        {\n          name: 'mid divider',\n          label: '',\n          type: 'divider',\n          classes: 'my-1',\n          fieldOptions: {\n            divider: {\n              type: 'lightGrey',\n            },\n          },\n        },\n        {\n          label: 'Email alerts',\n          name: 'emailAlerts',\n          type: 'toggle',\n        },\n        {\n          name: 'bottom divider',\n          label: '',\n          type: 'divider',\n          classes: 'mt-1',\n          fieldOptions: {\n            divider: {\n              type: 'lightGrey',\n            },\n          },\n        },\n        {\n          label: '',\n          name: 'node-info',\n          type: 'node',\n          classes: 'mt-3 mb-8',\n          fieldOptions: {\n            node: {\n              options: (\n                <Paragraph\n                  styling=\"italic\"\n                  size=\"overline\"\n                  className=\"text-left\"\n                >\n                  {notificationsInfo}\n                </Paragraph>\n              ),\n            },\n          },\n        },\n        {\n          label: '',\n          name: 'facebookMessage',\n          type: 'facebookFormMessage',\n        },\n      ],\n    },\n  },\n};\n\nexport default CreateAccountFoundPhotoConfiguration;\n","import { phonePrivacyDisclosure } from '@/lib/constants/constants/privacy';\nimport SessionStorage from '@/lib/utils/storage/session-storage';\nimport { MultiPageFormConfigurationItem } from './Configuration';\n\n/**\n * The storage for the Add Pet Start Multi-step Form.\n *\n * @constant\n * @type {SessionStorage}\n */\nexport const storage: SessionStorage = new SessionStorage();\n\n/**\n * The submit label for the form.\n *\n * @constant {string}\n */\nexport const submitLabel = 'Submit';\n\n/**\n * Create Account Found Report Configuration The Configuration for the Create\n * Account Start Multi-step Form .\n *\n * @constant\n */\nconst CreateAccountFoundReportConfiguration: MultiPageFormConfigurationItem = {\n  order: ['name', 'email', 'phone', 'password'],\n  data: {},\n  storage,\n  content: {\n    name: {\n      title: 'Sign up to contact',\n      description:\n        'We just need a little bit more information to help reunite you with your pet.',\n      fields: [\n        {\n          label: 'First Name',\n          name: 'firstName',\n          type: 'text',\n          validations: [\n            {\n              type: 'required',\n              message: 'First Name is required',\n            },\n          ],\n        },\n        {\n          label: 'Last Name',\n          name: 'lastName',\n          type: 'text',\n          validations: [\n            {\n              type: 'required',\n              message: 'Last Name is required',\n            },\n          ],\n        },\n      ],\n    },\n    email: {\n      title: \"What's your email?\",\n      description:\n        \"We'll only use your email to keep in touch with you about your pet.\",\n      fields: [\n        {\n          label: 'Email',\n          name: 'email',\n          type: 'email',\n          validations: [\n            {\n              type: 'required',\n              message: 'Email is required',\n            },\n            {\n              type: 'newUser',\n              message: 'Email is already taken',\n            },\n          ],\n        },\n      ],\n    },\n    phone: {\n      title: \"What's your number?\",\n      description: phonePrivacyDisclosure,\n      fields: [\n        {\n          label: 'Phone',\n          name: 'phone',\n          type: 'tel',\n          validations: [\n            {\n              type: 'required',\n              message: 'Phone number is required',\n            },\n          ],\n        },\n      ],\n    },\n    password: {\n      title: 'Create password',\n      submitLabel,\n      fields: [\n        {\n          label: 'Password',\n          name: 'password',\n          type: 'password',\n          validations: [\n            {\n              type: 'required',\n              message: 'Password is required',\n            },\n          ],\n        },\n      ],\n    },\n  },\n};\n\nexport default CreateAccountFoundReportConfiguration;\n","import LabelChip from '@/components/atoms/LabelChip/LabelChip';\nimport Paragraph from '@/components/atoms/Paragraph/Paragraph';\nimport {\n  microchipLostFoundDescription,\n  notificationsDescription,\n  notificationsHeader,\n  notificationsInfo,\n} from '@/lib/constants/constants/forms';\nimport SessionStorage from '@/lib/utils/storage/session-storage';\nimport { MultiPageFormConfigurationItem } from './Configuration';\n/**\n * The storage for the Add Pet Start Multi-step Form.\n *\n * @constant\n * @type {SessionStorage}\n */\nexport const storage: SessionStorage = new SessionStorage();\n\n/**\n * The submit label for the form.\n *\n * @constant {string}\n */\nexport const submitLabel = 'Submit';\n\n/**\n * Create Account Lost Photo Configuration The Configuration for the Create\n * Account Start Multi-step Form .\n *\n * @constant\n */\nconst CreateAccountLostConfiguration: MultiPageFormConfigurationItem = {\n  order: [\n    'pet-name',\n    'pet-location',\n    'cross-streets',\n    'pet-date',\n    'pet-sex',\n    'pet-microchip',\n    'pet-description',\n    'password-alerts',\n  ],\n  data: {},\n  storage,\n  content: {\n    'pet-name': {\n      title: \"What is your pet's name?\",\n      fields: [\n        {\n          label: 'Pet name',\n          name: 'petName',\n          type: 'text',\n          validations: [\n            {\n              type: 'blockProfanity',\n            },\n            {\n              type: 'required',\n              message: 'Pet name is required',\n            },\n          ],\n        },\n      ],\n    },\n    'pet-location': {\n      title: 'Where did {{petName}} get lost?',\n      description:\n        'Please provide a specific address. We will never share your exact location to the public.',\n      fields: [\n        {\n          label: 'Lost near (street address)',\n          name: 'petLocation',\n          type: 'locationGoogle',\n          fieldOptions: {\n            locationGoogle: {\n              displayStaticMap: true,\n            },\n          },\n          validations: [\n            {\n              type: 'required',\n              message: 'Location is required',\n            },\n          ],\n        },\n      ],\n    },\n    'cross-streets': {\n      title: 'What are the nearest cross streets?',\n      description:\n        'Please provide the nearest cross streets and a landmark if there’s one nearby (e.g. 3rd and Main by the grocery store).',\n      fields: [\n        {\n          label: 'Nearest cross streets, landmark. etc.',\n          name: 'crossStreets',\n          type: 'text',\n          validations: [\n            {\n              type: 'blockProfanity',\n            },\n            {\n              type: 'max',\n              message: 'Cross streets must be at most 60 characters',\n              value: 60,\n            },\n          ],\n        },\n      ],\n    },\n    'pet-date': {\n      title: 'When was {{petName}} last seen?',\n      description:\n        'It may take 24 hours for this pet to be reported in our database - check back often!',\n      fields: [\n        {\n          label: 'Lost date (mm/dd/yyyy)',\n          name: 'lostDate',\n          type: 'date',\n          validations: [\n            {\n              type: 'required',\n              message: 'Lost date is required',\n            },\n          ],\n        },\n      ],\n    },\n    'pet-sex': {\n      title: '{{petName}} is a',\n      fields: [\n        {\n          label: '',\n          name: 'typeOfPet',\n          type: 'inputButtons',\n          fieldOptions: {\n            inputButtons: {\n              orientation: 'vertical',\n              /** OnChange function */\n              onChange: () => {\n                return;\n              },\n              options: [\n                {\n                  text: 'Female',\n                  active: false,\n                  icon: 'crown',\n                  value: 'female',\n                },\n                {\n                  text: 'Male',\n                  active: false,\n                  icon: 'bowTie',\n                  value: 'male',\n                },\n                {\n                  text: 'Unknown',\n                  active: false,\n                  icon: 'questionCircle',\n                  value: 'unknown',\n                },\n              ],\n            },\n          },\n        },\n      ],\n    },\n    'pet-microchip': {\n      title: \"What is {{petName}}'s Microchip ID?\",\n      description: microchipLostFoundDescription,\n      fields: [\n        {\n          label: 'Enter microchip ID (optional)',\n          name: 'microchip',\n          type: 'microchip',\n          validations: [],\n        },\n      ],\n    },\n    'pet-description': {\n      title: 'What is {{petName}} like?',\n      description: \"Describe {{petName}}'s personality, physical traits, etc.\",\n      fields: [\n        {\n          label: 'Description (optional)',\n          name: 'description',\n          type: 'textarea',\n          fieldOptions: {\n            textArea: {\n              rows: 5,\n              floatingLabel: true,\n            },\n          },\n          validations: [\n            {\n              type: 'blockProfanity',\n            },\n          ],\n        },\n      ],\n    },\n    password: {\n      title: 'Create password',\n      submitLabel,\n      fields: [\n        {\n          label: 'Password',\n          name: 'password',\n          type: 'password',\n          validations: [\n            {\n              type: 'required',\n              message: 'Password is required',\n            },\n          ],\n        },\n      ],\n    },\n    'password-alerts': {\n      title: 'Create password',\n      submitLabel,\n      fields: [\n        {\n          label: 'Password',\n          name: 'password',\n          type: 'password',\n          validations: [\n            {\n              type: 'required',\n              message: 'Password is required',\n            },\n          ],\n        },\n        {\n          classes: 'pt-3',\n          label: '',\n          name: 'node',\n          type: 'node',\n          fieldOptions: {\n            node: {\n              options: (\n                <div className=\"flex flex-col text-left w-full\">\n                  <div className=\"flex flex-row h-[30px] mb-1 items-center space-x-2\">\n                    <Paragraph\n                      styling=\"bold\"\n                      size=\"body4\"\n                      className=\"text-secondaryBase-400\"\n                    >\n                      {notificationsHeader}\n                    </Paragraph>\n                    <LabelChip text=\"BETA\" colorShade={200} colorType=\"info\" />\n                  </div>\n                  <Paragraph size=\"body5\">{notificationsDescription}</Paragraph>\n                </div>\n              ),\n            },\n          },\n        },\n        {\n          name: 'top divider',\n          label: '',\n          type: 'divider',\n          classes: 'mt-4 mb-1',\n          fieldOptions: {\n            divider: {\n              type: 'lightGrey',\n            },\n          },\n        },\n        {\n          label: 'Text alerts',\n          name: 'textAlerts',\n          type: 'toggle',\n        },\n        {\n          name: 'mid divider',\n          label: '',\n          type: 'divider',\n          classes: 'my-1',\n          fieldOptions: {\n            divider: {\n              type: 'lightGrey',\n            },\n          },\n        },\n        {\n          label: 'Email alerts',\n          name: 'emailAlerts',\n          type: 'toggle',\n        },\n        {\n          name: 'bottom divider',\n          label: '',\n          type: 'divider',\n          classes: 'mt-1',\n          fieldOptions: {\n            divider: {\n              type: 'lightGrey',\n            },\n          },\n        },\n        {\n          label: '',\n          name: 'node-info',\n          type: 'node',\n          classes: 'mt-3 mb-8',\n          fieldOptions: {\n            node: {\n              options: (\n                <Paragraph\n                  styling=\"italic\"\n                  size=\"overline\"\n                  className=\"text-left\"\n                >\n                  {notificationsInfo}\n                </Paragraph>\n              ),\n            },\n          },\n        },\n        {\n          label: '',\n          name: 'facebookMessage',\n          type: 'facebookFormMessage',\n        },\n      ],\n    },\n  },\n};\n\nexport default CreateAccountLostConfiguration;\n","import LabelChip from '@/components/atoms/LabelChip/LabelChip';\nimport Paragraph from '@/components/atoms/Paragraph/Paragraph';\nimport {\n  microchipLostFoundDescription,\n  notificationsDescription,\n  notificationsHeader,\n  notificationsInfo,\n} from '@/lib/constants/constants/forms';\nimport { phonePrivacyDisclosure } from '@/lib/constants/constants/privacy';\nimport SessionStorage from '@/lib/utils/storage/session-storage';\nimport { MultiPageFormConfigurationItem } from './Configuration';\n\n/**\n * The storage for the I Lost A Pet Multi-step Form.\n *\n * @constant\n * @type {SessionStorage}\n */\nexport const storage: SessionStorage = new SessionStorage();\n\n/**\n * The submit label for the form.\n *\n * @constant {string}\n */\nexport const submitLabel = 'Submit';\n\n/** The handler for the image change button of the Cropper */\n/**\n * This function single purpose is to overwrite the default behavior of this\n * action which is going to the previous step of the form. We want this to be\n * handled by the ImageUploadHandlerGroup which will bring back the\n * ImageUploader.\n */\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport const onChangeImageHandler = () => {};\n\n/**\n * Create Account Lost Distance Configuration The Configuration for the Create\n * Account Start Multi-step Form .\n *\n * @constant\n */\nconst CreateAccountLostDistanceConfiguration: MultiPageFormConfigurationItem = {\n  order: [\n    'name',\n    'email',\n    'phone',\n    'upload-photo',\n    'pet-name',\n    'pet-sex',\n    'pet-microchip',\n    'pet-description',\n    'password-alerts',\n  ],\n  data: {},\n  storage,\n  content: {\n    name: {\n      title: 'Welcome to Petco Love Lost',\n      description:\n        'Whether you need to report a lost or found pet or want to register your pet in case they go missing later – you’re in the right place.',\n      fields: [\n        {\n          label: 'First Name',\n          name: 'firstName',\n          type: 'text',\n          validations: [\n            {\n              type: 'required',\n              message: 'First Name is required',\n            },\n          ],\n        },\n        {\n          label: 'Last Name',\n          name: 'lastName',\n          type: 'text',\n          validations: [\n            {\n              type: 'required',\n              message: 'Last Name is required',\n            },\n          ],\n        },\n      ],\n    },\n    email: {\n      title: \"What's your email?\",\n      description:\n        'We’ll only use your email to keep in touch about the pet you register.',\n      fields: [\n        {\n          label: 'Email',\n          name: 'email',\n          type: 'email',\n          validations: [\n            {\n              type: 'required',\n              message: 'Email is required',\n            },\n            {\n              type: 'newUser',\n              message: 'Email is already taken',\n            },\n          ],\n        },\n      ],\n    },\n    phone: {\n      title: \"What's your number?\",\n      description: phonePrivacyDisclosure,\n      fields: [\n        {\n          label: 'Phone',\n          name: 'phone',\n          type: 'tel',\n          validations: [\n            {\n              type: 'required',\n              message: 'Phone number is required',\n            },\n          ],\n        },\n      ],\n    },\n    'upload-photo': {\n      title: 'Add pet photo',\n      description:\n        'Please select a clear image of one pet looking directly at the camera',\n      hideSubmit: true,\n      fields: [\n        {\n          label: '',\n          name: 'photo',\n          type: 'uploadPhoto',\n          fieldOptions: {\n            imageUploadHandler: {\n              quality: 0.8,\n              outputType: 'image/jpeg',\n              aspectRatio: 1,\n              onChangeImage: onChangeImageHandler,\n            },\n          },\n        },\n      ],\n    },\n    'pet-name': {\n      title: \"What is your pet's name?\",\n      fields: [\n        {\n          label: 'Pet name',\n          name: 'petName',\n          type: 'text',\n          validations: [\n            {\n              type: 'blockProfanity',\n            },\n            {\n              type: 'required',\n              message: 'Pet name is required',\n            },\n          ],\n        },\n      ],\n    },\n    'pet-sex': {\n      title: '{{petName}} is a',\n      fields: [\n        {\n          label: '',\n          name: 'typeOfPet',\n          type: 'inputButtons',\n          fieldOptions: {\n            inputButtons: {\n              orientation: 'vertical',\n              /** OnChange function */\n              onChange: () => {\n                return;\n              },\n              options: [\n                {\n                  text: 'Female',\n                  active: false,\n                  icon: 'crown',\n                  value: 'female',\n                },\n                {\n                  text: 'Male',\n                  active: false,\n                  icon: 'bowTie',\n                  value: 'male',\n                },\n                {\n                  text: 'Unknown',\n                  active: false,\n                  icon: 'questionCircle',\n                  value: 'unknown',\n                },\n              ],\n            },\n          },\n        },\n      ],\n    },\n    'pet-microchip': {\n      title: \"What is {{petName}}'s Microchip ID?\",\n      description: microchipLostFoundDescription,\n      fields: [\n        {\n          label: 'Enter microchip ID (optional)',\n          name: 'microchip',\n          type: 'microchip',\n          validations: [],\n        },\n      ],\n    },\n    'pet-description': {\n      title: 'What is {{petName}} like?',\n      description: \"Describe {{petName}}'s personality, physical traits, etc.\",\n      fields: [\n        {\n          label: 'Description (optional)',\n          name: 'description',\n          type: 'textarea',\n          fieldOptions: {\n            textArea: {\n              rows: 5,\n              floatingLabel: true,\n            },\n          },\n          validations: [\n            {\n              type: 'blockProfanity',\n            },\n          ],\n        },\n      ],\n    },\n    'password-alerts': {\n      title: 'Create password',\n      submitLabel,\n      fields: [\n        {\n          label: 'Password',\n          name: 'password',\n          type: 'password',\n          validations: [\n            {\n              type: 'required',\n              message: 'Password is required',\n            },\n          ],\n        },\n        {\n          classes: 'pt-3',\n          label: '',\n          name: 'node',\n          type: 'node',\n          fieldOptions: {\n            node: {\n              options: (\n                <div className=\"flex flex-col text-left w-full\">\n                  <div className=\"flex flex-row h-[30px] mb-1 items-center space-x-2\">\n                    <Paragraph\n                      styling=\"bold\"\n                      size=\"body4\"\n                      className=\"text-secondaryBase-400\"\n                    >\n                      {notificationsHeader}\n                    </Paragraph>\n                    <LabelChip text=\"BETA\" colorShade={200} colorType=\"info\" />\n                  </div>\n                  <Paragraph size=\"body5\">{notificationsDescription}</Paragraph>\n                </div>\n              ),\n            },\n          },\n        },\n        {\n          name: 'top divider',\n          label: '',\n          type: 'divider',\n          classes: 'mt-4 mb-1',\n          fieldOptions: {\n            divider: {\n              type: 'lightGrey',\n            },\n          },\n        },\n        {\n          label: 'Text alerts',\n          name: 'textAlerts',\n          type: 'toggle',\n        },\n        {\n          name: 'mid divider',\n          label: '',\n          type: 'divider',\n          classes: 'my-1',\n          fieldOptions: {\n            divider: {\n              type: 'lightGrey',\n            },\n          },\n        },\n        {\n          label: 'Email alerts',\n          name: 'emailAlerts',\n          type: 'toggle',\n        },\n        {\n          name: 'bottom divider',\n          label: '',\n          type: 'divider',\n          classes: 'mt-1',\n          fieldOptions: {\n            divider: {\n              type: 'lightGrey',\n            },\n          },\n        },\n        {\n          label: '',\n          name: 'node-info',\n          type: 'node',\n          classes: 'mt-3 mb-8',\n          fieldOptions: {\n            node: {\n              options: (\n                <Paragraph\n                  styling=\"italic\"\n                  size=\"overline\"\n                  className=\"text-left\"\n                >\n                  {notificationsInfo}\n                </Paragraph>\n              ),\n            },\n          },\n        },\n        {\n          label: '',\n          name: 'facebookMessage',\n          type: 'facebookFormMessage',\n        },\n      ],\n    },\n  },\n};\n\nexport default CreateAccountLostDistanceConfiguration;\n","import LabelChip from '@/components/atoms/LabelChip/LabelChip';\nimport Paragraph from '@/components/atoms/Paragraph/Paragraph';\nimport {\n  microchipLostFoundDescription,\n  notificationsDescription,\n  notificationsHeader,\n  notificationsInfo,\n} from '@/lib/constants/constants/forms';\nimport { phonePrivacyDisclosure } from '@/lib/constants/constants/privacy';\nimport SessionStorage from '@/lib/utils/storage/session-storage';\nimport { MultiPageFormConfigurationItem } from './Configuration';\n\n/**\n * The storage for the Add Pet Start Multi-step Form.\n *\n * @constant\n * @type {SessionStorage}\n */\nexport const storage: SessionStorage = new SessionStorage();\n\n/**\n * The submit label for the form.\n *\n * @constant {string}\n */\nexport const submitLabel = 'Submit';\n\n/**\n * Create Account Lost Photo Configuration The Configuration for the Create\n * Account Start Multi-step Form .\n *\n * @constant\n */\nconst CreateAccountLostPhotoConfiguration: MultiPageFormConfigurationItem = {\n  order: [\n    'name',\n    'email',\n    'phone',\n    'pet-name',\n    'pet-sex',\n    'pet-microchip',\n    'pet-description',\n    'password-alerts',\n  ],\n  data: {},\n  storage,\n  content: {\n    name: {\n      title: 'Welcome to Petco Love Lost',\n      description:\n        'Whether you need to report a lost or found pet or want to register your pet in case they go missing later – you’re in the right place.',\n      fields: [\n        {\n          label: 'First Name',\n          name: 'firstName',\n          type: 'text',\n          validations: [\n            {\n              type: 'required',\n              message: 'First Name is required',\n            },\n          ],\n        },\n        {\n          label: 'Last Name',\n          name: 'lastName',\n          type: 'text',\n          validations: [\n            {\n              type: 'required',\n              message: 'Last Name is required',\n            },\n          ],\n        },\n      ],\n    },\n    email: {\n      title: \"What's your email?\",\n      description:\n        'We’ll only use your email to keep in touch about the pet you register.',\n      fields: [\n        {\n          label: 'Email',\n          name: 'email',\n          type: 'email',\n          validations: [\n            {\n              type: 'required',\n              message: 'Email is required',\n            },\n            {\n              type: 'newUser',\n              message: 'Email is already taken',\n            },\n          ],\n        },\n      ],\n    },\n    phone: {\n      title: \"What's your number?\",\n      description: phonePrivacyDisclosure,\n      fields: [\n        {\n          label: 'Phone',\n          name: 'phone',\n          type: 'tel',\n          validations: [\n            {\n              type: 'required',\n              message: 'Phone number is required',\n            },\n          ],\n        },\n      ],\n    },\n    'pet-name': {\n      title: \"What is your pet's name?\",\n      fields: [\n        {\n          label: 'Pet name',\n          name: 'petName',\n          type: 'text',\n          validations: [\n            {\n              type: 'blockProfanity',\n            },\n            {\n              type: 'required',\n              message: 'Pet name is required',\n            },\n          ],\n        },\n      ],\n    },\n    'pet-sex': {\n      title: '{{petName}} is a',\n      fields: [\n        {\n          label: '',\n          name: 'typeOfPet',\n          type: 'inputButtons',\n          fieldOptions: {\n            inputButtons: {\n              orientation: 'vertical',\n              /** OnChange function */\n              onChange: () => {\n                return;\n              },\n              options: [\n                {\n                  text: 'Female',\n                  active: false,\n                  icon: 'crown',\n                  value: 'female',\n                },\n                {\n                  text: 'Male',\n                  active: false,\n                  icon: 'bowTie',\n                  value: 'male',\n                },\n                {\n                  text: 'Unknown',\n                  active: false,\n                  icon: 'questionCircle',\n                  value: 'unknown',\n                },\n              ],\n            },\n          },\n        },\n      ],\n    },\n    'pet-microchip': {\n      title: \"What is {{petName}}'s Microchip ID?\",\n      description: microchipLostFoundDescription,\n      fields: [\n        {\n          label: 'Enter microchip ID (optional)',\n          name: 'microchip',\n          type: 'microchip',\n          validations: [],\n        },\n      ],\n    },\n    'pet-description': {\n      title: 'What is {{petName}} like?',\n      description: \"Describe {{petName}}'s personality, physical traits, etc.\",\n      fields: [\n        {\n          label: 'Description (optional)',\n          name: 'description',\n          type: 'textarea',\n          fieldOptions: {\n            textArea: {\n              rows: 5,\n              floatingLabel: true,\n            },\n          },\n          validations: [\n            {\n              type: 'blockProfanity',\n            },\n          ],\n        },\n      ],\n    },\n    'password-alerts': {\n      title: 'Create password',\n      submitLabel,\n      fields: [\n        {\n          label: 'Password',\n          name: 'password',\n          type: 'password',\n          validations: [\n            {\n              type: 'required',\n              message: 'Password is required',\n            },\n          ],\n        },\n        {\n          classes: 'pt-3',\n          label: '',\n          name: 'node',\n          type: 'node',\n          fieldOptions: {\n            node: {\n              options: (\n                <div className=\"flex flex-col text-left w-full\">\n                  <div className=\"flex flex-row h-[30px] mb-1 items-center space-x-2\">\n                    <Paragraph\n                      styling=\"bold\"\n                      size=\"body4\"\n                      className=\"text-secondaryBase-400\"\n                    >\n                      {notificationsHeader}\n                    </Paragraph>\n                    <LabelChip text=\"BETA\" colorShade={200} colorType=\"info\" />\n                  </div>\n                  <Paragraph size=\"body5\">{notificationsDescription}</Paragraph>\n                </div>\n              ),\n            },\n          },\n        },\n        {\n          name: 'top divider',\n          label: '',\n          type: 'divider',\n          classes: 'mt-4 mb-1',\n          fieldOptions: {\n            divider: {\n              type: 'lightGrey',\n            },\n          },\n        },\n        {\n          label: 'Text alerts',\n          name: 'textAlerts',\n          type: 'toggle',\n        },\n        {\n          name: 'mid divider',\n          label: '',\n          type: 'divider',\n          classes: 'my-1',\n          fieldOptions: {\n            divider: {\n              type: 'lightGrey',\n            },\n          },\n        },\n        {\n          label: 'Email alerts',\n          name: 'emailAlerts',\n          type: 'toggle',\n        },\n        {\n          name: 'bottom divider',\n          label: '',\n          type: 'divider',\n          classes: 'mt-1',\n          fieldOptions: {\n            divider: {\n              type: 'lightGrey',\n            },\n          },\n        },\n        {\n          label: '',\n          name: 'node-info',\n          type: 'node',\n          classes: 'mt-3 mb-8',\n          fieldOptions: {\n            node: {\n              options: (\n                <Paragraph\n                  styling=\"italic\"\n                  size=\"overline\"\n                  className=\"text-left\"\n                >\n                  {notificationsInfo}\n                </Paragraph>\n              ),\n            },\n          },\n        },\n        {\n          label: '',\n          name: 'facebookMessage',\n          type: 'facebookFormMessage',\n        },\n      ],\n    },\n  },\n};\n\nexport default CreateAccountLostPhotoConfiguration;\n","import { phonePrivacyDisclosure } from '@/lib/constants/constants/privacy';\nimport SessionStorage from '@/lib/utils/storage/session-storage';\nimport { MultiPageFormConfigurationItem } from './Configuration';\n\n/**\n * The storage for the Add Pet Start Multi-step Form.\n *\n * @constant\n * @type {SessionStorage}\n */\nexport const storage: SessionStorage = new SessionStorage();\n\n/**\n * The submit label for the form.\n *\n * @constant {string}\n */\nexport const submitLabel = 'Submit';\n\n/**\n * Create Account Lost Report Configuration The Configuration for the Create\n * Account Start Multi-step Form .\n *\n * @constant\n */\nconst CreateAccountLostReportConfiguration: MultiPageFormConfigurationItem = {\n  order: ['name', 'email', 'phone', 'password'],\n  data: {},\n  storage,\n  content: {\n    name: {\n      title: 'Sign up to contact',\n      description:\n        'We just need a little bit more information to help reunite you with your pet.',\n      fields: [\n        {\n          label: 'First Name',\n          name: 'firstName',\n          type: 'text',\n          validations: [\n            {\n              type: 'required',\n              message: 'First Name is required',\n            },\n          ],\n        },\n        {\n          label: 'Last Name',\n          name: 'lastName',\n          type: 'text',\n          validations: [\n            {\n              type: 'required',\n              message: 'Last Name is required',\n            },\n          ],\n        },\n      ],\n    },\n    email: {\n      title: \"What's your email?\",\n      description:\n        \"We'll only use your email to keep in touch with you about your pet.\",\n      fields: [\n        {\n          label: 'Email',\n          name: 'email',\n          type: 'email',\n          validations: [\n            {\n              type: 'required',\n              message: 'Email is required',\n            },\n            {\n              type: 'newUser',\n              message: 'Email is already taken',\n            },\n          ],\n        },\n      ],\n    },\n    phone: {\n      title: \"What's your number?\",\n      description: phonePrivacyDisclosure,\n      fields: [\n        {\n          label: 'Phone',\n          name: 'phone',\n          type: 'tel',\n          validations: [\n            {\n              type: 'required',\n              message: 'Phone number is required',\n            },\n          ],\n        },\n      ],\n    },\n    password: {\n      title: 'Create password',\n      submitLabel,\n      fields: [\n        {\n          label: 'Password',\n          name: 'password',\n          type: 'password',\n          validations: [\n            {\n              type: 'required',\n              message: 'Password is required',\n            },\n          ],\n        },\n      ],\n    },\n  },\n};\n\nexport default CreateAccountLostReportConfiguration;\n","import LabelChip from '@/components/atoms/LabelChip/LabelChip';\nimport Paragraph from '@/components/atoms/Paragraph/Paragraph';\nimport {\n  microchipSafeDescription,\n  notificationsDescription,\n  notificationsHeader,\n  notificationsInfo,\n} from '@/lib/constants/constants/forms';\nimport SessionStorage from '@/lib/utils/storage/session-storage';\nimport { MultiPageFormConfigurationItem } from './Configuration';\n\n/**\n * The storage for the Create Account Found Multi-step Form.\n *\n * @constant\n * @type {SessionStorage}\n */\nexport const storage: SessionStorage = new SessionStorage();\n\n/**\n * The submit label for the form.\n *\n * @constant {string}\n */\nexport const submitLabel = 'Submit';\n\n/**\n * Create Account Safe Configuration The Configuration for the Create Account\n * Start Multi-step Form .\n *\n * @constant\n */\nconst CreateAccountSafeConfiguration: MultiPageFormConfigurationItem = {\n  order: [\n    'pet-name',\n    'pet-location',\n    'pet-sex',\n    'pet-microchip',\n    'pet-description',\n    'password-alerts',\n  ],\n  data: {},\n  storage,\n  content: {\n    'pet-name': {\n      title: \"What is your pet's name?\",\n      fields: [\n        {\n          label: 'Pet name',\n          name: 'petName',\n          type: 'text',\n          validations: [\n            {\n              type: 'blockProfanity',\n            },\n            {\n              type: 'required',\n              message: 'Pet name is required',\n            },\n          ],\n        },\n      ],\n    },\n    'pet-location': {\n      title: 'Where do you and {{petName}} live?',\n      description:\n        'Please provide a specific street address. We will never share your exact location.',\n      fields: [\n        {\n          label: 'Street address',\n          name: 'petLocation',\n          type: 'locationGoogle',\n          fieldOptions: {\n            locationGoogle: {\n              requiredAddressComponents: ['streetAddress'],\n            },\n          },\n          validations: [\n            {\n              type: 'required',\n              message: 'Location is required',\n            },\n          ],\n        },\n      ],\n    },\n    'pet-sex': {\n      title: '{{petName}} is a',\n      fields: [\n        {\n          label: '',\n          name: 'typeOfPet',\n          type: 'inputButtons',\n          fieldOptions: {\n            inputButtons: {\n              orientation: 'vertical',\n              /** OnChange function */\n              onChange: () => {\n                return;\n              },\n              options: [\n                {\n                  text: 'Female',\n                  active: false,\n                  icon: 'crown',\n                  value: 'female',\n                },\n                {\n                  text: 'Male',\n                  active: false,\n                  icon: 'bowTie',\n                  value: 'male',\n                },\n                {\n                  text: 'Unknown',\n                  active: false,\n                  icon: 'questionCircle',\n                  value: 'unknown',\n                },\n              ],\n            },\n          },\n        },\n      ],\n    },\n    'pet-microchip': {\n      title: \"What is {{petName}}'s Microchip ID?\",\n      description: microchipSafeDescription,\n      fields: [\n        {\n          label: 'Enter microchip ID (optional)',\n          name: 'microchip',\n          type: 'microchip',\n          validations: [],\n        },\n      ],\n    },\n    'pet-description': {\n      title: 'What is {{petName}} like?',\n      description: \"Describe {{petName}}'s personality, physical traits, etc.\",\n      fields: [\n        {\n          label: 'Description (optional)',\n          name: 'description',\n          type: 'textarea',\n          fieldOptions: {\n            textArea: {\n              rows: 5,\n              floatingLabel: true,\n            },\n          },\n          validations: [\n            {\n              type: 'blockProfanity',\n            },\n          ],\n        },\n      ],\n    },\n    'password-alerts': {\n      title: 'Create password',\n      submitLabel,\n      fields: [\n        {\n          label: 'Password',\n          name: 'password',\n          type: 'password',\n          validations: [\n            {\n              type: 'required',\n              message: 'Password is required',\n            },\n          ],\n        },\n        {\n          classes: 'pt-3',\n          label: '',\n          name: 'node',\n          type: 'node',\n          fieldOptions: {\n            node: {\n              options: (\n                <div className=\"flex flex-col text-left w-full\">\n                  <div className=\"flex flex-row h-[30px] mb-1 items-center space-x-2\">\n                    <Paragraph styling=\"bold\" size=\"body4\">\n                      {notificationsHeader}\n                    </Paragraph>\n                    <LabelChip text=\"BETA\" colorShade={200} colorType=\"info\" />\n                  </div>\n                  <Paragraph size=\"body5\">{notificationsDescription}</Paragraph>\n                </div>\n              ),\n            },\n          },\n        },\n        {\n          name: 'top divider',\n          label: '',\n          type: 'divider',\n          classes: 'mt-4 mb-1',\n          fieldOptions: {\n            divider: {\n              type: 'lightGrey',\n            },\n          },\n        },\n        {\n          label: 'Text alerts',\n          name: 'textAlerts',\n          type: 'toggle',\n        },\n        {\n          name: 'mid divider',\n          label: '',\n          type: 'divider',\n          classes: 'my-1',\n          fieldOptions: {\n            divider: {\n              type: 'lightGrey',\n            },\n          },\n        },\n        {\n          label: 'Email alerts',\n          name: 'emailAlerts',\n          type: 'toggle',\n        },\n        {\n          name: 'bottom divider',\n          label: '',\n          type: 'divider',\n          classes: 'mt-1',\n          fieldOptions: {\n            divider: {\n              type: 'lightGrey',\n            },\n          },\n        },\n        {\n          label: '',\n          name: 'node-info',\n          type: 'node',\n          classes: 'mt-3 mb-8',\n          fieldOptions: {\n            node: {\n              options: (\n                <Paragraph\n                  styling=\"italic\"\n                  size=\"overline\"\n                  className=\"text-left\"\n                >\n                  {notificationsInfo}\n                </Paragraph>\n              ),\n            },\n          },\n        },\n      ],\n    },\n  },\n};\n\nexport default CreateAccountSafeConfiguration;\n","import { IImageTilesFormField } from '@/components/organisms/FormBuilder/FieldPropTypes';\nimport { IImageUploadHandler } from '@/components/organisms/ImageUploadHandler/ImageUploadHandler';\nimport { phonePrivacyDisclosure } from '@/lib/constants/constants/privacy';\nimport { Getter } from '@/lib/utils/helpers/maybeCallFunctionWithParams/maybeCallFunctionWithParams';\nimport appendAttributeIfExists from '@/lib/utils/helpers/ObjectsHelpers/AppendAttributeIfExists';\nimport generateImageUrl from '@/lib/utils/helpers/photoHelpers/generateImageUrl';\nimport SessionStorage from '@/lib/utils/storage/session-storage';\nimport { SpeciesTypes } from '@petcolove/lost--client--api-sdk/dist/concrete/sdks/constants/types';\nimport { IPetPhotoRank } from '@petcolove/lost--client--api-sdk/dist/concrete/sdks/services/users/pets/dto';\nimport {\n  MultiPageFormConfigurationData,\n  MultiPageFormConfigurationItem,\n} from './Configuration';\n\n/**\n * Interface for the form data\n *\n * @interface\n */\nexport interface ICreateAccountStartFormData\n  extends MultiPageFormConfigurationData {\n  /** The user email */\n  email: string;\n  /** The user first name */\n  firstName: string;\n  /** The user last name */\n  lastName: string;\n  /** The user phone number */\n  phone: string;\n  /** The user photo */\n  photo: {\n    /** The image object Key */\n    objectKey: string;\n    /** The inferred species */\n    species: string;\n  };\n  /** The photos object */\n  photos: IPetPhotoRank;\n  /** The pet type */\n  typeOfPet: string;\n}\n\n/**\n * The storage for the Add Pet Start Multi-step Form.\n *\n * @constant\n * @type {SessionStorage}\n */\nexport const storage: SessionStorage = new SessionStorage();\n\n/** The handler for the image change button of the Cropper */\n/**\n * This function single purpose is to overwrite the default behavior of this\n * action which is going to the previous step of the form. We want this to be\n * handled by the ImageUploadHandlerGroup which will bring back the\n * ImageUploader.\n */\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport const onChangeImageHandler = () => {};\n\n/**\n * A default value for the Image Tiles field props in case the form data does\n * not have a photo.\n */\nexport const defaultImageTilesProps = {\n  species: 'Dog',\n};\n\n/**\n * The callback to get the Image Tiles field props\n *\n * @param {object} formData The form data\n * @returns {Partial<IImageTilesFormField>} The field props\n */\nexport const getImageTilesProps: Getter<\n  IImageTilesFormField,\n  MultiPageFormConfigurationData\n> = (formData: MultiPageFormConfigurationData): IImageTilesFormField => {\n  /**\n   * @property {object} photo The photo object\n   * @property {object} photos The photos object\n   */\n  const { photo, photos } = formData as ICreateAccountStartFormData;\n  /**\n   * @property {string} objectKey The object key\n   * @property {string} species The species\n   */\n  const { objectKey, species } = photo ?? defaultImageTilesProps;\n  /**\n   * @property {object} photo_2 The photo 2\n   * @property {object} photo_3 The photo 3\n   * @property {object} photo_4 The photo 4\n   */\n  const { photo_1, photo_2, photo_3, photo_4 } = photos ?? {};\n  /**\n   * The ranked images\n   *\n   * @constant {object} images\n   */\n  const images = {\n    // Use object key from upload photo step to populate main photo\n    photo_1: objectKey,\n    // If main photo has been updated, use photo_1 from photos object\n    ...appendAttributeIfExists('photo_1', photo_1),\n    ...appendAttributeIfExists('photo_2', photo_2),\n    ...appendAttributeIfExists('photo_3', photo_3),\n    ...appendAttributeIfExists('photo_4', photo_4),\n  };\n  return {\n    images: images,\n    petSpecies: species.toLowerCase() as SpeciesTypes,\n    showCounter: false,\n  };\n};\n\n/**\n * The callback to get the Image Tiles field props\n *\n * @param {object} formData The form data\n * @returns {Partial<IImageUploadHandler>} The field props\n */\nexport const getImageUploadHandlerProps: Getter<\n  IImageUploadHandler,\n  MultiPageFormConfigurationData\n> = (formData: MultiPageFormConfigurationData): IImageUploadHandler => {\n  /** @property {object} photo The photo object */\n  const { photo } = formData as ICreateAccountStartFormData;\n\n  /**\n   * @property {string} objectKey The object key\n   * @property {string} species The species\n   */\n  const { objectKey } = photo ?? {};\n  const uploadedImage = objectKey ? generateImageUrl(objectKey) : objectKey;\n\n  return {\n    quality: 0.8,\n    outputType: 'image/jpeg',\n    aspectRatio: 1,\n    onChangeImage: onChangeImageHandler,\n    ...appendAttributeIfExists('uploadedImage', uploadedImage),\n  };\n};\n\n/**\n * Create Account Start Configuration The Configuration for the Create Account\n * Start Multi-step Form .\n *\n * @constant\n */\nconst CreateAccountStartConfiguration: MultiPageFormConfigurationItem = {\n  order: [\n    'name',\n    'email',\n    'phone',\n    'upload-photo',\n    'upload-more-photos',\n    'pet-type',\n  ],\n  data: {},\n  storage,\n  retainDataOnSubmit: true,\n  content: {\n    name: {\n      title: 'Welcome to Petco Love Lost',\n      description:\n        'Whether you need to report a lost or found pet or want to register your pet in case they go missing later – you’re in the right place.',\n      fields: [\n        {\n          label: 'First Name',\n          name: 'firstName',\n          type: 'text',\n          validations: [\n            {\n              type: 'required',\n              message: 'First Name is required',\n            },\n          ],\n        },\n        {\n          label: 'Last Name',\n          name: 'lastName',\n          type: 'text',\n          validations: [\n            {\n              type: 'required',\n              message: 'Last Name is required',\n            },\n          ],\n        },\n      ],\n    },\n    email: {\n      title: \"What's your email?\",\n      description:\n        'We’ll only use your email to keep in touch about the pet you register.',\n      fields: [\n        {\n          label: 'Email',\n          name: 'email',\n          type: 'email',\n          validations: [\n            {\n              type: 'required',\n              message: 'Email is required',\n            },\n            {\n              type: 'newUser',\n              message: 'Email is already taken',\n            },\n          ],\n        },\n      ],\n    },\n    phone: {\n      title: \"What's your number?\",\n      description: phonePrivacyDisclosure,\n      fields: [\n        {\n          label: 'Phone',\n          name: 'phone',\n          type: 'tel',\n          validations: [\n            {\n              type: 'required',\n              message: 'Phone number is required',\n            },\n          ],\n        },\n      ],\n    },\n    'upload-photo': {\n      title: 'Add main pet photo',\n      description: (\n        <>\n          Photo search is based on the <b>main photo</b>. Please select a clear\n          image of one pet looking directly at the camera.\n        </>\n      ),\n      hideSubmit: true,\n      fields: [\n        {\n          label: '',\n          name: 'photo',\n          type: 'uploadPhoto',\n          fieldOptions: {\n            imageUploadHandler: getImageUploadHandlerProps,\n          },\n        },\n      ],\n    },\n    'upload-more-photos': {\n      title: 'Add more pet photos',\n      description:\n        'Add up to three more photos to help others identify the pet.',\n      fields: [\n        {\n          label: '',\n          name: 'photos',\n          type: 'imageTiles',\n          fieldOptions: {\n            imageTiles: getImageTilesProps,\n          },\n          validations: [],\n        },\n      ],\n    },\n    'pet-type': {\n      title: 'Nice pic! This pet is:',\n      submitLabel: 'Continue',\n      fields: [\n        {\n          label: '',\n          name: 'typeOfPet',\n          type: 'inputButtons',\n          fieldOptions: {\n            inputButtons: {\n              orientation: 'vertical',\n              /** OnChange function */\n              onChange: () => {\n                return;\n              },\n              options: [\n                {\n                  text: 'Safe at Home',\n                  active: false,\n                  icon: 'home',\n                  value: 'safeAtHome',\n                },\n                {\n                  text: 'Lost',\n                  active: false,\n                  icon: 'signPost',\n                  value: 'lost',\n                },\n                {\n                  text: 'A Pet I Found',\n                  active: false,\n                  icon: 'search',\n                  value: 'found',\n                },\n              ],\n            },\n          },\n          validations: [\n            {\n              type: 'required',\n              message: 'Type is required',\n            },\n          ],\n        },\n      ],\n    },\n  },\n};\n\nexport default CreateAccountStartConfiguration;\n","import LocalStorage from '@/lib/utils/storage/local-storage';\nimport { MultiPageFormConfigurationItem, PageTypes } from './Configuration';\n\n/**\n * The storage for the I Found A Pet Multi-step Form.\n *\n * @constant\n * @type {LocalStorage}\n */\nexport const storage: LocalStorage = new LocalStorage();\n\n/** The handler for the image change button of the Cropper */\n/**\n * This function single purpose is to overwrite the default behavior of this\n * action which is going to the previous step of the form. We want this to be\n * handled by the ImageUploadHandlerGroup which will bring back the\n * ImageUploader.\n */\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport const onChangeImageHandler = () => {};\n\n/**\n * The order of the pages in the I Found A Pet Multi-step Form.\n *\n * @constant {PageTypes[]} foundPages\n */\nexport const foundPages: PageTypes[] = [\n  'location',\n  'cross-streets',\n  'upload-photo',\n];\n\n/**\n * I Found A Pet Configuration The Configuration for the I Found A Pet\n * Multi-step Form.\n *\n * @constant\n */\nconst IFoundAPetConfiguration: MultiPageFormConfigurationItem = {\n  retainDataOnSubmit: true,\n  order: foundPages,\n  data: {},\n  storage,\n  content: {\n    location: {\n      title: 'Where did you find the pet?',\n      description:\n        'Please provide a specific address. We will never share your exact location to the public.',\n      fields: [\n        {\n          label: 'Found near (street address)',\n          name: 'address',\n          type: 'locationGoogle',\n          fieldOptions: {\n            locationGoogle: {\n              displayStaticMap: true,\n            },\n          },\n          validations: [\n            {\n              type: 'required',\n              message: 'Address is required',\n            },\n          ],\n        },\n      ],\n    },\n    'cross-streets': {\n      title: 'What are the nearest cross streets?',\n      description:\n        'Please provide the nearest cross streets and a landmark if there’s one nearby (e.g. 3rd and Main by the grocery store).',\n      fields: [\n        {\n          label: 'Nearest cross streets, landmark. etc.',\n          name: 'crossStreets',\n          type: 'text',\n          validations: [\n            {\n              type: 'blockProfanity',\n            },\n            {\n              type: 'max',\n              message: 'Cross streets must be at most 60 characters',\n              value: 60,\n            },\n          ],\n        },\n      ],\n    },\n    'upload-photo': {\n      title: 'Add pet photo',\n      description:\n        'Photo quality will affect your search results. Please select a clear image of one pet looking directly at the camera.',\n      hideSubmit: true,\n      fields: [\n        {\n          label: 'Photo',\n          name: 'photo',\n          type: 'uploadPhoto',\n          fieldOptions: {\n            imageUploadHandler: {\n              quality: 0.8,\n              outputType: 'image/jpeg',\n              aspectRatio: 1,\n              onChangeImage: onChangeImageHandler,\n            },\n          },\n        },\n        {\n          classes: 'font-petco text-body5 pt-6',\n          label: 'Photo',\n          name: 'node',\n          type: 'node',\n          fieldOptions: {\n            node: {\n              options: (\n                <p>\n                  Don’t have a photo?{' '}\n                  <button\n                    type=\"submit\"\n                    className=\"underline hover:no-underline\"\n                    data-testid=\"search-all\"\n                  >\n                    Search all pets\n                  </button>\n                </p>\n              ),\n            },\n          },\n        },\n      ],\n    },\n  },\n};\n\nexport default IFoundAPetConfiguration;\n","import LocalStorage from '@/lib/utils/storage/local-storage';\nimport { MultiPageFormConfigurationItem, PageTypes } from './Configuration';\n\n/**\n * The storage for the I Lost A Pet Multi-step Form.\n *\n * @constant\n * @type {LocalStorage}\n */\nexport const storage: LocalStorage = new LocalStorage();\n\n/** The handler for the image change button of the Cropper */\n/**\n * This function single purpose is to overwrite the default behavior of this\n * action which is going to the previous step of the form. We want this to be\n * handled by the ImageUploadHandlerGroup which will bring back the\n * ImageUploader.\n */\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport const onChangeImageHandler = () => {};\n\n/**\n * The order of the pages in the I Lost A Pet Multi-step Form.\n *\n * @constant {PageTypes[]} lostPages\n */\nexport const lostPages: PageTypes[] = [\n  'location',\n  'cross-streets',\n  'pet-date',\n  'upload-photo',\n];\n\n/**\n * I Lost A Pet Configuration The Configuration for the I Lost A Pet Multi-step\n * Form.\n *\n * @constant\n */\nconst ILostAPetConfiguration: MultiPageFormConfigurationItem = {\n  retainDataOnSubmit: true,\n  order: lostPages,\n  data: {},\n  storage,\n  content: {\n    location: {\n      title: 'Where did your pet get lost?',\n      description:\n        'Please provide a specific address. We will never share your exact location to the public.',\n      fields: [\n        {\n          label: 'Lost near (street address)',\n          name: 'address',\n          type: 'locationGoogle',\n          fieldOptions: {\n            locationGoogle: {\n              displayStaticMap: true,\n            },\n          },\n          validations: [\n            {\n              type: 'required',\n              message: 'Address is required',\n            },\n          ],\n        },\n      ],\n    },\n    'cross-streets': {\n      title: 'What are the nearest cross streets?',\n      description:\n        'Please provide the nearest cross streets and a landmark if there’s one nearby (e.g. 3rd and Main by the grocery store).',\n      fields: [\n        {\n          label: 'Nearest cross streets, landmark. etc.',\n          name: 'crossStreets',\n          type: 'text',\n          validations: [\n            {\n              type: 'blockProfanity',\n            },\n            {\n              type: 'max',\n              message: 'Cross streets must be at most 60 characters',\n              value: 60,\n            },\n          ],\n        },\n      ],\n    },\n    'pet-date': {\n      title: 'When did your pet go missing?',\n      description:\n        'You will see results from the date you select through today.',\n      fields: [\n        {\n          label: 'Lost date (mm/dd/yyyy)',\n          name: 'lostDate',\n          type: 'date',\n          validations: [\n            {\n              type: 'required',\n              message: 'Missing Date is required',\n            },\n          ],\n        },\n      ],\n    },\n    'upload-photo': {\n      title: 'Add pet photo',\n      description:\n        'Photo quality will affect your search results. Please select a clear image of one pet looking directly at the camera.',\n      hideSubmit: true,\n      fields: [\n        {\n          label: 'Photo',\n          name: 'photo',\n          type: 'uploadPhoto',\n          fieldOptions: {\n            imageUploadHandler: {\n              quality: 0.8,\n              outputType: 'image/jpeg',\n              aspectRatio: 1,\n              onChangeImage: onChangeImageHandler,\n            },\n          },\n        },\n        {\n          classes: 'font-petco text-body5 pt-6',\n          label: 'Photo',\n          name: 'node',\n          type: 'node',\n          fieldOptions: {\n            node: {\n              options: (\n                <p>\n                  Don’t have a photo?{' '}\n                  <button\n                    type=\"submit\"\n                    className=\"underline hover:no-underline\"\n                    data-testid=\"search-all\"\n                  >\n                    Search all pets\n                  </button>\n                </p>\n              ),\n            },\n          },\n        },\n      ],\n    },\n  },\n};\n\nexport default ILostAPetConfiguration;\n","import { microchipSafeDescription } from '@/lib/constants/constants/forms';\nimport SessionStorage from '@/lib/utils/storage/session-storage';\nimport { adopterPetPhotoStorageKey } from '@/pages/onboard-pet/[id]';\nimport { MultiPageFormConfigurationItem } from './Configuration';\n\n/** Interface for the pet photo */\ninterface IOnboardPetPhotoStorage {\n  /** The pet photo */\n  photo?: string;\n  /** The expiration date */\n  expiration: string;\n}\n\n/**\n * The storage for the Onboard Pet Multi-step Form.\n *\n * @constant\n * @type {SessionStorage}\n */\nexport const storage: SessionStorage = new SessionStorage();\n\n/**\n * The submit label for the form.\n *\n * @constant {string}\n */\nexport const submitLabel = 'Add Pet';\n\n/**\n * The handler for the image change button of the Cropper.\n *\n * This function single purpose is to overwrite the default behavior of this\n * action which is going to the previous step of the form. We want this to be\n * handled by the ImageUploadHandlerGroup which will bring back the\n * ImageUploader.\n */\n// eslint-disable-next-line @typescript-eslint/no-empty-function\nconst onChangeImageHandler = () => {};\n\nconst petPhoto = storage.get(\n  adopterPetPhotoStorageKey\n) as IOnboardPetPhotoStorage;\n\n/**\n * The configuration for the Onboard Pet Multi-step Form.\n *\n * @constant\n */\nconst OnboardPetConfiguration: MultiPageFormConfigurationItem = {\n  order: ['upload-photo', 'pet-name', 'pet-sex', 'location', 'pet-microchip'],\n  data: {},\n  storage,\n  content: {\n    'upload-photo': {\n      title: 'Crop photo',\n      description:\n        'Crop the photo around the pet’s face and body for best results. Or you can upload a new photo below.',\n      hideSubmit: true,\n      fields: [\n        {\n          label: '',\n          name: 'photo',\n          type: 'uploadPhoto',\n          fieldOptions: {\n            imageUploadHandler: {\n              quality: 0.8,\n              outputType: 'image/jpeg',\n              aspectRatio: 1,\n              uploadedImage: petPhoto?.photo,\n              onChangeImage: onChangeImageHandler,\n            },\n          },\n        },\n      ],\n    },\n    'pet-name': {\n      title: 'Now let’s confirm or update your pet’s name',\n      fields: [\n        {\n          label: 'Pet name',\n          name: 'petName',\n          type: 'text',\n          validations: [\n            {\n              type: 'blockProfanity',\n            },\n            {\n              type: 'required',\n              message: 'Pet Name is required',\n            },\n          ],\n          fieldOptions: {},\n        },\n      ],\n    },\n    'pet-sex': {\n      title: '{{petName}} is a',\n      fields: [\n        {\n          label: '',\n          name: 'typeOfPet',\n          type: 'inputButtons',\n          classes: 'mb-5',\n          fieldOptions: {\n            inputButtons: {\n              orientation: 'vertical',\n              /** OnChange function */\n              onChange: () => {\n                return;\n              },\n              options: [\n                {\n                  text: 'Female',\n                  active: false,\n                  icon: 'crown',\n                  value: 'female',\n                },\n                {\n                  text: 'Male',\n                  active: false,\n                  icon: 'bowTie',\n                  value: 'male',\n                },\n              ],\n            },\n          },\n          validations: [],\n        },\n      ],\n    },\n    location: {\n      title: 'Where do you and {{petName}} live?',\n      description:\n        'Please provide a specific street address. We will never share your exact location.',\n      fields: [\n        {\n          label: 'Address',\n          name: 'address',\n          type: 'locationGoogle',\n          validations: [\n            {\n              type: 'required',\n              message: 'Address is required',\n            },\n          ],\n        },\n      ],\n    },\n    'pet-microchip': {\n      title: 'Confirm or update your pet’s Microchip ID',\n      description: microchipSafeDescription,\n      submitLabel,\n      fields: [\n        {\n          label: 'Enter microchip ID',\n          name: 'microchip',\n          type: 'microchip',\n          validations: [],\n        },\n      ],\n    },\n  },\n};\n\nexport default OnboardPetConfiguration;\n","import { ILocationDto } from '@/components/molecules/InputPlacesFieldGoogle/InputPlacesFieldGoogle';\nimport { IOnCropFunctionResults } from '@/components/organisms/ImageUploadHandler/ImageUploadHandler';\nimport { InferredSpecies } from '@/lib/constants/types/pets';\nimport { SearchForTextResult } from '@aws-sdk/client-location';\nimport AbstractStorage from './abstract-storage';\nimport CookieSSRStorage from './cookie-ssr-storage';\nimport CookieStorage from './cookie-storage';\nimport LocalStorage from './local-storage';\nimport SessionStorage from './session-storage';\n\n/**\n * The valid type for the form storage response\n *\n * @typedef {string | InferredSpecies | undefined} FormStorageResponse\n */\ntype FormStorageResponse =\n  | string\n  | IOnCropFunctionResults\n  | SearchForTextResult\n  | ILocationDto\n  | undefined;\n\n/**\n * Interface for the FormStorage class constructor data\n *\n * @interface IFormStorageData\n */\ninterface IFormStorageData {\n  /** The form page id */\n  formId: string;\n  /** The storage class to use */\n  storage: LocalStorage | SessionStorage | CookieSSRStorage | CookieStorage;\n}\n\n/**\n * Class to handle form local storage for a multi-step form\n *\n * @class FormStorage\n */\nclass FormStorage {\n  /**\n   * The form id\n   *\n   * @private\n   * @memberof FormStorage\n   * @member {string} formId\n   * @type {string}\n   */\n  private formId: string;\n\n  /**\n   * The local storage instance\n   *\n   * @private\n   * @memberof FormStorage\n   * @member {LocalStorage} storage\n   */\n  private storage: AbstractStorage;\n\n  /**\n   * Create an instance of the Form Local Storage\n   *\n   * @param {string} formId - The form id\n   */\n  constructor({ formId, storage }: IFormStorageData) {\n    this.formId = formId;\n    this.storage = storage;\n  }\n\n  /**\n   * Get key from form local storage\n   *\n   * @template T - Generic type for the return\n   * @param {string} key - The key to get from form local storage\n   * @returns {T} The key value\n   */\n  get<T = FormStorageResponse>(key: string): T | null {\n    const formLocalStorageData = this.storage.get(this.formId);\n    if (formLocalStorageData) {\n      return formLocalStorageData[\n        key as keyof typeof formLocalStorageData\n      ] as T;\n    }\n    return null;\n  }\n}\n\nexport default FormStorage;\n","import dynamic from 'next/dynamic';\n\nimport Head from '@/components/templates/Head/Head';\nimport { getIdTokenSSR } from '@/lib/dataSource/auth/getIdToken';\nimport getLocationLabel from '@/lib/dataSource/location/getLocationLabel';\nimport { readAdopter } from '@/lib/dataSource/lostApi/user/adopters/read';\nimport { tomorrow } from '@/lib/utils/helpers/dateHelpers/dates';\nimport SessionStorage from '@/lib/utils/storage/session-storage';\nimport { GetServerSideProps, GetServerSidePropsContext, NextPage } from 'next';\nimport { ReactElement, ReactNode, useEffect } from 'react';\n\nconst MinimalLayout = dynamic(\n  import('@/components/layouts/MinimalLayout/MinimalLayout')\n);\nconst ActivateAccountTemplate = dynamic(\n  import(\n    '@/components/templates/ActivateAccountTemplate/ActivateAccountTemplate'\n  )\n);\n\n/**\n * IShelterContactInformation\n *\n * @interface\n */\nexport interface IShelterContactInformation {\n  /** The name of the shelter. */\n  name: string;\n  /**\n   * The optional address of the shelter.\n   *\n   * @default ''\n   */\n  address?: string;\n  /**\n   * The optional email of the shelter.\n   *\n   * @default ''\n   */\n  email?: string;\n  /**\n   * The optional phone number of the shelter.\n   *\n   * @default ''\n   */\n  phone?: string;\n}\n\n/** Interface for the pet details */\nexport interface IAdopterPetDetails {\n  /** The pet name */\n  name?: string;\n  /** The microchip string */\n  microchip?: string;\n}\n\n/** Interface for the pet photo */\nexport interface IAdopterPetPhotoStorage {\n  /** The pet photo */\n  photo?: string;\n  /** The expiration date */\n  expiration: string;\n}\n\n/**\n * IActivateAccount\n *\n * @interface\n */\nexport interface IActivateAccount {\n  /** The shelter contact information */\n  shelterContactInformation: IShelterContactInformation;\n  /** The pet details */\n  pet: IAdopterPetDetails;\n  /** The adopter token */\n  token: string;\n  /** The optional pet adoption image */\n  adoptionImage?: string;\n  /** The adopter email */\n  email: string;\n}\n/** The storage used to store the token for later use in the signup form. */\nexport const storage = new SessionStorage();\n/** The storage key where the token will be stored */\nexport const storageKey = 'adopterToken';\n/** The storage key where the pet photo will be stored */\nexport const adopterPetPhotoStorageKey = 'adopterPetPhoto';\n\n/**\n * A page to activate account Page Component\n *\n * @param {IActivateAccount} props - The props\n * @returns {NextPage} Page\n */\nconst ActivateAccount: NextPage<IActivateAccount> = ({\n  shelterContactInformation,\n  pet,\n  adoptionImage,\n  token,\n  email,\n}: IActivateAccount) => {\n  useEffect(() => {\n    storage.set(storageKey, { token, email }, { expires: tomorrow });\n\n    /** Initializes the form id storage with prepopulated data */\n    storage.set(\n      // Importing the formId var will cause a circular reference problem.\n      'activate-account/signup',\n      {\n        petName: pet.name,\n        microchip: pet.microchip,\n      },\n      { expires: tomorrow }\n    );\n\n    /**\n     * Saves the pet photo to be used as a prop by the image uploader/cropper.\n     *\n     * This cannot be added to the form id storage as it uses the processed\n     * image data from S3, no the initial image data.\n     */\n    storage.set(\n      adopterPetPhotoStorageKey,\n      {\n        photo: `${process.env.NEXT_PUBLIC_CDN_BASE_URL}/${adoptionImage}`,\n      },\n      { expires: tomorrow }\n    );\n  });\n\n  return (\n    <section data-testid=\"activate-account\">\n      <Head title=\"Activate Account\" noIndex={true} />\n      <ActivateAccountTemplate\n        shelterContactInformation={{\n          ...shelterContactInformation,\n        }}\n        adoptionImage={adoptionImage}\n      />\n    </section>\n  );\n};\n\n/**\n * Minimal Layout\n *\n * @param {ReactElement} page - Page Content\n * @returns {ReactNode} Page Results\n */\nActivateAccount.getLayout = (page: ReactElement): ReactNode => {\n  return <MinimalLayout>{page}</MinimalLayout>;\n};\n\nexport default ActivateAccount;\n\n/**\n * Get Server Side Props This function is used to populate the form found in the\n * context params of the url path.\n *\n * @param {object} context - The context of the page\n */\nexport const getServerSideProps: GetServerSideProps = async (\n  context: GetServerSidePropsContext\n) => {\n  const idToken = await getIdTokenSSR(context.req, context.res);\n  if (idToken) {\n    return {\n      redirect: {\n        destination: '/dash',\n        permanent: false,\n      },\n    };\n  }\n  const adopterToken = context.params.id;\n  const response = await readAdopter(adopterToken);\n\n  const shelterLabel = getLocationLabel({\n    address: response?.awo?.geolocation?.streetAddress,\n    city: response?.awo?.geolocation?.city,\n    state: response?.awo?.geolocation?.region,\n    zip: response?.awo?.geolocation?.postalCode,\n  });\n\n  return {\n    props: {\n      shelterContactInformation: {\n        name: response?.awo?.name || null,\n        address: response?.awo?.geolocation?.label || shelterLabel || null,\n        email: response?.awo?.email || null,\n        phone: response?.awo?.phoneNumber || null,\n      },\n      pet: {\n        name: response?.pet?.name || null,\n        microchip: response?.pet?.microchipString,\n      },\n      adoptionImage: response.pet.photoUrl,\n      token: adopterToken,\n      email: response.adopter.email,\n    },\n  };\n};\n","import CdnImage from '@/component-library/atoms/CdnImage/CdnImage';\nimport Paragraph from '@/components/atoms/Paragraph/Paragraph';\nimport { useEffect } from 'react';\n\n/**\n * Onboard Pet template props\n *\n * @interface IOnboardPetTemplate\n */\nexport interface IOnboardPetTemplate {\n  /**\n   * The total time in milliseconds for the progress bar to reach 100%\n   *\n   * @memberof IOnboardPetTemplate\n   * @member {number} timeToComplete\n   */\n  timeToComplete: number;\n  /**\n   * Function that will execute when the progress bar reaches 100%.\n   *\n   * @memberof IOnboardPetTemplate\n   * @member {() => void} [onCompleted]\n   */\n  onCompleted?: () => void;\n}\n\n/**\n * The Onboard Pet Template\n *\n * @param {IOnboardPetTemplate} props - The props\n * @returns {React.ReactNode} The component\n */\nconst OnboardPetTemplate = ({\n  timeToComplete,\n  onCompleted,\n}: IOnboardPetTemplate) => {\n  useEffect(() => {\n    const timeout = setTimeout(() => {\n      if (onCompleted) {\n        onCompleted();\n      }\n    }, timeToComplete);\n\n    return () => {\n      clearTimeout(timeout);\n    };\n  }, [onCompleted, timeToComplete]);\n\n  return (\n    <div\n      data-testid=\"onboard-pet-template\"\n      className=\"grid grid-cols-4 sm:grid-cols-6 md:grid-cols-12 gap-x-4 sm:gap-x-6 md:gap-x-8 text-center\"\n    >\n      <div className=\"pt-6 md:pt-20 px-6 sm:px-8 md:px-10 col-span-4 sm:col-start-2 md:col-start-5\">\n        <div className=\"flex w-full flex-col items-center justify-center mt-28\">\n          <div className=\"flex flex-col items-center\">\n            <div className=\"text-center\">\n              <Paragraph\n                size=\"body4\"\n                styling=\"bold\"\n                className=\"text-secondaryBase-400 md:px-4\"\n              >\n                Welcome back to Petco Love Lost!\n                <br />\n                Sign in to register your new pet.\n              </Paragraph>\n            </div>\n\n            <div className=\"w-40 mx-auto mt-10 leading-none\">\n              <CdnImage\n                src={\n                  process.env.NEXT_PUBLIC_CDN_BASE_URL +\n                  '/assets/lost/lost-logo-small.svg'\n                }\n                priority={false}\n                width={246}\n                height={44}\n                layout=\"intrinsic\"\n                alt=\"Petco Love Lost logo\"\n              />\n            </div>\n\n            <div className=\"text-neutral-500 text-xs mt-16 w-16 flex items-baseline\">\n              Redirecting\n              <div className=\"flex flex-row space-x-1 items-end pb-2 ml-1\">\n                <div className=\"rounded-full h-0.5 w-0.5 animate-chat-typing-animation-1 bg-neutral-600\"></div>\n                <div className=\"rounded-full h-0.5 w-0.5 animate-chat-typing-animation-2 bg-neutral-600\"></div>\n                <div className=\"rounded-full h-0.5 w-0.5 animate-chat-typing-animation-3 bg-neutral-600\"></div>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  );\n};\n\nexport default OnboardPetTemplate;\n","import HeadTemplate from '@/components/templates/Head/Head';\nimport OnboardPetTemplate from '@/components/templates/OnboardPetTemplate/OnboardPetTemplate';\nimport { readAdopter } from '@/lib/dataSource/lostApi/user/adopters/read';\nimport getBasePath from '@/lib/utils/getBasePath/getBasePath';\nimport { tomorrow } from '@/lib/utils/helpers/dateHelpers/dates';\nimport SessionStorage from '@/lib/utils/storage/session-storage';\nimport { GetServerSideProps, GetServerSidePropsContext, NextPage } from 'next';\nimport React, { useEffect } from 'react';\n\n/**\n * Interface for the pet details\n *\n * @interface IAdopterPetDetails\n */\nexport interface IAdopterPetDetails {\n  /**\n   * The pet name\n   *\n   * @memberof IAdopterPetDetails\n   * @member {string} [name]\n   */\n  name?: string;\n  /**\n   * The pet microchip string\n   *\n   * @memberof IAdopterPetDetails\n   * @member {string} [microchip]\n   */\n  microchip?: string;\n}\n\n/**\n * IOnboardPet\n *\n * @interface IOnboardPet\n */\nexport interface IOnboardPet {\n  /**\n   * The pet details\n   *\n   * @memberof IOnboardPet\n   * @member {IAdopterPetDetails} pet\n   */\n  pet: IAdopterPetDetails;\n  /**\n   * The adopter token\n   *\n   * @memberof IOnboardPet\n   * @member {string} token\n   */\n  token: string;\n  /**\n   * The optional pet adoption image\n   *\n   * @memberof IOnboardPet\n   * @member {string} [adoptionImage]\n   */\n  adoptionImage?: string;\n  /**\n   * The adopter email\n   *\n   * @memberof IOnboardPet\n   * @member {string} email\n   */\n  email: string;\n}\n\n/** The storage used to store the token for later use in the signup form. */\nconst storage = new SessionStorage();\n\n/** The storage key where the token will be stored */\nexport const adopterTokenStorageKey = 'adopterToken';\n\n/** The storage key where the pet photo will be stored */\nexport const adopterPetPhotoStorageKey = 'adopterPetPhoto';\n\n/**\n * OnboardPetLanding\n *\n * @param {IOnboardPet} props - The props for the component\n * @returns {React.ReactNode} The component\n */\nexport default function OnboardPetLanding({\n  pet,\n  adoptionImage,\n  token,\n  email,\n}: IOnboardPet) {\n  useEffect(() => {\n    storage.set(\n      adopterTokenStorageKey,\n      { token, email },\n      { expires: tomorrow }\n    );\n\n    /** Initializes the form id storage with prepopulated data */\n    storage.set(\n      // Importing the formId var will cause a circular reference problem.\n      'onboard-pet/form',\n      {\n        petName: pet.name,\n        microchip: pet.microchip,\n      },\n      { expires: tomorrow }\n    );\n\n    /**\n     * Saves the pet photo to be used as a prop by the image uploader/cropper.\n     *\n     * This cannot be added to the form id storage as it uses the processed\n     * image data from S3, no the initial image data.\n     */\n    storage.set(\n      adopterPetPhotoStorageKey,\n      {\n        photo: `${process.env.NEXT_PUBLIC_CDN_BASE_URL}/${adoptionImage}`,\n      },\n      { expires: tomorrow }\n    );\n\n    // eslint-disable-next-line react-hooks/exhaustive-deps\n  }, []);\n\n  return (\n    <section data-testid=\"onboard-pet-landing\" className=\"h-screen w-full\">\n      <HeadTemplate title=\"Sign in to register your pet\" noIndex={true} />\n      <OnboardPetTemplate\n        timeToComplete={1500}\n        onCompleted={() => {\n          window.location.href = `${getBasePath()}/api/auth/login/?returnTo=${getBasePath()}/onboard-pet/form`;\n        }}\n      />\n    </section>\n  );\n}\n\n/**\n * @param {GetServerSidePropsContext} context - The context for the page\n * @returns {NextPage} The props for the page\n */\nexport const getServerSideProps: GetServerSideProps = async (\n  context: GetServerSidePropsContext\n) => {\n  const adopterToken = context.params.id;\n  const response = await readAdopter(adopterToken);\n\n  return {\n    props: {\n      pet: {\n        name: response?.pet?.name || null,\n        microchip: response?.pet?.microchipString,\n      },\n      adoptionImage: response.pet.photoUrl,\n      token: adopterToken,\n      email: response.adopter.email,\n    },\n  };\n};\n"],"names":["__webpack_exports__","Z","text","colorShade","colorType","className","param","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsx","div","concat","percentage","classes","hidden","role","aria-valuenow","aria-valuemin","aria-valuemax","style","width","defaultSubmitLabel","submitFunction","submitButtonDisabled","loading","isLoadingForm","originalQueryParams","formTitle","setFormTitle","useState","formDescription","setFormDescription","formOverline","setFormOverline","completed","setCompleted","hideSubmitStepperForm","setHideSubmitStepperForm","router","useRouter","progress","formId","pageId","nextUrl","previousUrl","validProgress","formData","formContent","formOrder","state","renderMode","dispatch","useMultiPageFormContext","title","description","overline","fields","defaults","hideSubmit","hideSubmitForm","submitLabel","useMemo","formStorage","useRef","useEffect","storage","forms","current","FormStorage","formDataSwap","HandlebarStringReplace","Promise","all","__webpack_require__","e","then","bind","default","stringReplacer","compiledTitle","replace","compiledDescription","compiledOverline","formValidationSchema","formValidationBuilder","register","handleSubmit","reset","control","formState","errors","isValid","setError","useForm","resolver","yupResolver","mode","submitForm","type","data","backButtonHandler","push","pathname","search","split","nextUrlParams","URLSearchParams","Object","keys","length","entries","forEach","key","value","set","String","query","fromEntries","undefined","shouldClearFormData","retainDataOnSubmit","clearAllFormRelatedData","formIndexUrl","urlSeparator","showSkipOption","every","field","validations","jsxs","section","ProgressBar","PageWrapper","Loading","Paragraph","size","font","Heading","form","onSubmit","map","FieldBuilder","name","forwardHandler","backHandler","setHideSubmit","Button","variant","color","disabled","onClick","notificationsHeader","notificationsDescription","notificationsInfo","microchipLostFoundDescription","microchipSafeDescription","phonePrivacyDisclosure","locationPrivacyDisclosure","useFeatureOrder","featureFlags","featureOrders","intersection","filter","includes","element","loadAllFormData","config","InitConfiguration","loadedData","get","multiPageFormInitialState","getNextPage","order","prependPath","index","indexOf","getPreviousPage","getProgressPercentage","progressBarPercent","currentPage","MultiPageFormContext","createContext","storeFormData","storageAdapter","expires","tomorrow","clearFormData","delete","storeFormProgress","getFormProgress","checkProgressOrder","currentIndex","progressIndex","MultiPageFormReducer","action","pastData","newData","useInitData","formContext","initialState","withFormContentValues","rest","maybeCallFunctionWithParams","MultiPageFormProvider","children","useReducer","content","featureOrder","useFeature","jsx_runtime","Provider","useContext","SessionStorage","petPhoto","adopterPetPhotoStorageKey","ActivateAccountConfiguration","label","message","phone","fieldOptions","imageUploadHandler","quality","outputType","aspectRatio","uploadedImage","photo","onChangeImage","inputButtons","orientation","onChange","options","active","icon","location","node","styling","LabelChip","divider","ZP","LocalStorage","AddPetFoundConfiguration","locationGoogle","displayStaticMap","textArea","rows","floatingLabel","AddPetLostConfiguration","AddPetSafeConfiguration","requiredAddressComponents","autocompleteTypes","configurations","AllPetsConfiguration","ILostAPetConfiguration","IFoundAPetConfiguration","CreateAccountStartConfiguration","CreateAccountLostPhotoConfiguration","CreateAccountLostDistanceConfiguration","CreateAccountLostReportConfiguration","CreateAccountSafeConfiguration","CreateAccountLostConfiguration","CreateAccountFoundConfiguration","CreateAccountFoundPhotoConfiguration","CreateAccountFoundDistanceConfiguration","CreateAccountFoundReportConfiguration","AddPetStartConfiguration","OnboardPetConfiguration","test","test_flag_date_filter","address","imageCropper","image","Configuration","email","password","onChangeImageHandler","defaultImageTilesProps","species","Fragment","b","objectKey","generateImageUrl","appendAttributeIfExists","imageTiles","photos","photo_1","photo_2","photo_3","photo_4","images","petSpecies","toLowerCase","showCounter","p","button","formLocalStorageData","constructor","MinimalLayout","dynamic","ActivateAccountTemplate","storageKey","ActivateAccount","shelterContactInformation","pet","adoptionImage","token","petName","microchip","process","Head","noIndex","getLayout","page","OnboardPetTemplate_OnboardPetTemplate","timeToComplete","onCompleted","timeout","setTimeout","clearTimeout","br","CdnImage","src","priority","height","layout","alt","adopterTokenStorageKey","OnboardPetLanding","HeadTemplate","OnboardPetTemplate","window","href","getBasePath"],"sourceRoot":""}