{"version":3,"file":"static/js/app-eb0a0f29_2e86c2322aef0a7968c2.js","mappings":"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","sources":["file:////home/runner/work/platform/platform/apps/front-end/src/pages/CompleteProfilePage/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/pages/DashboardPage/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/pages/ErrorPage/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/pages/HelpPage/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/pages/HomePage/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/pages/LandingPage/OrganizationLandingPage/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/pages/LandingPage/ProgramLandingPage/index.tsx"],"sourcesContent":["import { useAuth } from '@guider-global/auth-hooks';\nimport {\n getCountryList,\n getOrigin,\n getSubDomain,\n} from '@guider-global/front-end-utils';\nimport {\n useOrganization,\n useSanityBaseLanguage,\n} from '@guider-global/sanity-hooks';\nimport {\n ICustomField,\n SanityOrganization,\n SanityTextBlock,\n} from '@guider-global/shared-types';\nimport {\n Stack,\n Button,\n TextStack,\n FormTextArea,\n FormSelectInput,\n FormPhoneNumber,\n DropdownItemProps,\n LinkCheckbox,\n FormMultiSelectInput,\n FormPhoneNumberValue,\n TextareaInputValue,\n SelectareaInputValue,\n MultiSelectAreaInputValue,\n DateFieldValue,\n CheckboxTextItemProps,\n ContentModal,\n} from '@guider-global/ui';\nimport { Box } from '@mui/system';\nimport { PortableText } from '@portabletext/react';\nimport { LoadingElement } from 'components';\nimport { Markdown } from 'components/Markdown';\nimport { ProgressContainer } from 'containers';\nimport { interpolate } from 'functions';\nimport { useCustomFields, useMixpanelEvents, useProfiles } from 'hooks';\nimport { useMemo, useState } from 'react';\nimport { SubmitHandler, useForm } from 'react-hook-form';\nimport { useDispatch } from 'react-redux';\nimport { useNavigate } from 'react-router-dom';\nimport { showAppAlert } from 'store/slices/appSlice';\nimport {\n MissingAgreementField,\n MissingProfileField,\n getIncompleteProfileFields,\n} from 'utils';\n\ntype CompleteProfileFormValues = {\n [key: string]:\n | FormPhoneNumberValue\n | TextareaInputValue\n | SelectareaInputValue\n | MultiSelectAreaInputValue\n | { fieldType: 'check'; value: string; name?: string }\n | DateFieldValue;\n};\n\nexport const CompleteProfilePage = () => {\n const navigate = useNavigate();\n // State\n const [loading, setLoading] = useState(false);\n const [checkedOrganizationAgreements, setCheckedOrganizationAgreements] =\n useState(false);\n const [isLoadingMissingFields, setIsLoadingMissingFields] =\n useState(false);\n const [modalOpen, setModalOpen] = useState(false);\n const [modalTitle, setModalTitle] = useState('');\n const [modalContent, setModalContent] = useState<\n SanityTextBlock[] | string\n >();\n\n // Hooks\n const { resetUserIdentity } = useMixpanelEvents();\n const { logout } = useAuth({ waitForAuthentication: true });\n const dispatch = useDispatch();\n\n // Base Language\n const { getBaseLanguage } = useSanityBaseLanguage({});\n const baseLanguage = getBaseLanguage();\n const sanityBaseLanguageOnboarding = baseLanguage.onboarding;\n const newProfileFields = sanityBaseLanguageOnboarding?.new_profile_fields;\n\n // Organization\n const organizationSlug = getSubDomain();\n const { organization } = useOrganization({ organizationSlug });\n const personalDetails = organization?.personal_details;\n const profileFieldText = baseLanguage.profile_fields;\n let formattedAgreements: CheckboxTextItemProps[] = [];\n let organizationName = organization?.basic_info.name;\n if (organizationName?.charAt(organizationName.length - 1) === 's') {\n organizationName = organizationName + \"'\";\n } else {\n organizationName = organizationName + \"'s\";\n }\n\n // Custom fields\n const { reqCustomFields } = useCustomFields({\n getSilently: false,\n forceRefresh: false,\n });\n\n // Profile\n const { getProfiles, reqProfiles } = useProfiles({});\n const profiles = getProfiles();\n const profile = profiles.at(0);\n\n const incompleteFields = useMemo(() => {\n if (!profile) return;\n setIsLoadingMissingFields(true);\n const fields = getIncompleteProfileFields({\n profile,\n sanityOrganization: organization as SanityOrganization,\n organizationAgreements: organization?.white_label.additional_agreements,\n });\n\n setIsLoadingMissingFields(false);\n\n return fields ?? [];\n }, []);\n\n // Logout\n const handleLogout = async () => {\n try {\n await logout({ logoutParams: { returnTo: getOrigin() } });\n resetUserIdentity();\n } catch (err) {\n console.error(err);\n }\n };\n\n const {\n control,\n handleSubmit,\n formState: { isValid },\n } = useForm({\n mode: 'onChange',\n });\n\n const onSubmit: SubmitHandler = async (\n data: CompleteProfileFormValues,\n ) => {\n setLoading(true);\n if (!profile) return;\n const {\n jobTitle,\n linkedInUrl,\n townOrCity,\n country,\n pronouns,\n gender,\n dateOfBirth,\n phoneNumber,\n ...customFields\n } = data;\n\n let dateOfBirthString;\n if (dateOfBirth && dateOfBirth?.value !== '') {\n dateOfBirthString =\n (dateOfBirth.value as Date).toISOString().split('T')[0] ?? '';\n }\n\n const profileData = {\n country: (country?.value as string) ?? undefined,\n phoneNumber: (phoneNumber?.value as string) ?? undefined,\n jobTitle: (jobTitle?.value as string) ?? undefined,\n townOrCity: (townOrCity?.value as string) ?? undefined,\n pronouns: (pronouns?.value as string) ?? undefined,\n gender: (gender?.value as string) ?? undefined,\n dateOfBirth: dateOfBirthString,\n linkedInUrl: (linkedInUrl?.value as string) ?? undefined,\n };\n\n const profilesResult = await reqProfiles({\n method: 'PATCH',\n url: `/profiles/${profile.id}`,\n data: profileData,\n });\n\n if (profilesResult.status === 'success' && profilesResult.data) {\n const customFieldsData = Object.values(customFields)\n .filter((field) => field.name)\n .map(({ fieldType, value, name }) => {\n return {\n fieldSlug: name,\n organizationSlug,\n fieldType,\n value,\n profileId: profile.id,\n };\n });\n\n missingAgreements?.forEach(({ agreementData: agreement }) => {\n const regex = /[^A-Za-z0-9]/g;\n const validatedAgreementName =\n agreement?.agreement_name?.current.replaceAll(regex, '');\n\n customFieldsData.push({\n fieldSlug: `${validatedAgreementName}-${agreement?._key}`,\n organizationSlug,\n fieldType: 'check',\n value: 'true',\n profileId: profile.id,\n });\n });\n\n const customFieldsResult = await reqCustomFields({\n method: 'POST',\n url: `/customfields`,\n data: [...customFieldsData] as ICustomField[],\n });\n\n if (customFieldsResult.status === 'error') {\n dispatch(\n showAppAlert({\n severity: 'error',\n message: customFieldsResult.message,\n timeout: 2000,\n }),\n );\n setLoading(false);\n } else {\n navigate('/dashboard');\n setLoading(false);\n }\n } else {\n dispatch(\n showAppAlert({\n severity: 'error',\n message: 'Error creating profile',\n timeout: 2000,\n }),\n );\n }\n setLoading(false);\n };\n const genders: DropdownItemProps[] = Object.entries(\n profileFieldText.gender.options,\n ).map(([key, label]) => {\n return {\n key,\n value: key,\n label,\n };\n });\n\n if (isLoadingMissingFields)\n return (\n \n \n \n \n \n );\n\n if (!incompleteFields) return <>;\n\n const missingAgreements = incompleteFields.filter(\n (field) => typeof field === 'object' && field.type === 'agreement',\n ) as MissingAgreementField[];\n\n const missingProfileFields = incompleteFields.filter(\n (field) => typeof field === 'object' && field.type !== 'agreement',\n ) as MissingProfileField[];\n\n const missingPersonalFields = incompleteFields.filter(\n (field) => typeof field === 'string',\n ) as string[];\n\n // Agreements\n function handleModalOpen(title: string, content: SanityTextBlock[] | string) {\n setModalOpen(true);\n setModalContent(content);\n setModalTitle(title);\n }\n\n function closeModal() {\n setModalOpen(false);\n setModalContent(undefined);\n setModalTitle('');\n }\n\n missingAgreements.forEach(({ agreementData: agreement }, index) => {\n if (missingAgreements && agreement) {\n if (\n index === missingAgreements?.length - 1 &&\n missingAgreements?.length > 1\n ) {\n formattedAgreements.push({ text: ' & ' });\n formattedAgreements.push({\n text: agreement.name,\n onClick: () => handleModalOpen(agreement.name, agreement.content),\n });\n return;\n } else {\n formattedAgreements.push({\n text: agreement.name,\n onClick: () => handleModalOpen(agreement.name, agreement.content),\n });\n return;\n }\n }\n return undefined;\n });\n\n // Countries\n const countryList: DropdownItemProps[] = getCountryList({\n countryCode: 'GB',\n languageCode: 'en',\n }).map(({ key, countryName }) => ({\n key,\n label: countryName,\n value: key,\n }));\n\n return (\n \n \n \n \n {missingPersonalFields.includes('pronouns') && (\n \n )}\n {missingPersonalFields.includes('gender') && (\n \n )}\n {missingPersonalFields.includes('jobTitle') && (\n \n )}\n {missingPersonalFields.includes('linkedInUrl') && (\n \n )}\n {missingPersonalFields.includes('phoneNumber') && (\n \n )}\n {missingPersonalFields.includes('townOrCity') && (\n \n )}\n {missingPersonalFields.includes('country') && (\n \n )}\n {missingProfileFields.map(({ type, fieldData: field }) => {\n const fieldOptions: DropdownItemProps[] | undefined =\n field?.options?.map((option: any) => {\n return {\n key: option.id.current,\n value: option.id.current,\n label: option.label,\n };\n });\n\n if (type === 'free-text' && field) {\n return (\n \n );\n } else if (type === 'select' && field && fieldOptions) {\n return (\n \n );\n } else if (type === 'multi-select' && field && fieldOptions) {\n return (\n \n );\n } else {\n return <>;\n }\n })}\n {missingAgreements?.length !== 0 && (\n \n setCheckedOrganizationAgreements(!checkedOrganizationAgreements)\n }\n text={[\n {\n text:\n baseLanguage.legal_notices.i_agree_to_legals_label +\n ' ' +\n organizationName,\n },\n ...formattedAgreements,\n ]}\n />\n )}\n \n \n \n \n \n \n {typeof modalContent === 'string' ? (\n {modalContent}\n ) : (\n \n )}\n \n \n \n );\n};\n","import {\n DashboardResourcesContainer,\n DashboardWrapper,\n OpenMatchingProfileContainer,\n ProgramMembershipsContainer,\n} from 'containers';\nimport { HeroSectionContainer } from 'containers/dashboard/HeroSectionContainer';\n\nexport const DashboardPage = () => {\n return (\n \n \n \n \n \n \n );\n};\n","import React from 'react';\nimport { NotFound } from 'components/NotFound';\nimport { useNavigate, useSearchParams } from 'react-router-dom';\nimport { GenericError } from 'components';\n\ninterface IErrorPageProps {\n error?: 401 | 402 | 403 | 404 | 500;\n message?: string;\n}\n\nexport const ErrorPage: React.FC = ({\n error = 404,\n message,\n}) => {\n // Route\n const navigate = useNavigate();\n const [searchParams] = useSearchParams();\n const urlErrorParam = searchParams.get('error');\n const urlErrorMessageParam = searchParams.get('message');\n\n const urlErrorCode = urlErrorParam && parseInt(urlErrorParam);\n\n const errorCode = urlErrorCode ?? error;\n const errorMessage = urlErrorMessageParam ?? message;\n\n const handleRedirect = () => {\n navigate('/');\n };\n\n if (errorCode === 404) {\n return ;\n } else {\n return (\n \n );\n }\n};\n\nexport default ErrorPage;\n","export const HelpPage = () => {\n return <>Help Component Stub;\n};\n\nexport default HelpPage;\n","// internal\nimport React, { useEffect } from 'react';\nimport { useAuth } from '@guider-global/auth-hooks';\n\n// store\nimport { selectRegistrationType, showNavbar } from 'store/slices/appSlice';\nimport { OrganizationLandingPage } from 'pages/LandingPage/OrganizationLandingPage';\nimport { useNavigate } from 'react-router-dom';\nimport { useAppDispatch, useAppSelector } from 'store/hooks';\nimport { useSanityOrganization } from '@guider-global/sanity-hooks';\nimport { getSubDomain } from '@guider-global/front-end-utils';\n\nexport const HomePage = () => {\n const dispatch = useAppDispatch();\n const organizationSlug = getSubDomain();\n\n const registrationPageType = useAppSelector(selectRegistrationType);\n\n const { getOrganization, isSuccessSanityOrganization } =\n useSanityOrganization({ organizationSlug, getSilently: false });\n const sanityOrganization = getOrganization();\n const isSanityOrganizationSuccess = isSuccessSanityOrganization();\n const isLandingPageEnabled =\n sanityOrganization?.landing_page?.enable_landing_page;\n\n // Route\n const navigate = useNavigate();\n\n const { isLoading, isAuthenticated } = useAuth({});\n\n useEffect(() => {\n if (isLandingPageEnabled) {\n dispatch(showNavbar(true));\n }\n if (\n !isLandingPageEnabled &&\n !isAuthenticated &&\n !isLoading &&\n isSanityOrganizationSuccess\n ) {\n if (\n registrationPageType === 'localAccounts' ||\n registrationPageType === 'localAccountsAndSSO'\n ) {\n navigate('/register/account');\n } else {\n navigate('/login');\n }\n }\n if (isAuthenticated && !isLoading) {\n navigate('/dashboard');\n }\n }, [\n dispatch,\n isAuthenticated,\n isLandingPageEnabled,\n isLoading,\n isSanityOrganizationSuccess,\n navigate,\n registrationPageType,\n ]);\n\n if (isLoading) return null;\n\n return isAuthenticated ? null : ;\n};\n","/* eslint-disable camelcase */\n// external\nimport React, {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { Box, Button, useScrollTrigger } from '@mui/material';\nimport { useNavigate } from 'react-router-dom';\nimport { INavbarLink } from 'containers';\n// components\nimport {\n OrganizationLandingPageHero,\n LandingPageContent,\n} from 'components/LandingPage';\nimport { AnimationWrapper } from 'components/AnimationWrapper';\n\n// Hooks\nimport { useAppDispatch, useAppSelector } from 'store/hooks';\n\n// store\nimport {\n hideNavbar,\n selectRegistrationType,\n setNavbarUnauthenticatedActions,\n} from 'store/slices/appSlice';\n\n// types\n\nimport { getSubDomain } from '@guider-global/front-end-utils';\nimport {\n useSanityBaseLanguage,\n useSanityOrganization,\n} from '@guider-global/sanity-hooks';\nimport { useMobileMediaQuery } from 'hooks';\n\nexport const OrganizationLandingPage: React.FC = () => {\n // Route\n const navigate = useNavigate();\n // Redux\n\n const dispatch = useAppDispatch();\n const registrationPageType = useAppSelector(selectRegistrationType);\n const showLoginButtons = registrationPageType !== 'none';\n\n const organizationSlug = getSubDomain();\n\n // Hooks\n // useSanityOrganization\n const { getOrganization, isSuccessSanityOrganization } =\n useSanityOrganization({ organizationSlug, getSilently: false });\n const sanityOrganization = getOrganization();\n const isSanityOrganizationSuccess = isSuccessSanityOrganization();\n const organizationLandingPage = sanityOrganization.landing_page;\n // useSanityBaseLanguage\n const { getBaseLanguage } = useSanityBaseLanguage({});\n const baseLanguage = getBaseLanguage();\n const baseLanguageNavigation = baseLanguage.navigation;\n\n const handleLogin = useCallback(() => {\n navigate('/login');\n }, [navigate]);\n const handleRegister = useCallback(\n () => navigate('/register/account'),\n [navigate],\n );\n\n // Styling\n const isMobile = useMobileMediaQuery();\n const isEnabled = organizationLandingPage?.enable_landing_page;\n const [heroHeight, setHeroHeight] = useState(0);\n const contentRef = useRef(null);\n\n const heroConfig = useMemo(\n () => organizationLandingPage?.hero,\n [organizationLandingPage],\n );\n\n const bottomButtonTrigger = useScrollTrigger({\n disableHysteresis: true,\n threshold: heroHeight,\n });\n\n useEffect(() => {\n if (!baseLanguageNavigation) return;\n const organizationUnauthenticatedActions: INavbarLink[] = [\n {\n label: baseLanguageNavigation?.login_button_label,\n action: handleLogin,\n type: 'button',\n variant: 'outlined',\n dataCy: 'navbar-login-button',\n },\n {\n label: baseLanguageNavigation?.register_button_label,\n action: handleRegister,\n type: 'button',\n variant: 'contained',\n color: 'info',\n dataCy: 'navbar-unauthenticated-register-button',\n },\n ];\n dispatch(\n setNavbarUnauthenticatedActions(organizationUnauthenticatedActions),\n );\n }, [baseLanguageNavigation, dispatch, handleLogin, handleRegister]);\n\n useEffect(() => {\n if (!isEnabled && isSanityOrganizationSuccess) {\n dispatch(hideNavbar(true));\n if (\n registrationPageType === 'localAccounts' ||\n registrationPageType === 'localAccountsAndSSO'\n ) {\n handleRegister();\n } else {\n handleLogin();\n }\n }\n }, [\n dispatch,\n handleLogin,\n handleRegister,\n isEnabled,\n isSanityOrganizationSuccess,\n registrationPageType,\n ]);\n\n const shouldShowBottomButton = isMobile && bottomButtonTrigger;\n\n const handleLearnMoreClick = () => {\n contentRef?.current &&\n contentRef.current.scrollIntoView({ behavior: 'smooth' });\n };\n\n if (!isEnabled) {\n return <>;\n }\n\n return (\n \n {heroConfig && (\n \n )}\n\n \n {isMobile && heroConfig && (\n \n \n {showLoginButtons && (\n \n {heroConfig.button_1_label}\n \n )}\n \n \n )}\n \n );\n};\n","/* eslint-disable camelcase */\n\n// external\nimport React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { Box, Button, useScrollTrigger } from '@mui/material';\nimport { useLocation, useNavigate, useParams } from 'react-router-dom';\nimport { useAuth } from '@guider-global/auth-hooks';\n\n// components\nimport {\n LandingPageContent,\n ProgramLandingPageHero,\n} from 'components/LandingPage';\nimport { AnimationWrapper } from 'components/AnimationWrapper';\n\n// store\nimport {\n selectRegistrationType,\n setNavbarUnauthenticatedActions,\n showNavbar,\n} from 'store/slices/appSlice';\nimport { useAppDispatch, useAppSelector } from 'store/hooks';\n\n// types\nimport { INavbarLink } from 'containers';\nimport { ICustomField, URLQueryParams } from '@guider-global/shared-types';\nimport { useSanityOrganizationPrograms } from '@guider-global/sanity-hooks';\nimport {\n useMemberships,\n useMixpanelEvents,\n useMobileMediaQuery,\n useProfiles,\n useTrackEvent,\n} from 'hooks';\nimport {\n getSubDomain,\n getAuthorizedProgramsList,\n} from '@guider-global/front-end-utils';\n\nexport const ProgramLandingPage: React.FC = () => {\n const organizationSlug = getSubDomain();\n // Auth\n const { isAuthenticated, isLoading: isLoadingAuth } = useAuth({\n waitForAuthentication: true,\n });\n // Router\n const navigate = useNavigate();\n const location = useLocation();\n const pathname = location.pathname;\n // Hooks\n const { programSlug = '' } = useParams<{\n programSlug: string;\n }>();\n\n // Tracker\n const { trackMixpanelEvent } = useMixpanelEvents({});\n useTrackEvent({\n track: {\n eventKey: 'program-landing-page-viewed',\n eventParams: {\n organization: { organizationSlug },\n program: { organizationSlug, programSlug },\n },\n },\n if: isAuthenticated,\n });\n\n const { getProgram, isLoadingSanityPrograms } = useSanityOrganizationPrograms(\n {},\n );\n const program = getProgram(programSlug);\n\n const programLandingPage = program?.landing_page;\n const isUnauthorizedAccessAllowed =\n programLandingPage?.unauthorized_access_allowed;\n\n const programDetails = program?.program_details ?? '';\n const guideCta =\n programLandingPage?.hero?.guide_cta?.cta_button_label ?? 'Be a Mentor';\n const traineeCta =\n programLandingPage?.hero?.trainee_cta?.cta_button_label ?? 'Find a Mentor';\n\n // Profiles\n const { getProfiles, isLoadingProfiles } = useProfiles({});\n const [profile] = getProfiles();\n const profileOrganizationFields = profile?.organizationFields as\n | ICustomField[]\n | undefined;\n\n // Memberships\n const { memberships: getMemberships, isLoadingMemberships } = useMemberships(\n {},\n );\n const memberships = getMemberships();\n const usersProgramSlugs = memberships.map((membership) => {\n return membership.programSlug;\n });\n\n const isLoading =\n isLoadingAuth ||\n isLoadingSanityPrograms() ||\n isLoadingProfiles() ||\n isLoadingMemberships();\n // Redux\n const dispatch = useAppDispatch();\n const registrationPageType = useAppSelector(selectRegistrationType);\n const showLoginButtons = registrationPageType !== 'none';\n\n // Styling\n const isMobile = useMobileMediaQuery();\n const [heroHeight, setHeroHeight] = useState(0);\n\n const handleRegister = useCallback(\n (redirectUrl?: string) => {\n const to = redirectUrl\n ? `/register/account?${URLQueryParams.REDIRECT}=${redirectUrl}`\n : '/register/account';\n navigate(to);\n },\n [navigate],\n );\n const handleGuideRegister = useCallback(() => {\n navigate(`join/guide`);\n trackMixpanelEvent('Navigation - Be a Guide');\n }, [navigate, trackMixpanelEvent]);\n const handleTraineeRegister = useCallback(() => {\n navigate(`join/trainee`);\n trackMixpanelEvent('Navigation - Be a Trainee');\n }, [navigate, trackMixpanelEvent]);\n\n const handleProgramButtons = useCallback(\n (isGuide?: boolean, pathname?: string) => {\n if (!isAuthenticated) {\n const removeTrailingSlash = pathname?.endsWith('/')\n ? pathname.slice(0, -1)\n : pathname;\n const redirectURL = isGuide\n ? `${removeTrailingSlash}/join/guide`\n : `${removeTrailingSlash}/join/trainee`;\n handleRegister(redirectURL);\n return;\n }\n if (isGuide) {\n handleGuideRegister();\n return;\n }\n handleTraineeRegister();\n },\n [\n handleGuideRegister,\n handleRegister,\n handleTraineeRegister,\n isAuthenticated,\n ],\n );\n\n useEffect(() => {\n dispatch(showNavbar(true));\n const programUnauthenticatedActions: INavbarLink[] = [\n {\n label: guideCta,\n action: () => handleProgramButtons(true, pathname),\n type: 'button',\n variant: 'contained',\n color: 'secondary',\n textColor: 'white',\n dataCy: 'pages_LandingPage_ProgramLandingPage_guide-register-button',\n },\n {\n label: traineeCta,\n action: () => handleProgramButtons(false, pathname),\n type: 'button',\n variant: 'contained',\n color: 'info',\n dataCy: 'pages_LandingPage_ProgramLandingPage_trainee-register-button',\n },\n ];\n\n dispatch(setNavbarUnauthenticatedActions(programUnauthenticatedActions));\n }, [\n dispatch,\n handleRegister,\n guideCta,\n traineeCta,\n handleProgramButtons,\n pathname,\n ]);\n\n const userMemberOfProgram = usersProgramSlugs.includes(\n program?.metadata.id.current ?? '',\n );\n\n const authorizedPrograms =\n program && profileOrganizationFields\n ? getAuthorizedProgramsList({\n programs: [program],\n profileOrganizationFields,\n })\n : [];\n\n const userAuthorizedForProgram = userMemberOfProgram\n ? program\n : authorizedPrograms.find(\n (authorizedProgram) =>\n authorizedProgram.metadata.id.current ===\n program?.metadata.id.current,\n );\n\n useEffect(() => {\n if (!isLoading && isAuthenticated && !userAuthorizedForProgram && program) {\n navigate(`/programs/${programSlug}`);\n return;\n }\n if (\n program &&\n !isLoading &&\n !isUnauthorizedAccessAllowed &&\n !isAuthenticated\n ) {\n navigate('/');\n }\n }, [\n isAuthenticated,\n isLoading,\n isUnauthorizedAccessAllowed,\n navigate,\n program,\n userAuthorizedForProgram,\n programSlug,\n ]);\n\n const heroConfig = useMemo(\n () => programLandingPage?.hero,\n [programLandingPage],\n );\n\n const bottomButtonTrigger = useScrollTrigger({\n disableHysteresis: true,\n threshold: heroHeight,\n });\n\n const shouldShowBottomButton = isMobile && bottomButtonTrigger;\n\n if (!isUnauthorizedAccessAllowed && !userAuthorizedForProgram && program) {\n return null;\n }\n\n if (!program) {\n return <>;\n }\n\n return (\n \n {heroConfig && programDetails && (\n \n )}\n {programLandingPage?.content && (\n \n )}\n {isMobile && heroConfig && (\n \n \n {showLoginButtons && (\n <>\n handleProgramButtons(true, pathname)}\n >\n {heroConfig?.guide_cta?.cta_button_label}\n \n handleProgramButtons(true, pathname)}\n >\n {heroConfig?.trainee_cta?.cta_button_label}\n \n \n )}\n \n \n )}\n \n );\n};\n"],"names":["CompleteProfilePage","navigate","loading","setLoading","useState","checkedOrganizationAgreements","setCheckedOrganizationAgreements","isLoadingMissingFields","setIsLoadingMissingFields","modalOpen","setModalOpen","modalTitle","setModalTitle","modalContent","setModalContent","resetUserIdentity","logout","useAuth","waitForAuthentication","dispatch","useDispatch","getBaseLanguage","useSanityBaseLanguage","baseLanguage","sanityBaseLanguageOnboarding","onboarding","newProfileFields","new_profile_fields","organizationSlug","getSubDomain","organization","useOrganization","personalDetails","personal_details","profileFieldText","profile_fields","formattedAgreements","organizationName","basic_info","name","charAt","length","reqCustomFields","getSilently","forceRefresh","getProfiles","reqProfiles","profile","at","incompleteFields","useMemo","fields","sanityOrganization","organizationAgreements","white_label","additional_agreements","control","handleSubmit","formState","isValid","mode","genders","Object","entries","gender","options","map","key","label","value","direction","justifyContent","width","xs","md","pb","pt","missingAgreements","filter","field","type","missingProfileFields","missingPersonalFields","handleModalOpen","title","content","closeModal","forEach","agreementData","agreement","index","push","text","onClick","countryList","getCountryList","countryCode","languageCode","countryName","size","heading","subtitles","description","component","onSubmit","data","_b","_c","_d","_e","_f","_g","_h","_i","_a","jobTitle","linkedInUrl","townOrCity","country","pronouns","dateOfBirth","phoneNumber","customFields","dateOfBirthString","toISOString","split","profileData","profilesResult","method","url","id","status","customFieldsData","values","fieldType","fieldSlug","profileId","validatedAgreementName","agreement_name","current","replaceAll","_key","customFieldsResult","severity","message","timeout","gap","includes","rows","custom_label","pronouns_input_label","labelSize","placeholder","errorMessage","globals","errors","required_field","gender_input_label","job_title","job_title_input_label","linkedin_url","input_label","validationErrorMessage","validation_error_blank","fieldName","phone_number_input_label","initialCountry","town_or_city","town_or_city_input_label","country_input_label","fieldData","fieldOptions","option","tooltipText","assistive_text","required","free_text_config","text_area_size","isChecked","onChange","legal_notices","i_agree_to_legals_label","variant","common","continue_button_label","color","disabled","logoutParams","returnTo","getOrigin","err","console","error","logout_button_label","open","onClose","primaryButtonProps","close_button_label","paperSx","sm","mx","px","DashboardPage","ErrorPage","searchParams","useSearchParams","urlErrorParam","get","urlErrorMessageParam","urlErrorCode","parseInt","handleRedirect","code","visible","overlay","action","onclick","HelpPage","HomePage","registrationPageType","getOrganization","isSuccessSanityOrganization","useSanityOrganization","isSanityOrganizationSuccess","isLandingPageEnabled","landing_page","enable_landing_page","isLoading","isAuthenticated","useEffect","OrganizationLandingPage","showLoginButtons","organizationLandingPage","baseLanguageNavigation","navigation","handleLogin","useCallback","handleRegister","isMobile","isEnabled","heroHeight","setHeroHeight","contentRef","useRef","heroConfig","hero","bottomButtonTrigger","disableHysteresis","threshold","organizationUnauthenticatedActions","login_button_label","dataCy","register_button_label","shouldShowBottomButton","sx","backgroundColor","config","handleLearnMoreClick","scrollIntoView","behavior","onClickRegisterButton","ref","display","alignItems","position","bottom","zIndex","externalTrigger","slideDirection","backdropFilter","p","maxWidth","button_1_label","ProgramLandingPage","isLoadingAuth","pathname","programSlug","trackMixpanelEvent","track","eventKey","eventParams","program","if","getProgram","isLoadingSanityPrograms","useSanityOrganizationPrograms","programLandingPage","isUnauthorizedAccessAllowed","unauthorized_access_allowed","programDetails","program_details","guideCta","guide_cta","cta_button_label","traineeCta","trainee_cta","isLoadingProfiles","profileOrganizationFields","organizationFields","memberships","getMemberships","isLoadingMemberships","usersProgramSlugs","membership","redirectUrl","to","URLQueryParams","handleGuideRegister","handleTraineeRegister","handleProgramButtons","isGuide","removeTrailingSlash","endsWith","slice","programUnauthenticatedActions","textColor","userMemberOfProgram","metadata","authorizedPrograms","getAuthorizedProgramsList","programs","userAuthorizedForProgram","find","authorizedProgram","useScrollTrigger","Box","onClickProgramButtons","LandingPage","AnimationWrapper","Button"],"sourceRoot":""}