{"version":3,"file":"js/9708-d8a1ef5d81a38166650e.chunk.js","mappings":"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","sources":["webpack://halo/./app/client/src/views/SignUp/Hooks/useInviteCode.js","webpack://halo/./app/client/src/views/SignUp/SignUp.styles.jsx","webpack://halo/./app/client/src/views/SignUp/SignUpFlows/ConfirmationPage.jsx","webpack://halo/./app/client/src/views/SignUp/SignUpFlows/Step1/Step1.tsx","webpack://halo/./app/client/src/views/SignUp/SignUpFlows/Step2/Sponsor.jsx","webpack://halo/./app/client/src/views/SignUp/SignUpFlows/Step2/UniversityAdmin.jsx","webpack://halo/./app/client/src/views/SignUp/SignUpFlows/Step2/UniversityScientist.tsx","webpack://halo/./app/client/src/views/SignUp/SignUpFlows/Step2/Step2.tsx","webpack://halo/./app/client/src/views/SignUp/SignUp.jsx"],"sourcesContent":["import api from \"@requests/request\";\nimport { useEffect, useState } from \"react\";\n\n// invite type: 0 = undefined state, 1 = company invite, 2 = opportunity invite\n// user role: 0 = scientist, 1 = sponsor, 2 = university admin\n\nconst urlSearchParams = new URLSearchParams(window.location.search);\n\nconst getInviteInfoByCode = async () => {\n  const invite_code = urlSearchParams.get(\"i\");\n  if (!invite_code) return { email: \"\" };\n\n  const responseJson = await api.get(`/invited_user`, { params: { invite_code } });\n  return responseJson.data;\n};\n\nfunction useInviteCode() {\n  const [inviteInfo, setInviteInfo] = useState({ email: \"\", role: undefined });\n\n  useEffect(() => {\n    (async () => {\n      try {\n        setInviteInfo(await getInviteInfoByCode());\n      } catch (error) {\n        // Ignore 404 if can't find invite info\n        if (error.response.status !== 404) {\n          throw error;\n        }\n      }\n    })();\n  }, []);\n\n  return inviteInfo;\n}\n\nexport default useInviteCode;\n","import { COLORS, FONTS, WINDOW_DIMENSIONS } from \"@constants\";\nimport { Link } from \"react-router-dom\";\nimport { Form } from \"semantic-ui-react\";\nimport styled from \"styled-components\";\nimport Dropdown from \"../../components/libraryOld/SelectionMenus/Dropdown\";\n\nconst { TABLET_MEDIA_QUERY } = WINDOW_DIMENSIONS;\n\nconst CUSTOM_MEDIA_QUERY = `@media screen and (max-width: 930px)`;\n\nexport const SignUpPage = styled.div`\n  display: flex;\n  flex: 1;\n  flex-direction: row;\n  height: 100%;\n`;\n\nexport const LeftContainer = styled.div`\n  max-width: 600px;\n  width: 100%;\n  display: inline-flex;\n  justify-content: center;\n\n  margin: 0;\n  background-color: ${COLORS.NEUTRAL_900};\n  color: ${COLORS.WHITE};\n`;\nexport const InfoBox = styled.div`\n  display: flex;\n  flex-direction: column;\n  flex-shrink: 1;\n\n  max-width: 500px;\n  padding-top: 200px;\n  padding-left: 45px;\n  padding-right: 30px;\n\n  ${CUSTOM_MEDIA_QUERY} {\n    display: none;\n  }\n`;\nexport const Logo = styled.img`\n  width: 100px;\n  padding-bottom: 30px;\n`;\n\nexport const LogoTitle = styled.div`\n  ${FONTS.HEADING_4_SEMIBOLD};\n  padding-bottom: 10px;\n`;\n\nexport const LogoDesc = styled.div`\n  ${FONTS.REGULAR_1};\n`;\n\nexport const RightContainer = styled.div`\n  display: flex;\n  align-items: center;\n  margin: 0;\n  flex-shrink: 0;\n`;\n\nexport const SignUpContainer = styled(Form)`\n    display: flex;\n    flex: 1;\n    flex-direction: row;\n    flex-wrap: wrap;\n    justify-content: space-between;\n    align-items: center;\n    background-color ${COLORS.WHITE};\n\n    padding: 100px !important;\n    padding-top: 150px;\n\n    width: 660px !important;\n\n    ${TABLET_MEDIA_QUERY} {\n        align-items: center !important;\n        padding: 30px !important;\n        width: 100vw !important;\n        max-width: 660px !important;\n    }\n`;\n\nexport const StepContainer = styled.div`\n  ${FONTS.REGULAR_2};\n  padding: 100px;\n  padding-top: 150px;\n\n  width: 660px;\n\n  ${TABLET_MEDIA_QUERY} {\n    align-items: center;\n    padding: 30px;\n    width: 100vw;\n    max-width: 660px;\n  }\n`;\n\nexport const Title = styled.div`\n  ${FONTS.HEADING_4_SEMIBOLD};\n  color: ${COLORS.BLACK};\n  width: 100%;\n  margin-bottom: 20px;\n`;\n\nexport const SmallTitle = styled.div`\n  ${FONTS.SEMIBOLD_1};\n  color: ${COLORS.BLACK};\n  width: 100%;\n  margin-bottom: 15px;\n`;\n\nexport const Subtitle = styled.div`\n  ${FONTS.REGULAR_2};\n  color: ${COLORS.BLACK};\n  padding-bottom: 16px;\n`;\n\nexport const SignInLink = styled(Link)`\n  display: inline-block;\n  ${FONTS.REGULAR_2};\n  width: 100%;\n  color: ${COLORS.HALO_BLUE};\n  margin-bottom: 20px;\n  &:hover {\n    color: ${COLORS.HALO_BLUE};\n  }\n`;\n\nexport const QuestionContainer = styled(Form.Field)`\n  width: ${(p) => (p.half && \"49%\") || \"100%\"};\n  margin-bottom: 20px !important;\n  ${TABLET_MEDIA_QUERY} {\n    width: 100% !important;\n  }\n`;\n\nexport const InputTitle = styled.div`\n  ${FONTS.REGULAR_2};\n  color: ${COLORS.BLACK};\n  padding-bottom: 5px;\n`;\nexport const Input = styled.input`\n  &&&& {\n    ${FONTS.REGULAR_2};\n    height: 38px;\n    margin: 0 auto;\n    padding: 11px 28px 11px 10px;\n    color: ${COLORS.BLACK};\n    border: 1px solid ${(props) => (props.error ? COLORS.RED : COLORS.NEUTRAL_400)};\n    border-radius: 3px;\n\n    ${({ fixed }) =>\n      fixed &&\n      `\n      color: ${COLORS.NEUTRAL_500};\n      border: none;\n      background-color: ${COLORS.NEUTRAL_200};\n      pointer-events: none;\n    `}\n  }\n  &&::placeholder {\n    color: ${COLORS.NEUTRAL_500};\n  }\n`;\nexport const FixedInput = styled.input`\n  &&&& {\n    ${FONTS.REGULAR_2};\n    height: 38px;\n    margin: 0 auto;\n    padding: 11px 28px 11px 10px;\n    color: ${COLORS.NEUTRAL_500};\n    border: none;\n    border-radius: 3px;\n    background-color: ${COLORS.NEUTRAL_200};\n    pointer-events: none;\n  }\n`;\nexport const Footer = styled.div`\n  display: inline-block;\n  ${FONTS.REGULAR_2};\n  width: 100%;\n  color: ${COLORS.BLACK};\n  margin-top: 24px;\n`;\nexport const ErrorMessage = styled.div`\n  display: inline-block;\n  ${FONTS.REGULAR_2};\n  color: ${COLORS.RED};\n  width: 100%;\n  margin-bottom: 24px;\n`;\nexport const FooterLink = styled.a`\n  display: inline-block;\n  ${FONTS.REGULAR_2};\n  color: ${COLORS.HALO_BLUE};\n  &:hover {\n    color: ${COLORS.HALO_BLUE};\n  }\n`;\n\nexport const DropdownRow = styled.div`\n  display: flex;\n  flex-direction: column;\n  position: relative;\n  margin-bottom: 28px;\n  width: 100%;\n  max-width: 400px !important;\n`;\nexport const DropdownTitle = styled.div`\n  ${FONTS.REGULAR_2};\n  width: 100% !important;\n  padding-bottom: 7px;\n  color: ${COLORS.BLACK};\n`;\n\nexport const DropdownSubtitle = styled(DropdownTitle)`\n  ${FONTS.REGULAR_3};\n  margin-top: -4px;\n  color: ${COLORS.NEUTRAL_500};\n`;\n\nexport const CompanyDropdown = styled(Dropdown)`\n  ${FONTS.REGULAR_2};\n  .select__indicator.select__indicator {\n    color: ${COLORS.BLACK};\n  }\n`;\n\nexport const CompanySelection = styled(CompanyDropdown)`\n  margin-left: 0;\n`;\n\nexport const ContactLink = styled.div`\n  ${FONTS.REGULAR_2};\n  text-align: left;\n  width: 90%;\n  margin-top: 7px;\n  color: ${COLORS.BLACK};\n`;\nexport const GeneralText = styled.div`\n  ${FONTS.REGULAR_1};\n  color: ${COLORS.BLACK};\n  padding-bottom: 20px;\n`;\n","import { Button } from \"@components/library\";\nimport haloLogo from \"@images/logos/halo_logo_reversed.svg\";\nimport { marketplacePath } from \"@routes/utils\";\nimport * as S from \"../SignUp.styles\";\n\nfunction ConfirmationPage({ inviteInfo }) {\n  const routeTo = (newLocation) => {\n    window.location.href = newLocation;\n  };\n\n  return (\n    <S.SignUpPage>\n      <S.LeftContainer>\n        <S.InfoBox>\n          <S.Logo src={haloLogo} />\n          <S.LogoTitle>Move Science Forward</S.LogoTitle>\n          <S.LogoDesc>Join a community of scientists and innovators.</S.LogoDesc>\n        </S.InfoBox>\n      </S.LeftContainer>\n      <S.RightContainer>\n        <S.SignUpContainer>\n          <S.Title>Registration complete!</S.Title>\n          {inviteInfo.role === 0 && (\n            <>\n              <S.GeneralText>Thank you for creating a Halo account.</S.GeneralText>\n              <S.GeneralText>\n                Let’s head over to the marketplace where you can view our latest funding\n                opportunities.\n              </S.GeneralText>\n              <Button\n                type=\"button\"\n                onClick={() => routeTo(marketplacePath())}\n                data-testid=\"sign-up-confirmation-button\"\n              >\n                View marketplace\n              </Button>\n            </>\n          )}\n          {inviteInfo.role === 2 && (\n            <>\n              <S.GeneralText>\n                You are now part of {inviteInfo?.invited_by?.profile_info?.university}'s team on\n                Halo.\n              </S.GeneralText>\n              <S.GeneralText>Let’s head over to your university team dashboard.</S.GeneralText>\n              <Button\n                type=\"button\"\n                onClick={() => routeTo(\"/university_dashboard/team\")}\n                data-testid=\"sign-up-confirmation-button\"\n              >\n                View dashboard\n              </Button>\n            </>\n          )}\n          {inviteInfo.role === 1 && (\n            <>\n              <S.GeneralText>\n                You are now part of {inviteInfo?.invited_by?.profile_info?.company_name}'s team on\n                Halo.\n              </S.GeneralText>\n              <S.GeneralText>Let’s head over to your company dashboard.</S.GeneralText>\n              <Button\n                type=\"button\"\n                onClick={() => routeTo(\"/reviewer_dashboard\")}\n                data-testid=\"sign-up-confirmation-button\"\n              >\n                View dashboard\n              </Button>\n            </>\n          )}\n        </S.SignUpContainer>\n      </S.RightContainer>\n    </S.SignUpPage>\n  );\n}\n\nexport default ConfirmationPage;\n","import { SSOEnabledHint } from \"@components/SSOEnabledHint\";\nimport { Button, Icon } from \"@components/library\";\nimport { COLORS, FONTS } from \"@constants\";\nimport { useSearchParams } from \"@hooks/router\";\nimport { useSSOSensitiveEmail } from \"@hooks/useSSOSensitiveEmail\";\nimport haloLogo from \"@images/logos/halo_logo_reversed.svg\";\nimport { RequestableType } from \"@tsTypes/requests\";\nimport { UserRole } from \"@tsTypes/users\";\nimport { usedPersonalEmail } from \"@utils/appUtils\";\nimport { t } from \"@utils/i18n\";\nimport { useEffect, useState } from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { register } from \"src/requests/users\";\nimport styled from \"styled-components\";\nimport Validator from \"validator\";\nimport * as S from \"../../SignUp.styles.jsx\";\n\nfunction Step1({ inviteInfo, completeStep1 }) {\n  const hasInviteInfo = inviteInfo.role !== undefined;\n  const hasValidInviteEmail = hasInviteInfo && !usedPersonalEmail(inviteInfo.email);\n\n  const [searchParams] = useSearchParams();\n  const searchParamsEmail = searchParams.get(\"email\");\n  const hasValidSearchParamsEmail =\n    searchParamsEmail &&\n    Validator.isEmail(searchParamsEmail) &&\n    !usedPersonalEmail(searchParamsEmail);\n\n  const [error, setError] = useState(\"\");\n  const [isSubmitting, setIsSubmitting] = useState(false);\n  const [hasSubmitted, setHasSubmitted] = useState(false);\n\n  const [firstName, setFirstName] = useState(\"\");\n  const [lastName, setLastName] = useState(\"\");\n  const [password, setPassword] = useState(\"\");\n  const [role, setRole] = useState(UserRole.SCIENTIST);\n  const [invitedUserId, setInvitedUserId] = useState(undefined);\n  const { email, setEmail, isEmailSSOEnabled, redirectToSSO } = useSSOSensitiveEmail(\n    searchParamsEmail ?? \"\"\n  );\n  const [shouldShowSSO, setShouldShowSSO] = useState(isEmailSSOEnabled);\n\n  useEffect(() => {\n    if (inviteInfo.email) setEmail(inviteInfo.email);\n    setRole(inviteInfo.role);\n    setInvitedUserId(inviteInfo.id);\n    checkEmail(inviteInfo.email);\n  }, [inviteInfo]);\n\n  useEffect(() => {\n    if (isEmailSSOEnabled) setShouldShowSSO(true);\n  }, [isEmailSSOEnabled]);\n\n  const checkEmail = (emailValue: string) => {\n    if (!Validator.isEmpty(emailValue) && !Validator.isEmail(emailValue)) {\n      setError(\"Please use a valid email\");\n    } else if (usedPersonalEmail(emailValue) && !error) {\n      setError(\"Please use a company or university email.\");\n    } else if (usedPersonalEmail(emailValue)) {\n      setError(\"Please use a company or university email.\");\n    } else {\n      setError(\"\");\n    }\n  };\n\n  const invalidSubmit = () => {\n    if (\n      Validator.isEmpty(firstName) ||\n      Validator.isEmpty(lastName) ||\n      Validator.isEmpty(email) ||\n      Validator.isEmpty(password)\n    ) {\n      setError(\"Please fill in all fields before continuing.\");\n      return true;\n    } else if (!Validator.isEmail(email)) {\n      setError(\"Please enter a valid email address.\");\n      return true;\n    } else if (usedPersonalEmail(email)) {\n      setError(`Please use company or university email.`);\n      return true;\n    } else if (!Validator.isLength(password, { min: 8, max: 30 })) {\n      setError(\"Passwords must be between 8-30 characters long.\");\n      return true;\n    }\n    return false;\n  };\n\n  const urlParamsQueryString = searchParams.size > 0 ? `?${searchParams.toString()}` : \"\";\n\n  const handleRegister = async () => {\n    setError(\"\");\n    setIsSubmitting(true);\n    setHasSubmitted(true);\n\n    if (shouldShowSSO) {\n      if (!isEmailSSOEnabled) {\n        setError(\"Your email/company is not enabled to use SSO.\");\n        setIsSubmitting(false);\n        return;\n      }\n\n      redirectToSSO();\n      return;\n    }\n\n    if (invalidSubmit()) {\n      setIsSubmitting(false);\n      return;\n    }\n\n    try {\n      await register({\n        firstName,\n        lastName,\n        email,\n        password,\n        role,\n        invitedUserId,\n      });\n\n      if (!hasInviteInfo) {\n        window.location.href = `/onboarding${urlParamsQueryString}`;\n      } else {\n        completeStep1();\n      }\n    } catch (err) {\n      console.error(err);\n\n      if (err?.response?.status === 422) {\n        if (\n          err.response.data.errors.email[0] === \"is not allowed\" ||\n          err.response.data.errors?.email[0].includes(\"must be a company or university email\")\n        ) {\n          setError(\"Please use company or university email.\");\n        } else if (err.response.data.errors?.email[0]?.includes(\"valid e-email address\")) {\n          setError(\"Please use a valid email\");\n        } else {\n          setError(\"This email is already in use.\");\n        }\n      } else if (err?.response?.status === 403) {\n        setError(t(\"error.generic_retry\"));\n      } else {\n        setError(\"Something went wrong. Please try again.\");\n      }\n    } finally {\n      setIsSubmitting(false);\n    }\n  };\n\n  let invitationHeader = <>Sign up for Halo</>;\n  if (hasInviteInfo) {\n    const { request, invited_by } = inviteInfo;\n\n    const inviterName = `${invited_by.first_name} ${invited_by.last_name}`;\n    invitationHeader = <>You were invited to join Halo</>;\n\n    if (request) {\n      invitationHeader = (\n        <>\n          {inviterName} invited you to be a reviewer for{\" \"}\n          {request.requestable_type === RequestableType.RFP ? (\n            <Link\n              to={`/research/${request.requestable.rfp_program_identifier}/${request.slug}`}\n              target=\"_blank\"\n              rel=\"noreferrer\"\n            >\n              {request.title}\n            </Link>\n          ) : (\n            <span>{request.title}</span>\n          )}\n        </>\n      );\n    } else if (invited_by.role === 2) {\n      invitationHeader = (\n        <>\n          {inviterName} at {invited_by.profile_info.university} invited you to join Halo\n        </>\n      );\n    } else if (invited_by.role === 1 && inviteInfo.role === 1) {\n      invitationHeader = (\n        <>\n          {inviterName} invited you to join {invited_by.profile_info.company_name}&rsquo;s team on\n          Halo\n        </>\n      );\n    } else if (invited_by.role === 1 && inviteInfo.role === 0) {\n      invitationHeader = (\n        <>\n          {inviterName} invited you to join {invited_by.profile_info.company_name}&rsquo;s network\n          on Halo\n        </>\n      );\n    }\n  }\n\n  const hasValidPrepopulatedEmail = hasValidSearchParamsEmail || hasValidInviteEmail;\n\n  return (\n    <S.SignUpPage>\n      <S.LeftContainer>\n        <S.InfoBox>\n          <S.Logo src={haloLogo} />\n          <S.LogoTitle>Move Science Forward</S.LogoTitle>\n          <S.LogoDesc>Join a community of scientists and innovators.</S.LogoDesc>\n        </S.InfoBox>\n      </S.LeftContainer>\n      <S.RightContainer>\n        <S.SignUpContainer onSubmit={handleRegister} error={error !== \"\"}>\n          <S.Title>{invitationHeader}</S.Title>\n          {hasInviteInfo && (\n            <S.Subtitle>To get started, let&rsquo;s quickly set up your account.</S.Subtitle>\n          )}\n          <S.SignInLink to={`/login${urlParamsQueryString}`}>\n            Already have a Halo account?\n          </S.SignInLink>\n          {(!shouldShowSSO || firstName || lastName) && (\n            <>\n              <S.QuestionContainer half={1}>\n                <S.InputTitle>First Name</S.InputTitle>\n                <S.Input\n                  name=\"firstName\"\n                  type=\"text\"\n                  value={firstName}\n                  onChange={(e) => setFirstName(e.target.value)}\n                  error={hasSubmitted && firstName === \"\"}\n                  data-testid=\"user-invite-first-name-input\"\n                />\n              </S.QuestionContainer>\n              <S.QuestionContainer half={1}>\n                <S.InputTitle>Last Name</S.InputTitle>\n                <S.Input\n                  name=\"lastName\"\n                  type=\"text\"\n                  value={lastName}\n                  onChange={(e) => setLastName(e.target.value)}\n                  error={hasSubmitted && lastName === \"\"}\n                  data-testid=\"user-invite-last-name-input\"\n                />\n              </S.QuestionContainer>\n            </>\n          )}\n          <S.QuestionContainer>\n            <S.InputTitle>Email Address</S.InputTitle>\n            <S.Input\n              name=\"email\"\n              type=\"email\"\n              onChange={(e) => {\n                if (hasSubmitted) checkEmail(e.target.value);\n                setEmail(e.target.value);\n              }}\n              value={email}\n              readOnly={hasValidPrepopulatedEmail}\n              fixed={hasValidPrepopulatedEmail}\n              onBlur={() => checkEmail(email)}\n              error={error.includes(\"email\")}\n              tabIndex={hasValidPrepopulatedEmail ? -1 : undefined}\n              data-testid=\"email-input\"\n            />\n          </S.QuestionContainer>\n          {shouldShowSSO ? (\n            <SSOEnabledHint />\n          ) : (\n            <S.QuestionContainer>\n              <S.InputTitle>Create a Password</S.InputTitle>\n              <S.Input\n                name=\"password\"\n                value={password}\n                type=\"password\"\n                onChange={(e) => setPassword(e.target.value)}\n                error={\n                  !hasSubmitted && password.length && (password.length < 8 || password.length > 30)\n                }\n                data-testid=\"user-invite-password-input\"\n              />\n            </S.QuestionContainer>\n          )}\n          <S.ErrorMessage>{error}</S.ErrorMessage>\n          <SubmitContainer>\n            <Button\n              type=\"submit\"\n              disabled={\n                isSubmitting ||\n                (shouldShowSSO && !email) ||\n                (!shouldShowSSO && !(firstName && lastName && email && password)) ||\n                error.includes(\"email\")\n              }\n              data-testid=\"user-invite-step1-submit-button\"\n            >\n              Continue\n            </Button>\n            {shouldShowSSO ? (\n              <SubmitText\n                onClick={() => {\n                  if (isEmailSSOEnabled) setEmail(\"\");\n                  setShouldShowSSO(false);\n                }}\n              >\n                Go back {isEmailSSOEnabled && \" and use a different email\"}\n              </SubmitText>\n            ) : (\n              <SubmitText onClick={() => setShouldShowSSO(true)}>\n                <Icon name=\"Lock\" size=\"sm\" />\n                Sign in with SSO\n              </SubmitText>\n            )}\n          </SubmitContainer>\n          <S.Footer>\n            By signing up you agree to the&nbsp;\n            <S.FooterLink href=\"/terms\" target=\"_blank\">\n              Terms of Service\n            </S.FooterLink>\n            <span>{\" & \"}</span>\n            <S.FooterLink href=\"/privacy\" target=\"_blank\">\n              Privacy Policy\n            </S.FooterLink>\n          </S.Footer>\n        </S.SignUpContainer>\n      </S.RightContainer>\n    </S.SignUpPage>\n  );\n}\n\nexport default Step1;\n\nconst SubmitContainer = styled.div`\n  display: flex;\n  align-items: center;\n  gap: 12px;\n`;\n\nconst SubmitText = styled.div`\n  display: flex;\n  align-items: center;\n  gap: 4px;\n\n  text-decoration: underline;\n  color: ${COLORS.BLACK};\n  ${FONTS.REGULAR_2}\n\n  &:hover {\n    cursor: pointer;\n    color: ${COLORS.BLUE_900};\n  }\n`;\n","import { Button, TextInput } from \"@components/library\";\nimport haloLogo from \"@images/logos/halo_logo_reversed.svg\";\nimport { SponsorRole } from \"@tsTypes/sponsorProfiles\";\nimport { convertToSnakeCase } from \"@utils/textUtils\";\nimport { useState } from \"react\";\nimport { COMPANY_SPONSOR_TITLE_LIMIT } from \"src/views/Onboarding/Step3/Step3.jsx\";\nimport * as S from \"../../SignUp.styles\";\n\nconst roleOptions = Object.values(SponsorRole).map((text) => ({\n  key: convertToSnakeCase(text),\n  text: text,\n  value: text,\n}));\n\nfunction SponsorStep(props) {\n  const { inviteInfo, completeStep2 } = props;\n\n  const [profileInfo, setProfileInfo] = useState({ role: \"\", title: \"\" });\n\n  const handleRole = (e, selection) => {\n    if (selection?.action == \"select-option\") {\n      setProfileInfo({\n        ...profileInfo,\n        role: e.value,\n      });\n    }\n  };\n\n  const onContinue = () => {\n    completeStep2({\n      ...profileInfo,\n      company: inviteInfo?.invited_by?.profile_info?.company_name ?? \"\",\n    });\n  };\n\n  return (\n    <S.SignUpPage>\n      <S.LeftContainer>\n        <S.InfoBox>\n          <S.Logo src={haloLogo} />\n          <S.LogoTitle>Move Science Forward</S.LogoTitle>\n          <S.LogoDesc>Join a community of scientists and innovators.</S.LogoDesc>\n        </S.InfoBox>\n      </S.LeftContainer>\n      <S.RightContainer>\n        <S.SignUpContainer>\n          <S.SmallTitle>Tell us a little bit more about yourself</S.SmallTitle>\n          <S.Subtitle>Almost there! Select your role and job title at work.</S.Subtitle>\n          <S.DropdownRow>\n            <S.DropdownTitle>Company Name</S.DropdownTitle>\n            <S.FixedInput\n              type=\"text\"\n              name=\"company\"\n              value={inviteInfo.invited_by.profile_info.company_name}\n              error={!inviteInfo.invited_by.profile_info.company_name}\n              readOnly\n            />\n          </S.DropdownRow>\n          <S.DropdownRow>\n            <S.DropdownTitle>Which of the following best describes your role?</S.DropdownTitle>\n            <S.CompanyDropdown\n              placeholder=\"Select your role\"\n              options={roleOptions}\n              onChange={handleRole}\n              value={profileInfo.role}\n              data-testid=\"user-invite-sponsor-role-dropdown\"\n            />\n          </S.DropdownRow>\n          <S.DropdownRow>\n            <S.DropdownTitle>What’s your job title?</S.DropdownTitle>\n            <TextInput\n              value={profileInfo.title || \"\"}\n              placeholder=\"Enter your job title\"\n              onChange={(e) => {\n                setProfileInfo({\n                  ...profileInfo,\n                  title: e.target.value,\n                });\n              }}\n              errors={[\n                {\n                  hasError: profileInfo.title?.length > COMPANY_SPONSOR_TITLE_LIMIT,\n                  errorMessage: `Job title must be less than ${COMPANY_SPONSOR_TITLE_LIMIT} characters`,\n                },\n              ]}\n              hideClearButton\n              data-testid=\"user-invite-sponsor-title-input\"\n            />\n          </S.DropdownRow>\n          <Button\n            type=\"submit\"\n            disabled={\n              !(\n                inviteInfo.invited_by.profile_info.company_name &&\n                profileInfo.role &&\n                profileInfo.title &&\n                profileInfo.title.length <= COMPANY_SPONSOR_TITLE_LIMIT\n              )\n            }\n            onClick={onContinue}\n            data-testid=\"user-invite-sponsor-submit-button\"\n          >\n            Submit\n          </Button>\n        </S.SignUpContainer>\n      </S.RightContainer>\n    </S.SignUpPage>\n  );\n}\n\nexport default SponsorStep;\n","import { Button } from \"@components/library\";\nimport haloLogo from \"@images/logos/halo_logo_reversed.svg\";\nimport { UniversityAdminRoles, UniversityExpertise } from \"@tsTypes/universityProfiles\";\nimport { convertToSnakeCase } from \"@utils/textUtils\";\nimport { useState } from \"react\";\nimport * as S from \"../../SignUp.styles\";\n\nconst userRoleOptions = Object.values(UniversityAdminRoles).map((text) => ({\n  key: convertToSnakeCase(text),\n  text: text,\n  value: text,\n}));\n\nconst expertiseOptions = Object.values(UniversityExpertise).map((text) => ({\n  key: convertToSnakeCase(text),\n  text: text,\n  value: text,\n}));\n\nfunction UniversityAdminStep(props) {\n  const { inviteInfo, completeStep2 } = props;\n\n  const [role, setRole] = useState(\"\");\n  const [expertise, setExpertise] = useState([]);\n\n  const disabled = !(inviteInfo.invited_by.profile_info.university && role && expertise);\n\n  const handleRole = (e, selection) => {\n    if (selection?.action == \"select-option\") {\n      setRole(e.value);\n    }\n  };\n\n  const handleExpertise = (e, selection) => {\n    if (selection?.action === \"select-option\" && e.length <= 3) {\n      setExpertise(e.map((selection) => selection.value) || []);\n    }\n  };\n\n  const onContinue = () => {\n    completeStep2({\n      role,\n      universityExpertise: expertise,\n      university: inviteInfo.invited_by.profile_info.university,\n    });\n  };\n\n  return (\n    <S.SignUpPage>\n      <S.LeftContainer>\n        <S.InfoBox>\n          <S.Logo src={haloLogo} />\n          <S.LogoTitle>Move Science Forward</S.LogoTitle>\n          <S.LogoDesc>Join a community of scientists and innovators.</S.LogoDesc>\n        </S.InfoBox>\n      </S.LeftContainer>\n      <S.RightContainer>\n        <S.SignUpContainer>\n          <S.SmallTitle>Tell us a little bit more about yourself</S.SmallTitle>\n          <S.Subtitle>Almost there! Select your role and job title at work.</S.Subtitle>\n          <S.DropdownRow>\n            <S.DropdownTitle>Research Institution</S.DropdownTitle>\n            <S.FixedInput\n              type=\"text\"\n              name=\"university\"\n              value={inviteInfo.invited_by.profile_info.university}\n              error={!inviteInfo.invited_by.profile_info.university}\n              readOnly\n            />\n            <S.ContactLink>\n              <a style={{ textDecoration: \"underline\" }} href=\"/contact\" target=\"_blank\">\n                Contact us\n              </a>{\" \"}\n              if you don't see your institution\n            </S.ContactLink>\n          </S.DropdownRow>\n          <S.DropdownRow>\n            <S.DropdownTitle>Which of the following best describes your role?</S.DropdownTitle>\n            <S.CompanyDropdown\n              placeholder=\"Select your role\"\n              options={userRoleOptions}\n              onChange={handleRole}\n              value={role}\n              data-testid=\"user-invite-admin-role-dropdown\"\n            />\n          </S.DropdownRow>\n          <S.DropdownRow>\n            <S.DropdownTitle>\n              Where do you focus your efforts on behalf of your faculty?\n            </S.DropdownTitle>\n            <S.CompanyDropdown\n              placeholder=\"Search areas of expertise\"\n              isMulti\n              closeMenuOnSelect={false}\n              value={expertise || []}\n              options={expertiseOptions}\n              onChange={handleExpertise}\n              maxOptions={3}\n              data-testid=\"user-invite-admin-research-areas-dropdown\"\n            />\n          </S.DropdownRow>\n          <Button\n            type=\"submit\"\n            disabled={disabled}\n            onClick={onContinue}\n            data-testid=\"user-invite-admin-submit-button\"\n          >\n            Submit\n          </Button>\n        </S.SignUpContainer>\n      </S.RightContainer>\n    </S.SignUpPage>\n  );\n}\n\nexport default UniversityAdminStep;\n","import { Button } from \"@components/library\";\nimport KeywordsDropdown from \"@components/library/Dropdowns/KeywordsDropdown/KeywordsDropdown\";\nimport haloLogo from \"@images/logos/halo_logo_reversed.svg\";\nimport { convertToSnakeCase } from \"@utils/textUtils\";\nimport { useState } from \"react\";\nimport * as S from \"../../SignUp.styles\";\n\nconst userRoleOptions = [\n  \"Principal Investigator\",\n  \"Postdoctoral Scientist\",\n  \"Research Associate\",\n  \"PhD Candidate\",\n].map((text) => ({\n  key: convertToSnakeCase(text),\n  text: text,\n  value: text,\n}));\n\nfunction UniversityScientistStep(props) {\n  const { inviteInfo, completeStep2 } = props;\n\n  const [profileInfo, setProfileInfo] = useState<{ role: string; areasOfExpertise: string[] }>({\n    role: \"\",\n    areasOfExpertise: [],\n  });\n\n  const disabled = !(\n    inviteInfo.invited_by.profile_info.university &&\n    profileInfo.role &&\n    profileInfo.areasOfExpertise.length\n  );\n\n  const handleRole = (e, selection) => {\n    if (selection?.action == \"select-option\") {\n      setProfileInfo({ ...profileInfo, role: e.value });\n    }\n  };\n\n  const onContinue = () => {\n    completeStep2({\n      areasOfExpertise: profileInfo.areasOfExpertise,\n      role: profileInfo.role,\n      university: inviteInfo.invited_by.profile_info.university,\n    });\n  };\n\n  return (\n    <S.SignUpPage>\n      <S.LeftContainer>\n        <S.InfoBox>\n          <S.Logo src={haloLogo} />\n          <S.LogoTitle>Move Science Forward</S.LogoTitle>\n          <S.LogoDesc>Join a community of scientists and innovators.</S.LogoDesc>\n        </S.InfoBox>\n      </S.LeftContainer>\n      <S.RightContainer>\n        <S.SignUpContainer>\n          <S.SmallTitle>Tell us a little bit more about yourself</S.SmallTitle>\n          <S.Subtitle>Almost there! Select your role and job title at work.</S.Subtitle>\n          <S.DropdownRow>\n            <S.DropdownTitle>Research Institution</S.DropdownTitle>\n            <S.FixedInput\n              name=\"university\"\n              value={inviteInfo.invited_by.profile_info.university}\n              type=\"text\"\n              readOnly\n              error={!inviteInfo.invited_by.profile_info.university ? 1 : 0}\n            />\n            <S.ContactLink>\n              <a style={{ textDecoration: \"underline\" }} href=\"/contact\" target=\"_blank\">\n                Contact us\n              </a>{\" \"}\n              if you don&rsquo;t see your institution\n            </S.ContactLink>\n          </S.DropdownRow>\n          <S.DropdownRow>\n            <S.DropdownTitle>Which of the following best describes your role?</S.DropdownTitle>\n            <S.CompanyDropdown\n              placeholder=\"Select your role\"\n              options={userRoleOptions}\n              onChange={handleRole}\n              value={profileInfo.role}\n              data-testid=\"user-invite-university-scientist-role-dropdown\"\n            />\n          </S.DropdownRow>\n          <S.DropdownRow>\n            <S.DropdownTitle>What are your areas of expertise?</S.DropdownTitle>\n            <S.DropdownSubtitle>You can add up to 5.</S.DropdownSubtitle>\n            <KeywordsDropdown\n              keywordType=\"area_of_expertise\"\n              targetType=\"scientist\"\n              value={profileInfo.areasOfExpertise ?? []}\n              onChange={(selection) =>\n                setProfileInfo({ ...profileInfo, areasOfExpertise: selection })\n              }\n            />\n          </S.DropdownRow>\n          <Button\n            type=\"submit\"\n            disabled={disabled}\n            onClick={onContinue}\n            data-testid=\"user-invite-university-scientist-submit-button\"\n          >\n            Submit\n          </Button>\n        </S.SignUpContainer>\n      </S.RightContainer>\n    </S.SignUpPage>\n  );\n}\n\nexport default UniversityScientistStep;\n","import { Button } from \"@components/library\";\nimport haloLogo from \"@images/logos/halo_logo_reversed.svg\";\nimport { ReactNode, useState } from \"react\";\nimport CompanySponsor from \"src/views/Onboarding/Step3/CompanySponsor\";\nimport ResearchInstitutionAdmin from \"src/views/Onboarding/Step3/ResearchInstitutionAdmin.jsx\";\nimport ResearchInstitutionScientist from \"src/views/Onboarding/Step3/ResearchInstitutionScientist\";\n\nimport * as S from \"../../SignUp.styles.jsx\";\n\ninterface ProfileInfo {\n  company?: string;\n  role?: string;\n  title?: string;\n  companyName?: string;\n  companyURL?: string;\n  country?: string;\n  disciplines?: string[];\n  areasOfExpertise?: string[];\n  university?: string[];\n  universityExpertise?: string;\n  universityHasCountry?: boolean;\n}\n\ninterface Props {\n  inviteInfo: {\n    role: number;\n    email: string;\n    invited_by: {\n      role: number;\n      profile_info: {\n        company_name?: string;\n        university?: string;\n      };\n    };\n  };\n  completeStep2: (userType: string, profileInfo: ProfileInfo) => any;\n}\n\nconst Step2 = ({ inviteInfo, completeStep2 }: Props) => {\n  const [isLoading, setIsLoading] = useState<boolean>(false);\n\n  const [profileInfo, setProfileInfo] = useState<ProfileInfo>({});\n  const { title, disciplines, areasOfExpertise, university, universityHasCountry, country } =\n    profileInfo;\n\n  // Role-specific variables\n  let userType: string;\n  let prefillData: any = {};\n  let disabled = true;\n  let StepInputs: ReactNode;\n\n  switch (inviteInfo.role) {\n    case 0:\n      userType = \"scientist\";\n      disabled = !(disciplines?.length && areasOfExpertise?.length);\n      if (inviteInfo.invited_by.role === 1) {\n        // Sponsor invited scientist to network\n        disabled ||= !(university && (universityHasCountry || country));\n        StepInputs = (\n          <ResearchInstitutionScientist profileInfo={profileInfo} setProfileInfo={setProfileInfo} />\n        );\n      } else {\n        // University admin invited scientist to university\n        prefillData = {\n          university: inviteInfo.invited_by.profile_info.university,\n        };\n        StepInputs = (\n          <ResearchInstitutionScientist\n            profileInfo={profileInfo}\n            setProfileInfo={setProfileInfo}\n            prefillInstitutionName={prefillData.university}\n          />\n        );\n      }\n      break;\n    case 1:\n      // Sponsor invited sponsor to company\n      userType = \"sponsor\";\n      prefillData = {\n        company: inviteInfo.invited_by.profile_info.company_name,\n      };\n      disabled = !title?.length;\n      StepInputs = (\n        <CompanySponsor\n          profileInfo={profileInfo}\n          setProfileInfo={setProfileInfo}\n          email={inviteInfo.email}\n          prefillCompanyName={prefillData.company}\n        />\n      );\n      break;\n    case 2:\n      // University admin invited university admin to university\n      userType = \"admin\";\n      prefillData = {\n        university: inviteInfo.invited_by.profile_info.university,\n      };\n      disabled = !disciplines?.length;\n      StepInputs = (\n        <ResearchInstitutionAdmin\n          profileInfo={profileInfo}\n          setProfileInfo={setProfileInfo}\n          prefillInstitutionName={prefillData.university}\n        />\n      );\n  }\n\n  const handleSubmit = async () => {\n    setIsLoading(true);\n    await completeStep2(userType, {\n      ...prefillData,\n      ...profileInfo,\n    });\n    setIsLoading(false);\n  };\n\n  return (\n    <S.SignUpPage>\n      <S.LeftContainer>\n        <S.InfoBox>\n          <S.Logo src={haloLogo} />\n          <S.LogoTitle>Move Science Forward</S.LogoTitle>\n          <S.LogoDesc>Join a community of scientists and innovators.</S.LogoDesc>\n        </S.InfoBox>\n      </S.LeftContainer>\n      <S.RightContainer>\n        <S.StepContainer>\n          <S.SmallTitle>Tell us a little bit more about yourself</S.SmallTitle>\n          <S.Subtitle>Almost there! Select your role and job title at work.</S.Subtitle>\n          {StepInputs}\n          <Button type=\"submit\" disabled={disabled || isLoading} onClick={handleSubmit}>\n            Submit\n          </Button>\n        </S.StepContainer>\n      </S.RightContainer>\n    </S.SignUpPage>\n  );\n};\n\nexport default Step2;\n","import { identify } from \"@utils/appUtils\";\nimport { useState } from \"react\";\nimport { sponsorOnboarded } from \"src/requests/hubspot\";\nimport { onboard } from \"src/requests/users\";\nimport useInviteCode from \"./Hooks/useInviteCode\";\nimport ConfirmationPage from \"./SignUpFlows/ConfirmationPage\";\nimport Step1 from \"./SignUpFlows/Step1\";\nimport Step2 from \"./SignUpFlows/Step2\";\n\nfunction SignUp() {\n  const [progress, setProgress] = useState({\n    step1_complete: Boolean(gon?.user_id),\n    step2_complete: false,\n  });\n\n  const inviteInfo = useInviteCode();\n\n  const completeStep1 = () => {\n    setProgress({ ...progress, step1_complete: true });\n  };\n\n  const completeStep2 = async (userType, profileInfo) => {\n    const user = await onboard({ userType, profileInfo });\n\n    if (userType === \"sponsor\") await sponsorOnboarded(user);\n    identify(user);\n\n    setProgress({ ...progress, step2_complete: true });\n  };\n\n  if (!progress.step1_complete)\n    return <Step1 inviteInfo={inviteInfo} completeStep1={completeStep1} />;\n\n  if (!progress.step2_complete) {\n    return <Step2 inviteInfo={inviteInfo} completeStep2={completeStep2} />;\n  }\n\n  if (progress.step1_complete && progress.step2_complete) {\n    return <ConfirmationPage inviteInfo={inviteInfo} />;\n  }\n\n  return null;\n}\n\nexport default SignUp;\n"],"names":["urlSearchParams","URLSearchParams","window","location","search","_useState2","_slicedToArray","useState","email","role","undefined","inviteInfo","setInviteInfo","useEffect","async","invite_code","get","api","params","data","getInviteInfoByCode","error","response","status","TABLET_MEDIA_QUERY","WINDOW_DIMENSIONS","SignUpPage","styled","div","LeftContainer","COLORS","NEUTRAL_900","WHITE","InfoBox","Logo","img","LogoTitle","FONTS","HEADING_4_SEMIBOLD","LogoDesc","REGULAR_1","RightContainer","SignUpContainer","Form","StepContainer","REGULAR_2","Title","BLACK","SmallTitle","SEMIBOLD_1","Subtitle","SignInLink","Link","HALO_BLUE","QuestionContainer","Field","p","half","InputTitle","Input","input","props","RED","NEUTRAL_400","fixed","NEUTRAL_500","NEUTRAL_200","Footer","ErrorMessage","FooterLink","a","DropdownTitle","CompanyDropdown","REGULAR_3","Dropdown","GeneralText","routeTo","newLocation","href","_jsxs","S","children","_jsx","src","haloLogo","_Fragment","Button","type","onClick","marketplacePath","invited_by","profile_info","university","company_name","completeStep1","hasInviteInfo","hasValidInviteEmail","usedPersonalEmail","searchParams","useSearchParams","searchParamsEmail","hasValidSearchParamsEmail","Validator","setError","_useState4","isSubmitting","setIsSubmitting","_useState6","hasSubmitted","setHasSubmitted","_useState8","firstName","setFirstName","_useState10","lastName","setLastName","_useState12","password","setPassword","_useState14","UserRole","SCIENTIST","setRole","_useState16","invitedUserId","setInvitedUserId","_useSSOSensitiveEmail","useSSOSensitiveEmail","setEmail","isEmailSSOEnabled","redirectToSSO","_useState18","shouldShowSSO","setShouldShowSSO","id","checkEmail","emailValue","urlParamsQueryString","size","toString","invitationHeader","request","inviterName","first_name","last_name","requestable_type","RequestableType","RFP","to","requestable","rfp_program_identifier","slug","target","rel","title","hasValidPrepopulatedEmail","onSubmit","min","max","register","err","console","errors","includes","t","name","value","onChange","e","readOnly","onBlur","tabIndex","SSOEnabledHint","length","SubmitContainer","disabled","SubmitText","Icon","BLUE_900","Object","values","SponsorRole","map","text","key","convertToSnakeCase","UniversityAdminRoles","UniversityExpertise","Step2","completeStep2","isLoading","setIsLoading","profileInfo","setProfileInfo","disciplines","areasOfExpertise","universityHasCountry","country","userType","StepInputs","prefillData","ResearchInstitutionScientist","prefillInstitutionName","company","CompanySponsor","prefillCompanyName","ResearchInstitutionAdmin","_objectSpread","step1_complete","Boolean","gon","user_id","step2_complete","progress","setProgress","useInviteCode","user","onboard","sponsorOnboarded","identify","ConfirmationPage","Step1"],"sourceRoot":""}