{"version":3,"file":"static/js/app-38e054b8_a2b8501b17e925d13247.js","mappings":"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","sources":["file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipDetails/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipDetailsGroupSidebar/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipDetailsSidebar/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipGoals/RelationshipGoalsCreate/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipGoals/RelationshipGoalsEdit/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipGoals/RelationshipGoalsManage/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipGoals/RelationshipGoalsView/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipGoals/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipGroupAlert/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipsConclude/RelationshipsConcludeDialog/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipsConclude/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipHeader/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipItem/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipNotes/RelationshipNotesCreate/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipNotes/RelationshipNotesEmpty/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipNotes/RelationshipNotesList/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipNotes/RelationshipNotesView/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipNotes/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipSessions/RelationshipSessionsCreate/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipSessions/RelationshipSessionsEdit/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipSessions/RelationshipSessionsHistory/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipSessions/RelationshipSessionsIntegrate/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipSessions/RelationshipSessionsLog/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipSessions/RelationshipSessionsView/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipSessions/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipViewProfileModal/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipViewProfile/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipsArchivedList/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipsEmpty/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipsList/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/RelationshipsWrapper/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/SanityIcon/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/ScrollToTop/index.ts","file:////home/runner/work/platform/platform/apps/front-end/src/components/Sessions/SessionsDetails/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Settings/SettingsContainer/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Settings/SettingsDescription/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Settings/SettingsSubheader/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/SetupWrapper/index.tsx"],"sourcesContent":["// external\nimport { Box, Collapse } from '@mui/material';\nimport React, { useCallback, useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\n// components\nimport {\n Chat,\n RelationshipDetailsGroupSidebar,\n RelationshipDetailsSidebar,\n RelationshipHeader,\n} from 'components';\n\n// store\nimport { RootState } from 'store';\nimport { hideNavbar, showNavbar } from 'store/slices/appSlice';\n\n// hooks\nimport { useMixpanelEvents, useMobileMediaQuery, useProfiles } from 'hooks';\n\n// types\nimport {\n getISOStringWithoutMilliseconds,\n getSubDomain,\n} from '@guider-global/front-end-utils';\nimport {\n useOrganization,\n useSanityBaseLanguage,\n useSanityOrganizationPrograms,\n} from '@guider-global/sanity-hooks';\nimport {\n EProgramVariation,\n IProfile,\n IRelationship,\n Program,\n} from '@guider-global/shared-types';\nimport { interpolate } from 'functions';\nimport { RelationshipGroupTraineeModal } from 'modals/Relationship/RelationshipGroup';\nimport { getRecipients } from 'utils/getRelationshipRecipients';\n\ninterface IRelationshipDetailsProps {\n relationship: IRelationship;\n}\n\nexport const RelationshipDetails: React.FC = ({\n relationship,\n}) => {\n const dispatch = useDispatch();\n const traineeModal = useSelector(\n (state: RootState) => state.app.modals.traineeModal,\n );\n\n const organizationSlug = getSubDomain();\n\n const programSlug = relationship?.programSlug ?? undefined;\n\n // Base Language\n const { getBaseLanguage } = useSanityBaseLanguage({});\n const baseLanguage = getBaseLanguage();\n\n const { trackMixpanelEvent } = useMixpanelEvents();\n\n const { getProfiles } = useProfiles({ getSilently: false });\n const [profile] = getProfiles();\n const profileId = profile.id;\n const userId = profile.userId;\n\n const isMobile = useMobileMediaQuery();\n\n const [isSidebarOpen, setIsSidebarOpen] = useState(false);\n\n useEffect(() => {\n if (isMobile) {\n dispatch(hideNavbar(true));\n } else {\n dispatch(showNavbar(true));\n }\n\n return function cleanup() {\n dispatch(showNavbar(true));\n };\n }, [dispatch, isMobile]);\n\n const guideProfiles = relationship?.guideProfiles as Partial[];\n const traineeProfiles = relationship?.traineeProfiles as Partial[];\n\n const guideProfilesIds = guideProfiles?.map(\n (guideProfile) => guideProfile?.id,\n );\n const traineeProfilesIds = traineeProfiles?.map(\n (traineeProfile) => traineeProfile?.id,\n );\n\n const isGuide = guideProfilesIds?.includes(profileId) ?? false;\n const isTrainee = traineeProfilesIds?.includes(profileId) ?? false;\n\n const chosenGuide = guideProfiles?.at(0);\n const guideUser = relationship?.users?.find(\n (user) => user?.id === chosenGuide?.userId,\n );\n\n const isGroupProgram =\n relationship?.programVariationTypeSlug === EProgramVariation.Group;\n const guideMembership = relationship?.guideMemberships?.at(0);\n\n const isNotLiveGroup = guideMembership?.isPublished === true;\n\n const isTraineeModalOpen = isTrainee && traineeModal;\n\n // - Programs\n const { getProgram } = useSanityOrganizationPrograms({});\n\n const { organization } = useOrganization({ organizationSlug });\n\n let program: Program | undefined;\n let programType;\n\n if (programSlug) {\n program = getProgram(programSlug);\n programType = program?.program_details?.program_type;\n } else {\n programType = organization?.open_matching?.program_type;\n }\n\n const relationshipCreatedAt = relationship.createdAt;\n\n const recipients = getRecipients({\n role: isGuide ? 'guide' : 'trainee',\n relationship,\n userId,\n });\n\n const handleMessageSend = useCallback(async () => {\n trackMixpanelEvent('Relationship - Message sent', {\n 'Sent on': getISOStringWithoutMilliseconds(),\n Role: isGuide ? 'guide' : 'trainee',\n Program: relationship.programSlug,\n });\n }, [isGuide, relationship.programSlug, trackMixpanelEvent]);\n\n useEffect(() => {\n if (!program || !recipients) return;\n trackMixpanelEvent('Relationship - Viewed', {\n 'Viewed on': getISOStringWithoutMilliseconds(),\n Program: relationship.programSlug,\n });\n }, [program, recipients, relationship.programSlug, trackMixpanelEvent]);\n\n const programVariation =\n programType?.program_type_text?.variations?.individual;\n\n const programName = program?.metadata.program_name;\n\n const recipient = recipients.at(0);\n\n return (\n \n \n \n \n \n {!!relationship && (\n \n )}\n \n \n \n {isGroupProgram ? (\n \n ) : (\n \n )}\n \n \n {!isGuide && (\n \n )}\n \n );\n};\n\nexport default RelationshipDetails;\n","// external\nimport {\n Avatar,\n Box,\n Chip,\n ChipProps,\n Divider,\n Drawer,\n Typography,\n useTheme,\n} from '@mui/material';\nimport React, { useEffect, useState } from 'react';\nimport { useNavigate } from 'react-router-dom';\n\n// components\nimport {\n RelationshipGroupAlert,\n RelationshipSessions,\n RelationshipViewProfileModal,\n} from 'components';\n\n// types\nimport {\n useSanityBaseLanguage,\n useSanityOrganizationPrograms,\n} from '@guider-global/sanity-hooks';\nimport {\n IMembership,\n IRelationship,\n ISkill,\n} from '@guider-global/shared-types';\n\nimport { useProfileImage } from '@guider-global/azure-storage-hooks';\nimport {\n Button,\n MultiAvatarButton,\n Stack,\n Text,\n hexToRGB,\n} from '@guider-global/ui';\nimport {\n MembershipDataProps,\n ProfilePreviewProfileData,\n} from 'components/ProfilePreview';\nimport { useMobileMediaQuery } from 'hooks';\nimport { RelationshipGroupMembersModal } from 'modals';\n\ninterface IRelationshipDetailsGroupSidebarProps {\n relationship: IRelationship;\n isGroupProgram: boolean;\n isGuide: boolean;\n}\n\nexport const RelationshipDetailsGroupSidebar: React.FC<\n IRelationshipDetailsGroupSidebarProps\n> = ({ relationship, isGroupProgram, isGuide }) => {\n const navigate = useNavigate();\n const theme = useTheme();\n const isMobile = useMobileMediaQuery();\n const { getBaseLanguage } = useSanityBaseLanguage({});\n const baseLanguage = getBaseLanguage();\n const { getProfileImage } = useProfileImage();\n\n const [selectedUserId, setSelectedUserId] = useState();\n\n const [groupMembersModalOpen, setGroupMembersModalOpen] = useState(false);\n const handleGroupMembersModalClose = () => {\n setGroupMembersModalOpen(false);\n };\n\n const { getProgram } = useSanityOrganizationPrograms({});\n\n const programSlug = relationship?.programSlug;\n const program = programSlug ? getProgram(programSlug) : undefined;\n\n useEffect(() => {\n const programSlug = relationship?.programSlug;\n if (!programSlug || !program) {\n navigate('/relationships');\n }\n }, [navigate, program, relationship?.programSlug]);\n\n if (!programSlug || !program) {\n return <>;\n }\n\n const guideMembership = relationship.guideMemberships?.at(0);\n const isActiveGroup = guideMembership?.isPublished === false;\n\n const programTypeGuideNoun =\n program?.program_details?.program_type?.program_type_text.common?.noun;\n\n const skillsConfig = program?.registration?.skills;\n const isSkillsEnabled = skillsConfig?.enable_skills_question;\n\n const guideMembershipData = relationship?.guideMemberships?.at(0);\n const skills = guideMembershipData?.skills as Partial[];\n\n const modalTitle = baseLanguage.relationships?.view_profile_modal?.title;\n const modalCloseButtonLabel =\n baseLanguage.globals?.common?.close_button_label ?? 'Close';\n\n const handleProfileModalClose = () => {\n setSelectedUserId(undefined);\n setGroupMembersModalOpen(true);\n };\n const handleProfileModalOpen = (userId?: string) => {\n setSelectedUserId(userId);\n handleGroupMembersModalClose();\n };\n\n const getSelectedProfileData = (\n selectedUserId?: string,\n ): ProfilePreviewProfileData => {\n const guideProfiles = relationship.guideProfiles ?? [];\n const traineeProfiles = relationship.traineeProfiles ?? [];\n const profiles = [...guideProfiles, ...traineeProfiles];\n const users = relationship.users ?? [];\n\n const selectedProfile = profiles.find(\n (profile) => profile.userId === selectedUserId,\n );\n\n const selectedProfileUserId = selectedProfile?.userId;\n\n const selectedUser = users.find(\n (user) => user.id === selectedProfileUserId,\n );\n return {\n ...selectedProfile,\n pictures: {\n profile: selectedProfile?.picture,\n user: selectedUser?.picture,\n },\n };\n };\n\n const getSelectedProfileMembershipData = (\n selectedUserId?: string,\n ): MembershipDataProps => {\n const guideMemberships = relationship.guideMemberships ?? [];\n const traineeMemberships = relationship.traineeMemberships ?? [];\n const memberships = [...guideMemberships, ...traineeMemberships];\n\n const selectedMembership = memberships.find(\n (membership) => membership.userId === selectedUserId,\n );\n\n const skillFieldSlugs = selectedMembership?.skills?.map((skill) => {\n const skillTyped = skill as ISkill;\n return skillTyped.fieldSlug;\n });\n return {\n skills: skillFieldSlugs ?? [],\n membership: selectedMembership ? [selectedMembership as IMembership] : [],\n };\n };\n const getSelectedRelationshipRole = (selectedUserId?: string) => {\n const guideProfile = relationship.guideProfiles?.find(\n (guideProfile) => guideProfile.userId === selectedUserId,\n );\n if (guideProfile) return 'guide';\n return 'trainee';\n };\n\n const avatars =\n relationship.users?.map((user) => {\n const userId = user.id;\n const traineeProfile = relationship.traineeProfiles?.find(\n (traineeProfile) => traineeProfile.userId === userId,\n );\n const guideProfile = relationship.guideProfiles?.find(\n (guideProfile) => guideProfile.userId === userId,\n );\n const profilePicture = traineeProfile\n ? traineeProfile.picture\n : guideProfile?.picture;\n const userPicture = user.picture;\n return getProfileImage({\n profilePicture: profilePicture,\n userPicture: userPicture,\n });\n }) ?? [];\n\n const chipProps: Partial = {\n size: 'small',\n sx: {\n backgroundColor: `rgba(${hexToRGB(theme.palette.info.main)}, 0.08)`,\n mr: 1,\n mb: 1,\n },\n };\n\n const programName = program.metadata.program_name;\n return (\n \n {isMobile && (\n <>\n \n \n {programName}\n \n \n setGroupMembersModalOpen(!groupMembersModalOpen)}\n />\n \n \n \n \n )}\n \n \n \n \n {program.registration?.registration_group?.group_description\n .question_heading ??\n program.registration?.registration_group?.group_description\n .input_label}\n \n\n \n {relationship.description}\n \n {isSkillsEnabled && guideMembershipData?.skills && (\n \n \n {skillsConfig.guide.question_heading ??\n skillsConfig?.text?.input_label ??\n ''}\n \n \n {skills.map((skill, index) => (\n option.id.current === skill.fieldSlug,\n )?.label\n }\n {...chipProps}\n />\n ))}\n \n \n )}\n \n\n {relationship && (\n \n )}\n {relationship && (\n \n {relationship.guideProfiles?.map((guideProfile) => {\n const guideUser = relationship.users?.find(\n (user) => guideProfile.userId,\n );\n\n return (\n handleProfileModalOpen(guideProfile?.userId)}\n >\n \n \n \n \n );\n })}\n\n {relationship.traineeProfiles?.map((traineeProfile, index) => {\n const traineeUser = relationship.users?.find(\n (user) => traineeProfile.userId === user.id,\n );\n return (\n handleProfileModalOpen(traineeProfile.userId)}\n >\n \n\n \n \n );\n })}\n \n )}\n \n );\n};\n","// external\nimport { Divider, Drawer, Typography, useTheme } from '@mui/material';\nimport React from 'react';\n\n// components\nimport {\n RelationshipGoals,\n RelationshipNotes,\n RelationshipSessions,\n RelationshipViewProfile,\n} from 'components';\n\n// types\nimport { useSanityOrganizationPrograms } from '@guider-global/sanity-hooks';\nimport { IRelationship, Program } from '@guider-global/shared-types';\n\nimport { useMobileMediaQuery } from 'hooks';\n\ninterface IRelationshipDetailsSidebarProps {\n relationship: IRelationship;\n isGroupProgram: boolean;\n isGuide: boolean;\n}\n\nexport const RelationshipDetailsSidebar: React.FC<\n IRelationshipDetailsSidebarProps\n> = ({ relationship, isGroupProgram, isGuide }) => {\n const theme = useTheme();\n const isMobile = useMobileMediaQuery();\n\n const programSlug = relationship?.programSlug ?? undefined;\n\n const { getProgram } = useSanityOrganizationPrograms({});\n let program: Program | undefined;\n\n if (programSlug) {\n program = getProgram(programSlug);\n }\n\n const programName = program?.metadata?.program_name;\n return (\n \n {isMobile && programName && (\n <>\n \n {programName}\n \n \n \n )}\n \n \n \n \n \n );\n};\n\nexport default RelationshipDetailsSidebar;\n","// external\nimport React from 'react';\nimport { Control, SubmitHandler, useForm } from 'react-hook-form';\nimport { useNavigate } from 'react-router-dom';\n\n// internal\nimport { getSubDomain } from '@guider-global/front-end-utils';\nimport { GoalsCreateForm } from 'forms';\nimport { useGoals, useRelationships } from 'hooks';\n\n// types\nimport { IGoal, IRelationship } from '@guider-global/shared-types';\n\nimport { useSanityBaseLanguage } from '@guider-global/sanity-hooks';\n\nimport { ModalCard } from 'components';\nimport { IButtonAction } from 'components/ActionButton';\n\ninterface IRelationshipGoalsCreateProps {\n relationship: IRelationship;\n handleClose: () => void;\n}\n\nexport type IGoalInputs = {\n categorySlug: string;\n objective: string;\n outcomes: string;\n rationale: string;\n};\n\nexport const RelationshipGoalsCreate: React.FC<\n IRelationshipGoalsCreateProps\n> = ({ relationship, handleClose }) => {\n //baseLanguage\n const { getBaseLanguage } = useSanityBaseLanguage({});\n const baseLanguage = getBaseLanguage();\n\n //form\n const {\n handleSubmit,\n control,\n formState: { errors, isValid },\n } = useForm({ mode: 'onChange' });\n const typedControl: Control = control as unknown as Control;\n\n //hooks\n const navigate = useNavigate();\n const organizationSlug = getSubDomain();\n const { isLoadingGoals, reqGoals } = useGoals({});\n const { reqRelationships } = useRelationships({});\n\n //handlers\n const onSubmit: SubmitHandler = async (data) => {\n Object.assign(data, {\n status: 'on_track',\n organizationSlug,\n relationshipId: relationship.id,\n });\n\n const { data: goalsResponseData } = await reqGoals({\n method: 'POST',\n url: '/goals',\n data,\n });\n\n const currentGoalIds = relationship.goals?.map((goal) => goal.id) ?? [];\n\n const newGoalIds = goalsResponseData?.map((goal: IGoal) => goal.id) ?? [];\n\n await reqRelationships({\n method: 'PATCH',\n url: `/relationships/${relationship.id}`,\n // TODO typing needs fixing\n // @ts-ignore\n data: {\n goals: [...currentGoalIds, ...newGoalIds],\n },\n });\n\n await Promise.all([\n reqGoals({ url: '/goals' }),\n reqRelationships({ url: '/relationships' }),\n ]);\n\n navigate(`/relationships/${relationship.id}/goals`);\n };\n\n //modal actions\n const contentModalActions: IButtonAction | IButtonAction[] = [\n {\n label:\n baseLanguage?.relationships?.goals?.create_and_update_goal?.create_goal\n ?.discard_button_label,\n variant: 'outlined',\n color: 'info',\n action: () => navigate(-1),\n dataCyLabel:\n 'components_Relationships_RelationshipGoals_RelationshipGoalsCreate_navigation-button',\n },\n {\n label: baseLanguage?.globals?.goals?.create_goal_button_label,\n variant: 'contained',\n color: 'info',\n action: handleSubmit(onSubmit),\n isLoadingButton: true,\n disabled: !isValid,\n dataCyLabel:\n 'components_Relationships_RelationshipGoals_RelationshipGoalsCreate_submit-button',\n },\n ];\n\n return (\n \n navigate(-1)}\n hideButtons\n relationship={relationship}\n />\n \n );\n};\n","// external\nimport React, { useState } from 'react';\nimport { Control, SubmitHandler, useForm } from 'react-hook-form';\nimport { useNavigate, useParams } from 'react-router-dom';\n\n// components\nimport { IGoalInputs, ModalCard } from 'components';\nimport GoalsEditForm from 'forms/GoalsEditForm';\nimport { ConfirmationModal } from 'modals';\n\n// hooks\nimport { useGoals, useRelationships } from 'hooks';\n\n// types\nimport { useSanityBaseLanguage } from '@guider-global/sanity-hooks';\nimport { IRelationship } from '@guider-global/shared-types';\n\nimport { IButtonAction } from 'components/ActionButton';\n\ninterface IRelationshipGoalsEdit {\n relationship: IRelationship;\n handleClose: () => void;\n}\n\nexport const RelationshipGoalsEdit: React.FC = ({\n relationship,\n handleClose,\n}) => {\n //State\n const [isDiscardModalOpen, setIsDiscardModalOpen] = useState(false);\n\n //baseLanguage\n const { getBaseLanguage } = useSanityBaseLanguage({});\n const baseLanguage = getBaseLanguage();\n\n const discardChangesButtonLabel =\n baseLanguage.globals?.common?.discard_changes_button_label ??\n 'Discard Changes';\n\n //hooks\n const navigate = useNavigate();\n const { goalId } = useParams();\n\n //form\n const {\n handleSubmit,\n control,\n formState: { errors, isValid, isDirty },\n } = useForm({ mode: 'onChange' });\n\n //goals\n const { isLoadingGoals, reqGoals, goals } = useGoals({});\n const { reqRelationships } = useRelationships({ getSilently: false });\n\n const goal = goals?.find((goal) => goal.id === goalId);\n\n if (!goal?.createdAt) {\n return <>;\n }\n\n const typedControl: Control = control as unknown as Control;\n\n //handlers\n const onSubmit: SubmitHandler = async (data) => {\n const { data: goalsResponseData } = await reqGoals({\n method: 'PATCH',\n url: `/goals/${goalId}`,\n data,\n });\n\n await Promise.all([\n reqGoals({ url: '/goals' }),\n reqRelationships({ url: '/relationships' }),\n ]);\n\n if (!goalsResponseData) {\n return;\n }\n\n navigateBack();\n };\n\n const navigateBack = () => {\n navigate(-1);\n };\n\n const handleDiscardChanges = () => {\n if (!isDirty) {\n navigateBack();\n } else {\n setIsDiscardModalOpen(true);\n }\n };\n\n const handleDiscardModalClose = () => {\n setIsDiscardModalOpen(false);\n };\n\n //modal actions\n\n const contentModalActions: (IButtonAction | IButtonAction[])[] = [\n {\n label: baseLanguage.globals?.common?.go_back_button_label,\n variant: 'outlined',\n color: 'info',\n action: handleDiscardChanges,\n dataCyLabel:\n 'components_Relationships_RelationshipGoals_RelationshipGoalsEdit_edit-button',\n },\n {\n label: baseLanguage.globals?.common?.save_changes_button_label,\n variant: 'contained',\n color: 'info',\n disabled: !isValid || !isDirty,\n isLoadingButton: true,\n action: handleSubmit(onSubmit),\n dataCyLabel:\n 'components_Relationships_RelationshipGoals_RelationshipGoalsEdit_submit-button',\n },\n ];\n\n const discardModalActions: IButtonAction[] = [\n {\n label: baseLanguage.globals?.common?.cancel_button_label,\n action: handleDiscardModalClose,\n color: 'info',\n dataCyLabel:\n 'components_Relationships_RelationshipGoals_RelationshipGoalsEdit_discard-close-button',\n },\n {\n label: discardChangesButtonLabel,\n action: () => {\n navigateBack();\n },\n color: 'error',\n dataCyLabel:\n 'components_Relationships_RelationshipGoals_RelationshipGoalsEdit_disarc-confirm-button',\n },\n ];\n\n return (\n \n \n \n \n );\n};\n","// external\nimport { Box, Button, Typography, useTheme } from '@mui/material';\nimport React from 'react';\nimport { MdAdd } from 'react-icons/md';\nimport { useNavigate, useParams } from 'react-router-dom';\n\n// components\nimport { GoalsEmptyPageContent, GoalsItem, ModalCard } from 'components';\n\n// hooks\nimport { useGoals, useRelationships } from 'hooks';\n\n// types\nimport {\n useOrganization,\n useSanityBaseLanguage,\n useSanityOrganizationPrograms,\n} from '@guider-global/sanity-hooks';\nimport { IGoal, IRelationship } from '@guider-global/shared-types';\nimport { Divider } from '@guider-global/ui';\nimport { IButtonAction } from 'components/ActionButton';\nimport { getSubDomain } from '@guider-global/front-end-utils';\n\ninterface IRelationshipGoalsManageProps {\n relationship: IRelationship;\n handleClose: () => void;\n}\n\nexport const RelationshipGoalsManage: React.FC<\n IRelationshipGoalsManageProps\n> = ({ relationship, handleClose }) => {\n const { relationshipId = '' } = useParams<{\n relationshipId: string;\n }>();\n\n // Organization\n const organizationSlug = getSubDomain();\n const { organization } = useOrganization({\n organizationSlug,\n });\n //style\n const theme = useTheme();\n\n //baseLanguage\n const { getBaseLanguage } = useSanityBaseLanguage({});\n const baseLanguage = getBaseLanguage();\n\n //hooks\n\n const { reqRelationships, isLoadingRelationships } = useRelationships({});\n const navigate = useNavigate();\n\n const { reqGoals, isLoadingGoals } = useGoals({});\n\n // Get goals data\n\n const { getProgram } = useSanityOrganizationPrograms({});\n const program = getProgram(relationship.programSlug);\n\n const customGoalCategories =\n program?.registration?.goals?.custom_goal_categories?.map(\n (customCategory) => ({\n label: customCategory.goal_category_name,\n slug: customCategory.goal_category_slug.current,\n icon: customCategory.goal_category_icon?.name,\n }),\n ) ?? [];\n\n const organizationGoalCategories =\n organization?.goal_categories?.categories?.map((goalCategory) => ({\n label: goalCategory.goal_category_name,\n slug: goalCategory.goal_category_slug.current,\n icon: goalCategory.goal_category_icon?.name,\n })) ?? [];\n\n const goalCategories =\n organizationGoalCategories.concat(customGoalCategories);\n const goals = relationship?.goals as Partial[];\n\n const relationshipGoals = goals.filter(\n (goal) => goal.relationshipId === relationshipId,\n );\n\n const currentRelationshipGoalIds = relationshipGoals\n .filter((goal): goal is IGoal => goal.id !== undefined)\n .map((goal) => goal.id);\n if (!relationship) {\n return <>;\n }\n\n //handlers\n const handleLinkGoal = async (id: string) => {\n const { data: goalsResponseData } = await reqGoals({\n method: 'PATCH',\n url: `/goals/${id}`,\n data: {\n relationshipId,\n },\n });\n reqGoals({ url: '/goals' });\n\n const newGoalIds = goalsResponseData?.map((goal: IGoal) => goal.id) ?? [];\n\n await reqRelationships({\n method: 'PATCH',\n url: `/relationships/${relationshipId}`,\n // TODO Fix typings\n // @ts-ignore\n data: {\n goals: [...currentRelationshipGoalIds, ...newGoalIds],\n },\n });\n reqRelationships({ url: '/relationships' });\n };\n\n //modal actions\n const modalActions: (IButtonAction | IButtonAction[])[] = [\n {\n label: baseLanguage.globals?.common?.close_button_label,\n color: 'info',\n variant: 'contained',\n action: handleClose,\n isLoadingButton: true,\n dataCyLabel: 'relationship-manage-goals-modal-close-action-button',\n },\n ];\n\n //renderers\n const renderContent = () => {\n if (relationshipGoals.length === 0) {\n return (\n \n );\n }\n\n return (\n <>\n \n }\n onClick={() =>\n navigate(`/relationships/${relationship.id}/goals/create`)\n }\n color=\"info\"\n variant=\"outlined\"\n sx={{ fontWeight: 600 }}\n >\n {baseLanguage.globals?.goals?.create_goal_button_label}\n \n \n\n {goals.length !== 0 && (\n \n \n {baseLanguage?.relationships?.goals?.manage_goals_modal\n ?.relationship_goals_divider_text ?? 'Relationship goals'}\n \n \n )}\n {goals.length !== 0 &&\n goals.map((goal) => {\n const goalCategory = goalCategories.find(\n (goalCategory) => goalCategory.slug === goal.categorySlug,\n );\n return (\n \n );\n })}\n \n );\n };\n\n return (\n \n {renderContent()}\n \n );\n};\n","// external\nimport { useTheme } from '@mui/material';\nimport React, { useState } from 'react';\nimport { useNavigate, useParams } from 'react-router-dom';\n\n// components\nimport { ModalCard } from 'components';\nimport { GoalsDetails } from 'components/Goals/GoalsDetails';\nimport { ConfirmationModal } from 'modals';\n\n// hooks\nimport { useGoals, useRelationships } from 'hooks';\n\n// types\nimport { useSanityBaseLanguage } from '@guider-global/sanity-hooks';\nimport { IGoal, IRelationship } from '@guider-global/shared-types';\nimport { IButtonAction } from 'components/ActionButton';\n\ninterface IRelationshipGoalsViewProps {\n relationship: IRelationship;\n handleClose: () => void;\n isGuide: boolean;\n}\n\nexport const RelationshipGoalsView: React.FC = ({\n relationship,\n handleClose,\n isGuide,\n}) => {\n //state\n const [isDeleteModalOpen, setIsDeleteModalOpen] = useState(false);\n\n //style\n const theme = useTheme();\n\n //base language\n const { getBaseLanguage } = useSanityBaseLanguage({});\n const baseLanguage = getBaseLanguage();\n\n const backButtonLabel =\n baseLanguage.globals?.common?.go_back_button_label ?? 'Go back';\n\n const closeButtonLabel =\n baseLanguage.globals?.common?.close_button_label ?? 'Close';\n\n //hooks\n const navigate = useNavigate();\n const { reqRelationships } = useRelationships({ getSilently: false });\n\n //goals\n const { goalId } = useParams();\n const { reqGoals, goals } = useGoals({});\n const relationshipGoals = relationship?.goals as IGoal[];\n const goal =\n relationshipGoals.find((goal) => goal.id === goalId) ||\n goals?.find((goal) => goal.id === goalId);\n\n const traineeProfiles = relationship.traineeProfiles;\n const traineeProfile = traineeProfiles?.find(\n (profile) => profile.userId === goal?.userId,\n );\n\n if (!goal) {\n return <>;\n }\n\n //handlers\n\n const handleDeleteGoal = async () => {\n await reqGoals({\n method: 'DELETE',\n url: `/goals/${goalId}?relationshipId=${relationship.id}`,\n });\n\n await Promise.all([\n reqGoals({ url: '/goals' }),\n reqRelationships({ url: '/relationships' }),\n ]);\n\n navigate(`/relationships/${relationship.id}/goals`);\n };\n\n const handleDeleteModalClose = () => {\n setIsDeleteModalOpen(false);\n };\n\n //modal actions\n\n const guideModalActions: IButtonAction[] = [\n {\n label: closeButtonLabel,\n color: 'info',\n variant: 'contained',\n action: () => handleClose(),\n },\n ];\n\n const traineeModalActions: (IButtonAction | IButtonAction[])[] = [\n {\n label: baseLanguage.globals?.common?.delete_button_label ?? 'Delete',\n action: async () => {\n setIsDeleteModalOpen(true);\n },\n variant: 'text',\n color: 'error',\n dataCyLabel:\n 'components_Relationships_RelationshipGoals_RelationshipGoalsView_delete-button',\n },\n [\n {\n label: backButtonLabel,\n color: 'info',\n variant: 'outlined',\n action: () => navigate(`/relationships/${relationship.id}/goals`),\n dataCyLabel:\n 'components_Relationships_RelationshipGoals_RelationshipGoalsView_close-button',\n },\n {\n label:\n baseLanguage.globals?.goals?.edit_goal_button_label ?? 'Edit Goal',\n variant: 'contained',\n action: () =>\n navigate(`/relationships/${relationship.id}/goals/${goal.id}/edit`),\n color: 'info',\n dataCyLabel:\n 'components_Relationships_RelationshipGoals_RelationshipGoalsView_edit-button',\n },\n ],\n ];\n\n const deleteModalActions: IButtonAction[] = [\n {\n label: baseLanguage.globals?.common?.cancel_button_label ?? 'Cancel',\n action: handleDeleteModalClose,\n color: 'info',\n variant: 'outlined',\n dataCyLabel:\n 'components_Relationships_RelationshipGoals_RelationshipGoalsView_discard-delete-button',\n },\n {\n label: baseLanguage.globals?.common?.delete_button_label,\n action: () => {\n handleDeleteGoal();\n },\n color: 'error',\n variant: 'contained',\n isLoadingButton: true,\n dataCyLabel:\n 'components_Relationships_RelationshipGoals_RelationshipGoalsView_confirm-delete-button',\n },\n ];\n\n return (\n \n \n \n \n );\n};\n","// external\n\nimport { Box, Divider, ThemeProvider, useTheme } from '@mui/material';\nimport React, { useState } from 'react';\nimport { useNavigate } from 'react-router-dom';\n\n// components\nimport { RelationshipGoalsModal } from 'modals';\n\n// Hooks\nimport {\n useOrganization,\n useSanityBaseLanguage,\n useSanityOrganizationPrograms,\n} from '@guider-global/sanity-hooks';\n\n// types\nimport { IGoal, IRelationship } from '@guider-global/shared-types';\nimport { Button, TextStack, theme } from '@guider-global/ui';\nimport { deepMerge } from 'utils';\nimport { getSubDomain } from '@guider-global/front-end-utils';\nimport { MDIcons, SanityIcon } from 'components/SanityIcon';\ninterface IRelationshipGoalsProps {\n relationship: IRelationship;\n isGuide: boolean;\n}\n\nexport const RelationshipGoals: React.FC = ({\n relationship,\n isGuide,\n}) => {\n const [isGoalsModalOpen, setIsGoalsModalOpen] = useState(false);\n const navigate = useNavigate();\n const { getBaseLanguage } = useSanityBaseLanguage({});\n\n const baseLanguage = getBaseLanguage();\n\n const goals = relationship?.goals as Partial[];\n const organizationTheme = useTheme();\n const combinedPalette = deepMerge(\n theme.appTheme.palette,\n organizationTheme.palette,\n );\n const archived = relationship.isConcluded;\n\n const organizationSlug = getSubDomain();\n const { organization } = useOrganization({\n organizationSlug,\n });\n const { getProgram } = useSanityOrganizationPrograms({});\n\n const program = getProgram(relationship.programSlug);\n\n const customGoalCategories =\n program?.registration?.goals?.custom_goal_categories?.map(\n (customCategory) => ({\n label: customCategory.goal_category_name,\n value: customCategory.goal_category_slug.current,\n icon: customCategory.goal_category_icon?.name,\n }),\n ) ?? [];\n\n const organizationGoalCategories =\n organization?.goal_categories?.categories?.map((goalCategory) => ({\n label: goalCategory.goal_category_name,\n value: goalCategory.goal_category_slug.current,\n icon: goalCategory.goal_category_icon?.name,\n })) ?? [];\n\n const goalCategories =\n organizationGoalCategories.concat(customGoalCategories);\n\n const handleGoalsModalClose = () => {\n navigate(`/relationships/${relationship.id}`);\n\n setIsGoalsModalOpen(false);\n };\n\n const handleManageGoals = () => {\n navigate(`/relationships/${relationship.id}/goals`);\n\n setIsGoalsModalOpen(true);\n };\n\n const handleGoalClick = (goalId: string) => {\n navigate(`/relationships/${relationship.id}/goals/${goalId}`, {\n replace: false,\n });\n\n setIsGoalsModalOpen(true);\n };\n\n return (\n <>\n \n \n \n {goals.map((goal) => {\n const goalCategory = goalCategories.find(\n (goalCategory) => goalCategory.value === goal.categorySlug,\n );\n\n return (\n }\n variant=\"text\"\n label={`${goalCategory?.label ?? goalCategory?.value} ${\n goal.objective ? ' - ' + goal.objective : ''\n }`}\n sx={{\n height: 'fit-content',\n justifyContent: 'flex-start',\n span: {\n fontWeight: '400',\n fontSize: '13px',\n textAlign: 'left',\n lineHeight: '130%',\n pl: 0.5,\n },\n mb: 0.5,\n }}\n fullWidth\n onClick={() => handleGoalClick(goal.id || '')}\n disabled={archived}\n />\n );\n })}\n \n {!isGuide && (\n \n {\n baseLanguage.relationships?.goals?.sidebar\n ?.manage_goals_button_label\n }\n \n )}\n \n \n \n \n );\n};\n\nexport * from './RelationshipGoalsCreate';\nexport * from './RelationshipGoalsEdit';\nexport * from './RelationshipGoalsManage';\nexport * from './RelationshipGoalsView';\n","import {\n useSanityBaseLanguage,\n useSanityOrganizationPrograms,\n} from '@guider-global/sanity-hooks';\nimport { IRelationship } from '@guider-global/shared-types';\nimport { ButtonStack, ButtonStackItem, Text, theme } from '@guider-global/ui';\nimport CheckCircleOutline from '@mui/icons-material/CheckCircleOutline';\nimport ErrorOutline from '@mui/icons-material/ErrorOutline';\nimport InfoOutlined from '@mui/icons-material/InfoOutlined';\nimport ReportProblemOutlined from '@mui/icons-material/ReportProblemOutlined';\nimport { Box, Divider, ThemeProvider, useTheme } from '@mui/material';\nimport { useMemberships, useRelationships } from 'hooks';\nimport { useNavigate } from 'react-router-dom';\nimport { deepMerge } from 'utils';\n\ninterface IRelationshipGroupAlertProps {\n relationship: IRelationship;\n isGuide: boolean;\n}\n\nexport const RelationshipGroupAlert: React.FC = ({\n relationship,\n isGuide,\n}) => {\n const navigate = useNavigate();\n const programSlug = relationship.programSlug ?? '';\n const isArchivedRelationship = relationship.isConcluded;\n const { getProgram } = useSanityOrganizationPrograms({});\n const program = getProgram(programSlug);\n\n const { getBaseLanguage } = useSanityBaseLanguage({});\n const baseLanguage = getBaseLanguage();\n\n const organizationTheme = useTheme();\n const combinedPalette = deepMerge(\n theme.appTheme.palette,\n organizationTheme.palette,\n );\n const { palette } = organizationTheme;\n\n const { reqMemberships, isLoadingMemberships } = useMemberships({\n getSilently: false,\n });\n const { reqRelationships, isLoadingRelationships } = useRelationships({\n getSilently: false,\n });\n\n let title: string = '';\n let description: string = '';\n let boxColor: string = '';\n let icon: React.ReactNode = <>;\n let buttons: ButtonStackItem[] = [];\n\n const guideMembership = relationship.guideMemberships?.at(0);\n const isActiveGroup =\n guideMembership?.isPublished === false &&\n relationship?.activatedAt !== undefined;\n\n const traineeCount = relationship.traineeMemberships?.length ?? 0;\n const noTraineesHaveJoined = traineeCount === 0;\n\n const allTraineesHaveLeft = isActiveGroup && noTraineesHaveJoined;\n\n const guideGroupCopy =\n program?.program_details?.program_type?.program_type_text.variations?.group\n ?.relationships?.guide;\n\n const traineeGroupCopy =\n program?.program_details?.program_type?.program_type_text.variations?.group\n ?.relationships?.trainee;\n\n const guideAlertCopy = isActiveGroup\n ? guideGroupCopy?.group_activated\n : guideGroupCopy?.group_activation_pending;\n\n const traineeAlertCopy = isActiveGroup\n ? traineeGroupCopy?.group_activated\n : traineeGroupCopy?.group_activation_pending;\n\n function setAlertBoxColor() {\n if (isActiveGroup) {\n return palette.success.transparent;\n } else if (isGuide) {\n return palette.warning.transparent;\n }\n return palette.info.transparent;\n }\n\n const republishGroup = async () => {\n await reqMemberships({\n method: 'PATCH',\n url: `/memberships/${guideMembership?.id}`,\n data: {\n isPublished: true,\n },\n });\n\n await Promise.all([\n reqMemberships({ url: '/memberships' }),\n reqRelationships({ url: '/relationships' }),\n ]);\n };\n\n const activateGroup = async () => {\n if (noTraineesHaveJoined) {\n return;\n }\n\n await reqMemberships({\n method: 'PATCH',\n url: `/memberships/${guideMembership?.id}`,\n data: {\n isPublished: false,\n },\n });\n\n await reqRelationships({\n method: 'PATCH',\n url: `/relationships/${relationship.id}`,\n data: {\n activatedAt: new Date(),\n },\n });\n\n await Promise.all([\n reqMemberships({ url: '/memberships' }),\n reqRelationships({ url: '/relationships' }),\n ]);\n };\n\n if (allTraineesHaveLeft) {\n title = guideGroupCopy?.trainees_left_group?.alert_title ?? '';\n description = guideGroupCopy?.trainees_left_group?.alert_description ?? '';\n boxColor = palette.error.transparent ?? '';\n icon = ;\n buttons = [\n {\n variant: 'contained',\n color: 'success',\n label:\n guideGroupCopy?.trainees_left_group?.republish_group_button_label,\n key: 'republish',\n onClick: () => republishGroup(),\n loading: isLoadingRelationships(),\n },\n ];\n } else {\n title = isGuide\n ? guideAlertCopy?.alert_title ?? ''\n : traineeAlertCopy?.alert_title ?? '';\n description = isGuide\n ? guideAlertCopy?.alert_description ?? ''\n : traineeAlertCopy?.alert_description ?? '';\n boxColor = setAlertBoxColor() ?? '';\n icon = ;\n buttons = [\n {\n disabled: !isActiveGroup && noTraineesHaveJoined,\n variant: 'contained',\n color: 'success',\n label: isActiveGroup\n ? baseLanguage?.globals?.sessions?.schedule_session\n : guideGroupCopy?.group_activation_pending?.start_group_button_label,\n key: 'activation-button',\n onClick: () => {\n if (!isActiveGroup) {\n activateGroup();\n } else {\n navigate(`/relationships/${relationship.id}/sessions/create`);\n }\n },\n loading: isLoadingMemberships() || isLoadingRelationships(),\n },\n ];\n }\n\n if ((isActiveGroup || isArchivedRelationship) && !allTraineesHaveLeft) {\n return <>;\n }\n\n return (\n <>\n \n \n \n {icon}\n \n \n \n \n \n {isGuide && (\n <>\n \n {noTraineesHaveJoined && !isActiveGroup && (\n \n )}\n \n )}\n \n \n \n \n );\n};\n\nconst AlertIcon = ({\n isActiveGroup,\n isGuide,\n}: {\n isActiveGroup: boolean;\n isGuide: boolean;\n}) =>\n isActiveGroup ? (\n \n ) : isGuide ? (\n \n ) : (\n \n );\n","import { FC } from 'react';\n\nimport { ConfirmationModal } from 'modals';\n\ninterface RelationshipsConcludeDialogProps {\n dialogTitle: string;\n dialogDescription: string;\n cancelButtonLabel: string;\n concludeRelationshipButtonLabel: string;\n open: boolean;\n loading: boolean;\n onClose: () => void;\n onConcludeRelationship: () => void;\n}\n\nconst RelationshipsConcludeDialog: FC = ({\n dialogTitle,\n dialogDescription,\n cancelButtonLabel,\n concludeRelationshipButtonLabel,\n open,\n loading,\n onClose,\n onConcludeRelationship,\n}) => {\n return (\n \n );\n};\n\nexport default RelationshipsConcludeDialog;\n","import { IProfile, IRelationship, Program } from '@guider-global/shared-types';\nimport { Box } from '@mui/material';\nimport { useMixpanelEvents, useProfiles, useRelationships } from 'hooks';\nimport { FC, useCallback, useEffect, useState } from 'react';\nimport { useLocation, useNavigate } from 'react-router-dom';\n\nimport {\n getISOStringWithoutMilliseconds,\n getSubDomain,\n} from '@guider-global/front-end-utils';\nimport {\n useOrganization,\n useSanityBaseLanguage,\n useSanityOrganizationPrograms,\n} from '@guider-global/sanity-hooks';\nimport { AvatarButton, DropDown, IconButton } from '@guider-global/ui';\nimport MoreHoriz from '@mui/icons-material/MoreHoriz';\nimport PersonOff from '@mui/icons-material/PersonOff';\nimport { useAppDispatch } from 'store/hooks';\nimport { showAppAlert } from 'store/slices/appSlice';\nimport RelationshipsConcludeDialog from './RelationshipsConcludeDialog';\n\ninterface RelationshipConcludeProps {\n relationship: IRelationship;\n}\n\nconst RelationshipConclude: FC = ({\n relationship,\n}) => {\n const organizationSlug = getSubDomain();\n const { getProfiles } = useProfiles({ getSilently: false });\n const [profile] = getProfiles();\n const profileId = profile?.id;\n\n const programSlug = relationship?.programSlug;\n const relationshipId = relationship.id;\n\n const { getProgram } = useSanityOrganizationPrograms({});\n const { organization } = useOrganization({ organizationSlug });\n\n let program: Program | undefined;\n let programType;\n\n if (programSlug) {\n program = getProgram(programSlug);\n programType = program?.program_details?.program_type;\n } else {\n programType = organization?.open_matching?.program_type;\n }\n\n const { getBaseLanguage } = useSanityBaseLanguage({});\n const baseLanguage = getBaseLanguage();\n\n const navigate = useNavigate();\n const { pathname } = useLocation();\n // Local state\n const [isModalOpen, setIsModalOpen] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n\n // Redux\n const dispatch = useAppDispatch();\n\n // Hooks\n const { trackMixpanelEvent } = useMixpanelEvents();\n const guideProfiles = relationship?.guideProfiles as IProfile[];\n const guideProfilesIds = guideProfiles?.map((guide) => guide.id) ?? [];\n const isGroupProgram = relationship?.programVariationTypeSlug === 'group';\n const isGuide = guideProfilesIds.includes(profileId);\n\n let heading: string;\n let subtitle: string;\n let dialogTitle: string;\n let dialogDescription: string;\n let cancelButtonLabel =\n baseLanguage.globals?.common?.cancel_button_label ?? 'Cancel';\n let concludeRelationshipButtonLabel: string;\n\n const groupGuide =\n programType?.program_type_text.variations?.group?.relationships?.guide\n ?.conclude_relationship;\n const groupTrainee =\n programType?.program_type_text.variations?.group?.relationships?.trainee\n ?.conclude_relationship;\n const individual =\n programType?.program_type_text.variations?.individual?.relationships\n ?.conclude_relationship;\n\n // Conclude Group\n\n if (isGroupProgram) {\n if (isGuide) {\n heading = groupGuide?.button_title ?? '';\n subtitle = groupGuide?.button_description ?? '';\n dialogTitle = groupGuide?.conclude_relationship_modal.title ?? '';\n dialogDescription =\n groupGuide?.conclude_relationship_modal.description ?? '';\n concludeRelationshipButtonLabel = groupGuide?.button_title ?? '';\n } else {\n heading = groupTrainee?.button_title ?? '';\n subtitle = groupTrainee?.button_description ?? '';\n dialogTitle = groupTrainee?.conclude_relationship_modal.title ?? '';\n dialogDescription =\n groupTrainee?.conclude_relationship_modal.description ?? '';\n concludeRelationshipButtonLabel = groupTrainee?.button_title ?? '';\n }\n } else {\n heading = individual?.button_title ?? '';\n subtitle = individual?.button_description ?? '';\n dialogTitle = individual?.conclude_relationship_modal.title ?? '';\n dialogDescription =\n individual?.conclude_relationship_modal.description ?? '';\n concludeRelationshipButtonLabel = individual?.button_title ?? '';\n }\n\n const getSuccess = () => {\n if (isGroupProgram) {\n return isGuide\n ? groupGuide?.conclude_relationship_modal.success_alert_text ?? ''\n : groupTrainee?.conclude_relationship_modal.success_alert_text ?? '';\n }\n\n return individual?.conclude_relationship_modal.success_alert_text ?? '';\n };\n\n const getError = () => {\n if (isGroupProgram) {\n return isGuide\n ? groupGuide?.conclude_relationship_modal.error_alert_text ?? ''\n : groupTrainee?.conclude_relationship_modal.error_alert_text ?? '';\n }\n\n return individual?.conclude_relationship_modal.error_alert_text ?? '';\n };\n\n // Relationships\n const { reqRelationships } = useRelationships({ getSilently: false });\n\n // Events\n const handleModalClose = useCallback(() => {\n setIsModalOpen(false);\n navigate(`/relationships/${relationshipId}`);\n }, [navigate, relationshipId]);\n const handleModalOpen = () => {\n setIsModalOpen(true);\n navigate(`/relationships/${relationshipId}/conclude`);\n };\n\n const handleConcludeRelationship = async () => {\n let isSuccess = false;\n\n setIsLoading(true);\n\n if ((isGroupProgram && isGuide) || !isGroupProgram) {\n const updateRelationship = await reqRelationships({\n method: 'PATCH',\n url: `/relationships/${relationshipId}`,\n data: {\n isConcluded: true,\n },\n });\n\n isSuccess = updateRelationship.status === 'success';\n\n if (isSuccess) {\n trackMixpanelEvent('Relationship - Concluded', {\n 'Concluded on': getISOStringWithoutMilliseconds(Date.now()),\n Program: programSlug,\n 'Concluded by': isGuide ? 'guide' : 'trainee',\n });\n }\n } else {\n const updateRelationship = await reqRelationships({\n method: 'PATCH',\n url: `/relationships/${relationshipId}`,\n // TODO FIX types\n // @ts-ignore\n data: {\n traineeProfiles: [profileId],\n },\n });\n\n isSuccess = updateRelationship.status === 'success';\n }\n\n dispatch(\n showAppAlert({\n severity: isSuccess ? 'success' : 'error',\n message: isSuccess ? getSuccess() : getError(),\n timeout: 5000,\n }),\n );\n\n setIsModalOpen(false);\n\n await Promise.all([reqRelationships({ url: '/relationships' })]);\n\n navigate('/relationships');\n\n setIsLoading(false);\n };\n\n // Derivatives\n const archived = relationship.isConcluded;\n\n useEffect(() => {\n if (archived) {\n handleModalClose();\n return;\n }\n\n setIsModalOpen(pathname.endsWith('/conclude'));\n }, [handleModalClose, archived, pathname]);\n\n return (\n \n } />}\n >\n }\n size=\"small\"\n heading={heading}\n subtitles={[subtitle]}\n disabled={archived}\n />\n \n\n \n \n );\n};\n\nexport default RelationshipConclude;\n","// external\nimport ArrowBackIosNew from '@mui/icons-material/ArrowBackIosNew';\nimport Close from '@mui/icons-material/Close';\nimport MenuOpen from '@mui/icons-material/MenuOpen';\nimport {\n Avatar,\n Box,\n Chip,\n Paper,\n Stack,\n ThemeProvider,\n Typography,\n useTheme,\n} from '@mui/material';\nimport { format, parseISO } from 'date-fns';\nimport React, { useMemo, useState } from 'react';\nimport { useNavigate } from 'react-router-dom';\n\n// components\nimport { RelationshipViewProfileModal } from 'components';\n\n// types\nimport {\n EProgramVariation,\n IMembership,\n IRelationship,\n ISkill,\n Program,\n} from '@guider-global/shared-types';\n\nimport { useProfileImage } from '@guider-global/azure-storage-hooks';\nimport {\n getLanguageFromCMS,\n getSubDomain,\n} from '@guider-global/front-end-utils';\nimport {\n useSanityBaseLanguage,\n useSanityOrganizationPrograms,\n} from '@guider-global/sanity-hooks';\nimport {\n Button,\n GroupAvatar,\n IconButton,\n MultiAvatarButton,\n Text,\n theme,\n} from '@guider-global/ui';\nimport {\n MembershipDataProps,\n ProfilePreviewProfileData,\n} from 'components/ProfilePreview';\nimport { interpolate } from 'functions';\nimport { useMobileMediaQuery, useProfiles, useRelationships } from 'hooks';\nimport { RelationshipGroupMembersModal } from 'modals';\nimport { deepMerge, hexToRGB } from 'utils';\nimport RelationshipConclude from '../RelationshipsConclude';\nimport { useAppDispatch } from 'store/hooks';\nimport { showAppAlert } from 'store/slices/appSlice';\n\ninterface IRelationshipHeaderProps {\n relationship: IRelationship;\n otherPartyProfile?: {\n displayName?: string;\n profilePicture?: string;\n userPicture?: string;\n };\n relationshipCreatedAt: Date;\n programName: string;\n roleLabel: string;\n isSidebarOpen: boolean;\n setIsSidebarOpen: (isOpen: boolean) => void;\n}\n\nexport const RelationshipHeader: React.FC = ({\n relationship,\n otherPartyProfile,\n relationshipCreatedAt,\n programName,\n roleLabel,\n isSidebarOpen,\n setIsSidebarOpen,\n}) => {\n const [groupMembersModalOpen, setGroupMembersModalOpen] = useState(false);\n const [selectedUserId, setSelectedUserId] = useState();\n const [selectedProfileId, setSelectedProfileId] = useState();\n\n const isGroup =\n relationship?.programVariationTypeSlug === EProgramVariation.Group;\n\n const { reqRelationships } = useRelationships({});\n const { getProfiles } = useProfiles({});\n const profile = getProfiles()?.at(0);\n\n const groupMentor = useMemo(() => {\n const profile = relationship?.guideProfiles?.at(0);\n const user = relationship?.users?.find(\n (user) => user.id === profile?.userId,\n );\n return {\n user,\n profile,\n };\n }, [relationship]);\n\n const ownRole =\n groupMentor?.profile?.id === profile?.id ? 'guide' : 'trainee';\n\n const organizationTheme = useTheme();\n const combinedPalette = deepMerge(\n theme.appTheme.palette,\n organizationTheme.palette,\n );\n\n const navigate = useNavigate();\n const dispatch = useAppDispatch();\n\n const organizationSlug = getSubDomain();\n\n const isMobile = useMobileMediaQuery();\n const { getBaseLanguage } = useSanityBaseLanguage({});\n const baseLanguage = getBaseLanguage();\n const { getProfileImage } = useProfileImage();\n\n const { getProgram } = useSanityOrganizationPrograms({});\n\n let program: Program | undefined;\n\n if (relationship?.programSlug) {\n program = getProgram(relationship?.programSlug ?? '');\n }\n\n const programTypeGuideNoun =\n program?.program_details?.program_type?.program_type_text.common?.noun;\n\n const handleGroupMembersModalClose = () => {\n setGroupMembersModalOpen(false);\n };\n\n const modalTitle = baseLanguage.relationships?.view_profile_modal?.title;\n const modalCloseButtonLabel =\n baseLanguage.globals?.common?.close_button_label;\n\n const handleProfileModalClose = () => {\n setSelectedUserId(undefined);\n setSelectedProfileId(undefined);\n setGroupMembersModalOpen(true);\n };\n\n const handleProfileModalOpen = (userId?: string, profileId?: string) => {\n setSelectedUserId(userId);\n setSelectedProfileId(profileId);\n handleGroupMembersModalClose();\n };\n\n const getSelectedProfileData = (\n selectedUserId?: string,\n ): ProfilePreviewProfileData => {\n const guideProfiles = relationship.guideProfiles ?? [];\n const traineeProfiles = relationship.traineeProfiles ?? [];\n const profiles = [...guideProfiles, ...traineeProfiles];\n\n const selectedProfile = profiles.find(\n (profile) => profile.userId === selectedUserId,\n );\n\n const selectedProfileUserId = selectedProfile?.userId;\n\n const selectedUser = relationship.users?.find(\n (user) => user.id === selectedProfileUserId,\n );\n return {\n ...selectedProfile,\n pictures: {\n profile: selectedProfile?.picture,\n user: selectedUser?.picture,\n },\n };\n };\n\n const getSelectedProfileMembershipData = (\n selectedUserId?: string,\n ): MembershipDataProps => {\n const guideMemberships = relationship.guideMemberships ?? [];\n const traineeMemberships = relationship.traineeMemberships ?? [];\n const memberships = [...guideMemberships, ...traineeMemberships];\n\n const selectedMembership = memberships.find(\n (membership) => membership.userId === selectedUserId,\n );\n\n const skillFieldSlugs = selectedMembership?.skills?.map((skill) => {\n const skillTyped = skill as ISkill;\n return skillTyped.fieldSlug;\n });\n return {\n skills: skillFieldSlugs ?? [],\n membership: selectedMembership ? [selectedMembership as IMembership] : [],\n };\n };\n\n const getSelectedRelationshipRole = (selectedUserId?: string) => {\n const guideProfile = relationship.guideProfiles?.find(\n (guideProfile) => guideProfile.userId === selectedUserId,\n );\n if (guideProfile) return 'guide';\n return 'trainee';\n };\n\n const locale = getLanguageFromCMS(baseLanguage.language_code);\n\n const avatars =\n relationship.users?.map((user) => {\n const userId = user.id;\n const traineeProfile = relationship.traineeProfiles?.find(\n (traineeProfile) => traineeProfile.userId === userId,\n );\n const guideProfile = relationship.guideProfiles?.find(\n (guideProfile) => guideProfile.userId === userId,\n );\n const profilePicture = traineeProfile\n ? traineeProfile.picture\n : guideProfile?.picture;\n const userPicture = user.picture;\n return getProfileImage({\n profilePicture: profilePicture,\n userPicture: userPicture,\n });\n }) ?? [];\n\n const renderContent = () => {\n if (isMobile && isSidebarOpen) {\n return (\n \n {baseLanguage.relationships?.relationships_list?.title}\n \n );\n } else {\n return (\n \n {relationship && (\n <>\n \n {isGroup ? relationship?.title : otherPartyProfile?.displayName}\n \n\n \n {isGroup\n ? interpolate(\n baseLanguage.dashboard?.program_memberships\n ?.with_program_memberships?.membership_details\n ?.creation_date,\n {\n date: format(\n new Date(relationship.createdAt ?? ''),\n 'EEE do MMM',\n ),\n },\n )\n : `${roleLabel} ${baseLanguage.relationships\n ?.relationships_header?.since}${format(\n parseISO(relationshipCreatedAt.toString()),\n ' LLL yyyy',\n {\n locale,\n },\n )} `}\n \n \n )}\n \n );\n }\n };\n\n const handleConnect = async () => {\n if (!selectedProfileId) return;\n\n const isGuide = groupMentor?.profile?.id === profile?.id;\n\n const result = await reqRelationships({\n method: 'POST',\n url: '/relationships',\n // @ts-ignore\n data: {\n guideProfiles: [groupMentor?.profile?.id],\n traineeProfiles: [isGuide ? selectedProfileId : profile?.id],\n organizationSlug,\n programTypeSlug:\n program?.program_details?.program_type?.metadata?.id?.current,\n programVariationTypeSlug: EProgramVariation.Individual,\n profileId: isGuide ? selectedProfileId : profile?.id,\n goals: [],\n },\n });\n if (result.status === 'success' && result.data) {\n const relationshipId = (result?.data as IRelationship[])[0]?.id;\n navigate(`/relationships/${relationshipId}`);\n } else {\n dispatch(\n showAppAlert({\n severity: 'error',\n message: result?.message,\n timeout: 5000,\n }),\n );\n }\n };\n\n return (\n <>\n \n \n {isMobile && !isSidebarOpen && (\n navigate('/relationships')}\n variant={'regular'}\n icon={}\n />\n )}\n\n {!isGroup && (\n \n \n {renderContent()}\n {isMobile ? (\n \n \n setIsSidebarOpen(!isSidebarOpen)}\n variant=\"contained\"\n icon={\n isSidebarOpen ? (\n \n ) : (\n \n )\n }\n />\n \n ) : (\n <>\n \n \n \n\n \n \n \n \n )}\n \n )}\n {isGroup && (\n \n \n {renderContent()}\n\n {isMobile ? (\n \n \n setIsSidebarOpen(!isSidebarOpen)}\n variant=\"contained\"\n icon={\n isSidebarOpen ? (\n \n ) : (\n \n )\n }\n />\n \n ) : (\n <>\n \n \n setGroupMembersModalOpen(!groupMembersModalOpen)\n }\n />\n \n \n\n \n \n )}\n \n )}\n \n \n {relationship && (\n \n )}\n\n {isGroup && relationship && (\n \n {'Members'}\n {relationship.guideProfiles?.map((guideProfile) => {\n const guideUser = relationship.users?.find(\n (user) => guideProfile.userId,\n );\n return (\n \n handleProfileModalOpen(guideProfile?.userId, guideProfile?.id)\n }\n >\n \n \n \n \n );\n })}\n\n {relationship.traineeProfiles?.map((traineeProfile) => {\n const traineeUser = relationship.users?.find(\n (user) => traineeProfile.userId === user.id,\n );\n\n return (\n \n handleProfileModalOpen(\n traineeProfile.userId,\n traineeProfile?.id,\n )\n }\n >\n \n \n \n );\n })}\n \n )}\n \n );\n};\n\nexport default RelationshipHeader;\n","//external\nimport { useProfileImage } from '@guider-global/azure-storage-hooks';\nimport { EProgramVariation, IRelationship } from '@guider-global/shared-types';\nimport { GroupAvatar } from '@guider-global/ui';\nimport {\n Avatar,\n Badge,\n Box,\n Button,\n Typography,\n useTheme,\n} from '@mui/material';\nimport { useProfiles } from 'hooks';\nimport React from 'react';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport { useAppSelector } from 'store/hooks';\nimport { selectIsUnreadMessages } from 'store/slices/relationshipThreadsSlice';\nimport { getRecipients } from 'utils/getRelationshipRecipients';\n\ninterface IRelationshipItemProps {\n relationship: IRelationship;\n}\n\nexport const RelationshipItem: React.FC = ({\n relationship,\n}) => {\n const navigate = useNavigate();\n const theme = useTheme();\n const { relationshipId } = useParams();\n\n // Redux\n const isUnreadMessages = useAppSelector(\n selectIsUnreadMessages(relationship.id),\n );\n\n const isGroupProgram =\n relationship?.programVariationTypeSlug === EProgramVariation.Group;\n\n const { getProfiles } = useProfiles({ getSilently: false });\n const [profile] = getProfiles();\n const profileId = profile?.id;\n const userId = profile?.userId;\n\n const isActive = relationshipId === relationship.id;\n\n const isGuide = Boolean(\n relationship.guideProfiles?.find((guide) => guide.id === profileId),\n );\n const recipients = getRecipients({\n role: isGuide ? 'guide' : 'trainee',\n relationship,\n userId,\n });\n\n const guidesCount = relationship?.guideProfiles?.length ?? 0;\n const traineesCount = relationship?.traineeProfiles?.length ?? 0;\n\n const otherPartyProfile = recipients.at(0);\n const { getProfileImage } = useProfileImage();\n\n return (\n navigate(`./${relationship.id}`)}\n variant=\"text\"\n fullWidth\n >\n \n {isGroupProgram ? (\n \n \n \n ) : (\n \n )}\n \n {relationship && (\n \n {isGroupProgram\n ? relationship?.title\n : otherPartyProfile?.displayName}\n \n )}\n \n \n {isUnreadMessages && (\n \n )}\n \n );\n};\n","// external\nimport React from 'react';\nimport { Control, SubmitHandler, useForm } from 'react-hook-form';\nimport { useNavigate } from 'react-router-dom';\n\n// internal\nimport { getSubDomain } from '@guider-global/front-end-utils';\nimport { useNotes, useRelationships } from 'hooks';\n\n// types\nimport { IRelationship, SlateDescendant } from '@guider-global/shared-types';\n\nimport { useSanityBaseLanguage } from '@guider-global/sanity-hooks';\n\nimport { Box } from '@mui/material';\nimport { ActionButton, IButtonAction } from 'components/ActionButton';\nimport { NoteFormField, NotesCreateForm } from 'forms/Notes/NotesCreateForm';\nimport { emptyInitialValue } from 'components/FormRichText';\n\nexport interface INoteInputs {\n [NoteFormField.Title]: string;\n [NoteFormField.Content]: SlateDescendant[];\n [NoteFormField.IsPublic]: boolean;\n}\n\ninterface IRelationshipNotesCreateProps {\n relationship: IRelationship;\n}\n\nexport const RelationshipNotesCreate: React.FC<\n IRelationshipNotesCreateProps\n> = ({ relationship }) => {\n //baseLanguage\n const { getBaseLanguage } = useSanityBaseLanguage({});\n const baseLanguage = getBaseLanguage();\n\n //form\n const {\n handleSubmit,\n control,\n formState: { errors, isDirty },\n reset,\n } = useForm({\n mode: 'onChange',\n defaultValues: {\n [NoteFormField.Title]: '',\n [NoteFormField.Content]: emptyInitialValue,\n [NoteFormField.IsPublic]: false,\n },\n });\n const typedControl = control as unknown as Control;\n\n //hooks\n const navigate = useNavigate();\n const organizationSlug = getSubDomain();\n const { isLoadingNotes, reqNotes } = useNotes({});\n\n const { isLoadingRelationships, reqRelationships } = useRelationships({});\n\n const isLoading = isLoadingNotes || isLoadingRelationships();\n\n //handlers\n const onSubmit: SubmitHandler = async (data) => {\n const { isPublic, ...rest } = data;\n\n const { data: notesCreateResponseData } = await reqNotes({\n method: 'POST',\n url: `/notes`,\n data: {\n ...rest,\n isPrivate: !isPublic,\n organizationSlug,\n relationshipId: relationship.id,\n },\n });\n\n await Promise.all([\n reqNotes({ url: `/notes?organizationSlug=${organizationSlug}` }),\n reqRelationships({ url: '/relationships' }),\n ]);\n\n if (!notesCreateResponseData) {\n console.error('Something went wrong');\n return;\n }\n\n navigate(\n `/relationships/${relationship.id}/notes/${notesCreateResponseData[0].id}`,\n );\n };\n\n //modal actions\n const saveAction: IButtonAction = {\n label:\n baseLanguage.relationships?.notes?.notes_modal\n ?.notes_modal_create_edit_note?.save_note_button_label,\n variant: 'contained',\n color: 'info',\n action: handleSubmit(onSubmit),\n isLoadingButton: true,\n disabled: !isDirty,\n dataCyLabel: 'relationship-notes-modal-create-note-button',\n };\n\n return (\n \n \n \n \n \n \n );\n};\n","import { useTheme } from '@mui/material';\nimport { MdNoteAdd } from 'react-icons/md';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport { useSanityBaseLanguage } from '@guider-global/sanity-hooks';\nimport { PageContent } from 'components/Page';\nimport { PageContentAction } from 'components/Page/PageContent';\n\nexport function RelationshipNotesEmpty() {\n const theme = useTheme();\n const navigate = useNavigate();\n const { relationshipId } = useParams();\n const { getBaseLanguage } = useSanityBaseLanguage({});\n const baseLanguage = getBaseLanguage();\n\n const notes_modal_empty_title =\n baseLanguage.relationships?.notes?.notes_modal?.notes_modal_empty_state\n ?.notes_modal_empty_title;\n const notes_modal_empty_description =\n baseLanguage.relationships?.notes?.notes_modal?.notes_modal_empty_state\n ?.notes_modal_empty_description;\n const notes_modal_empty_create_button_label =\n baseLanguage.relationships?.notes?.notes_modal?.notes_modal_empty_state\n ?.notes_modal_empty_create_button_label;\n\n const actions: PageContentAction[] = [\n {\n label: notes_modal_empty_create_button_label,\n action: () => navigate(`/relationships/${relationshipId}/notes/create`),\n color: 'info',\n 'data-cy': 'relationship-notes-empty-create-note-button',\n },\n ];\n\n return (\n \n );\n}\n","//external\nimport {\n Box,\n Button,\n IconButton,\n Typography,\n lighten,\n useTheme,\n} from '@mui/material';\nimport React, { useContext } from 'react';\n\n//types\nimport { INote } from '@guider-global/shared-types';\nimport Add from '@mui/icons-material/Add';\nimport Edit from '@mui/icons-material/Edit';\nimport People from '@mui/icons-material/People';\n\n//hooks\nimport { useSanityBaseLanguage } from '@guider-global/sanity-hooks';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport { useMobileMediaQuery } from 'hooks';\n\nimport { RelationshipNotesModalContext } from 'modals';\n\ninterface IRelationshupNotesList {\n notes: Partial[];\n}\n\nexport const RelationshipNotesList: React.FC = ({\n notes,\n}) => {\n //hooks\n const { getBaseLanguage } = useSanityBaseLanguage({});\n const baseLanguage = getBaseLanguage();\n const navigate = useNavigate();\n const { relationshipId, noteId } = useParams();\n const { setOnConfirmDiscardNoteChanges } = useContext(\n RelationshipNotesModalContext,\n );\n\n //style\n const theme = useTheme();\n const isMobile = useMobileMediaQuery();\n\n const notesCount = notes ? notes.length : 0;\n const notesCountDescription =\n notesCount === 1\n ? `${notesCount} ${baseLanguage.relationships?.notes?.notes_modal?.notes_sidebar?.notes_sidebar_single_note_label}`\n : `${notesCount} ${baseLanguage.relationships?.notes?.notes_modal?.notes_sidebar?.notes_sidebar_multiple_notes_label}`;\n\n const navigateToNote = (noteId: string | undefined) => {\n navigate(`/relationships/${relationshipId}/notes/${noteId}`);\n };\n\n const navigateToNoteCreate = () => {\n navigate(`/relationships/${relationshipId}/notes/create`);\n };\n\n const handleClick = (callback: () => void) => {\n setOnConfirmDiscardNoteChanges(() => callback);\n };\n\n //renders\n const renderNotesItems = () =>\n notes.map((note, index) => (\n handleClick(() => navigateToNote(note.id))}\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n px: { xs: 2, md: 3 },\n py: 1,\n borderRadius: 0,\n textTransform: 'unset !important',\n ...(note.id === noteId && {\n backgroundColor: `${lighten(theme.palette.info.main, 0.9)}`,\n }),\n }}\n data-cy={`relationship-note-${note.id}`}\n >\n \n {note.title}\n \n\n \n \n ));\n\n //component\n\n return (\n \n \n \n {notesCountDescription}\n \n handleClick(navigateToNoteCreate)}\n data-cy=\"relationship-notes-list-add-icon-button\"\n >\n \n \n \n \n {renderNotesItems()}\n \n }\n sx={{\n mx: { xs: 2, md: 3 },\n my: 2,\n fontWeight: 600,\n whiteSpace: 'nowrap',\n }}\n onClick={() => handleClick(navigateToNoteCreate)}\n data-cy=\"relationship-notes-list-create-note-button\"\n >\n {\n baseLanguage.relationships?.notes?.notes_modal?.notes_sidebar\n ?.notes_sidebar_new_note_button_label\n }\n \n \n );\n};\n","//external\nimport { Box } from '@mui/material';\nimport React, { useMemo, useState } from 'react';\nimport { Control, SubmitHandler, useForm } from 'react-hook-form';\n\n//types\nimport { IRelationship } from '@guider-global/shared-types';\n\n//components\nimport { ActionButton } from 'components';\n\n//hooks\n\nimport { getSubDomain } from '@guider-global/front-end-utils';\nimport { useSanityBaseLanguage } from '@guider-global/sanity-hooks';\nimport { IButtonAction } from 'components/ActionButton';\nimport { NotesCreateForm } from 'forms';\nimport {\n useMobileMediaQuery,\n useNotes,\n useRelationships,\n useUsers,\n} from 'hooks';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport { INoteInputs } from '../RelationshipNotesCreate';\nimport { ConfirmationModal } from 'modals';\nimport { format, toDate } from 'date-fns-tz';\n\ninterface IRelationshipNotesView {\n relationship: IRelationship;\n}\n\nexport const RelationshipNotesView: React.FC = ({\n relationship,\n}) => {\n const { users } = useUsers({ getSilently: false });\n const user = users().at(0);\n\n const [isDeleteModalOpen, setIsDeleteModalOpen] = useState(false);\n\n //hooks\n const navigate = useNavigate();\n const { getBaseLanguage } = useSanityBaseLanguage({});\n const baseLanguage = getBaseLanguage();\n\n const cancelButtonLabel =\n baseLanguage.globals?.common?.cancel_button_label ?? 'Cancel';\n\n const params = useParams();\n\n const currentNote = useMemo(() => {\n const relationshipNotes = relationship?.notes ?? [];\n return relationshipNotes.find((note) => note.id === params.noteId);\n }, [params.noteId, relationship?.notes]);\n\n const organizationSlug = getSubDomain();\n const { isLoadingNotes, reqNotes } = useNotes({});\n\n const { isLoadingRelationships, reqRelationships } = useRelationships({\n getSilently: false,\n });\n\n const isLoading = isLoadingRelationships() || isLoadingNotes;\n\n const {\n handleSubmit,\n control,\n formState: { errors, isDirty },\n reset,\n } = useForm({ mode: 'onChange' });\n const typedControl = control as unknown as Control;\n\n //style\n const isMobile = useMobileMediaQuery();\n\n const guideProfiles = relationship.guideProfiles ?? [];\n const traineeProfiles = relationship.traineeProfiles ?? [];\n\n const profiles = [...guideProfiles, ...traineeProfiles];\n\n const ownersProfile = profiles.find(\n (guideProfile) => guideProfile.userId === currentNote?.ownerId,\n );\n\n const lastUpdatedByProfile = profiles.find(\n (profile) => profile.userId === currentNote?.lastUpdatedBy,\n );\n\n const currentNoteUpdateAt =\n currentNote?.updatedAt &&\n format(toDate(currentNote.updatedAt), 'MMMM d yyyy');\n\n const currentNoteCreatedAt =\n currentNote?.createdAt &&\n format(toDate(currentNote.createdAt), 'MMMM d yyyy');\n\n const lastUpdatedByString =\n currentNote &&\n `${baseLanguage.relationships?.notes?.notes_modal?.notes_modal_create_edit_note?.note_status?.note_status_last_updated_by_label} ${lastUpdatedByProfile?.firstName} ${lastUpdatedByProfile?.lastName} ${baseLanguage.relationships?.notes?.notes_modal?.notes_modal_create_edit_note?.note_status?.note_status_last_updated_on_label} ${currentNoteUpdateAt}`;\n\n const createdByString =\n currentNote &&\n `${baseLanguage.relationships?.notes?.notes_modal?.notes_modal_create_edit_note?.note_status?.note_status_created_by_label} ${ownersProfile?.firstName} ${ownersProfile?.lastName} ${baseLanguage.relationships?.notes?.notes_modal?.notes_modal_create_edit_note?.note_status?.note_status_created_on_label} ${currentNoteCreatedAt}`;\n\n const isNoteOwner = currentNote?.ownerId === user?.id;\n\n const onSubmit: SubmitHandler = async (data) => {\n const { isPublic, ...rest } = data;\n\n await reqNotes({\n method: 'PATCH',\n url: `/notes/${currentNote?.id}`,\n data: {\n ...rest,\n isPrivate: !isPublic,\n },\n });\n\n await reqRelationships({ url: '/relationships' });\n };\n\n const handleDeleteModalClose = () => {\n setIsDeleteModalOpen(false);\n };\n\n const handleDeleteNote = async () => {\n await reqNotes({\n method: 'DELETE',\n url: `/notes/${currentNote?.id}?organizationSlug=${organizationSlug}`,\n });\n\n await reqRelationships({ url: '/relationships' });\n\n navigate(`/relationships/${relationship.id}/notes`);\n };\n\n const actions: IButtonAction[] = [\n ...(isNoteOwner\n ? [\n {\n label: baseLanguage.globals?.common?.delete_button_label,\n variant: 'text',\n color: 'error',\n action: () => setIsDeleteModalOpen(true),\n isLoadingButton: true,\n dataCyLabel: 'relationship-notes-modal-delete-note-button',\n } as IButtonAction,\n ]\n : []),\n {\n label:\n baseLanguage.relationships?.notes?.notes_modal\n ?.notes_modal_create_edit_note?.save_note_button_label,\n variant: 'contained',\n color: 'info',\n action: handleSubmit(onSubmit),\n isLoadingButton: true,\n disabled: !isDirty,\n dataCyLabel: 'relationship-notes-modal-update-note-button',\n },\n ];\n\n const deleteModalActions: IButtonAction[] = [\n {\n label: cancelButtonLabel,\n action: handleDeleteModalClose,\n color: 'info',\n variant: 'outlined',\n dataCyLabel: 'relationship-notes-modal-delete-note-modal-discard-button',\n },\n {\n label: baseLanguage.globals?.common?.delete_button_label,\n action: handleDeleteNote,\n color: 'error',\n variant: 'contained',\n isLoadingButton: true,\n dataCyLabel: 'relationship-notes-modal-delete-note-modal-confirm-button',\n },\n ];\n\n return (\n \n \n \n \n {actions.map((action) => (\n \n ))}\n \n \n\n \n \n );\n};\n","// external\nimport { LoadingButton } from '@mui/lab';\nimport { Box, ThemeProvider, Typography, useTheme } from '@mui/material';\nimport React, { useState } from 'react';\nimport { useNavigate } from 'react-router-dom';\n\n//internal\n\n// components\nimport { TextStack, theme } from '@guider-global/ui';\nimport {\n RelationshipDiscardNoteChangesModal,\n RelationshipNotesModal,\n RelationshipNotesModalProvider,\n} from 'modals';\n//hooks\nimport { useSanityBaseLanguage } from '@guider-global/sanity-hooks';\n\n//types\nimport { IRelationship } from '@guider-global/shared-types';\nimport { deepMerge } from 'utils';\n\ninterface IRelationshipNotesProps {\n relationship: IRelationship;\n}\n\nexport const RelationshipNotes: React.FC = ({\n relationship,\n}) => {\n //state\n const [isNotesModalOpen, setIsNotesModalOpen] = useState(false);\n\n //style\n\n //hooks\n const navigate = useNavigate();\n\n const { getBaseLanguage } = useSanityBaseLanguage({});\n\n const baseLanguage = getBaseLanguage();\n const organizationTheme = useTheme();\n const combinedPalette = deepMerge(\n theme.appTheme.palette,\n organizationTheme.palette,\n );\n\n //handlers\n\n const handleNotesModalClose = () => {\n setIsNotesModalOpen(false);\n\n navigate(`/relationships/${relationship.id}`);\n };\n\n const handleViewNotes = () => {\n setIsNotesModalOpen(true);\n\n navigate(`/relationships/${relationship.id}/notes`);\n };\n\n const handleCreateNote = () => {\n setIsNotesModalOpen(true);\n\n navigate(`/relationships/${relationship.id}/notes/create`);\n };\n\n return (\n <>\n \n \n \n {\n baseLanguage.relationships?.notes?.note_sidebar\n ?.note_sidebar_description\n }\n \n \n \n {\n baseLanguage.relationships?.notes?.note_sidebar\n ?.note_sidebar_input_label\n }\n \n \n\n \n {\n baseLanguage.relationships?.notes?.note_sidebar\n ?.note_sidebar_view_button_label\n }\n \n \n \n \n \n \n \n );\n};\n\nexport * from './RelationshipNotesCreate';\nexport * from './RelationshipNotesEmpty';\nexport * from './RelationshipNotesList';\nexport * from './RelationshipNotesView';\n","// external\nimport { toDate, zonedTimeToUtc } from 'date-fns-tz';\nimport React, { useEffect } from 'react';\nimport { Control, SubmitHandler, useForm } from 'react-hook-form';\nimport { useNavigate } from 'react-router-dom';\n\n// internal\nimport {\n getISOStringWithoutMilliseconds,\n getSubDomain,\n} from '@guider-global/front-end-utils';\n\n// components\nimport { SessionsCreateForm } from 'forms';\n\n// store\nimport { useAppDispatch } from 'store/hooks';\nimport { showAppAlert } from 'store/slices/appSlice';\n\n// hooks\nimport {\n useLocalization,\n useMixpanelEvents,\n useProfiles,\n useRelationships,\n useSessions,\n} from 'hooks';\n\n// types\nimport { getSessionTitle } from '@guider-global/isomorphic-utils';\nimport {\n useBaseLanguage,\n useOrganizationPrograms,\n} from '@guider-global/sanity-hooks';\nimport {\n IRelationship,\n ISession,\n ISessionVideoConferencing,\n} from '@guider-global/shared-types';\nimport { ModalCard } from 'components';\nimport { IButtonAction } from 'components/ActionButton';\nimport { getVideoConferencingProvider } from 'utils/getVideoConferencingProvider';\n\nexport interface ISessionInputs {\n title: string;\n date: Date;\n startTime: string;\n endTime: string;\n location: string;\n videoConferencing: ISessionVideoConferencing;\n}\n\ninterface IRelationshipSessionsCreateProps {\n relationship: IRelationship;\n handleClose: () => void;\n timezone: string;\n}\n\nexport const RelationshipSessionsCreate: React.FC<\n IRelationshipSessionsCreateProps\n> = ({ relationship, handleClose, timezone }) => {\n //base language\n const organizationSlug = getSubDomain();\n const { localeCode } = useLocalization(organizationSlug);\n const { baseLanguage } = useBaseLanguage({ localeCode });\n const sessionsBaseLanguage = baseLanguage?.relationships?.sessions;\n //hooks\n const { trackScreenTime } = useMixpanelEvents();\n const dispatch = useAppDispatch();\n const navigate = useNavigate();\n const { reqRelationships, isLoadingRelationships } = useRelationships({\n getSilently: false,\n });\n\n //form\n const {\n handleSubmit,\n control,\n formState: { errors, isValid },\n setValue,\n } = useForm({ mode: 'onChange' });\n const typedControl: Control = control as unknown as Control;\n\n //profiles\n const { getProfiles } = useProfiles({ getSilently: false });\n const [profile] = getProfiles();\n const guideProfiles = relationship.guideProfiles ?? [];\n const traineeProfiles = relationship.traineeProfiles ?? [];\n\n //sessions\n const { reqSessions, isLoadingSessions } = useSessions({});\n\n const currentSessions = relationship.sessions as Partial[];\n\n const programSlug = relationship.programSlug;\n const { programs } = useOrganizationPrograms({ organizationSlug });\n const program = programs.find(\n (program) => program.metadata.id.current === programSlug,\n );\n\n useEffect(() => {\n trackScreenTime(\n 'Relationship - Session - Schedule new session - Form viewed',\n {\n Started: getISOStringWithoutMilliseconds(),\n },\n );\n }, [trackScreenTime, navigate]);\n\n useEffect(() => {\n trackScreenTime(\n 'Relationship - Session - Schedule new session - Form viewed',\n { Started: getISOStringWithoutMilliseconds() },\n );\n }, [trackScreenTime]);\n\n //handlers\n const programName = program?.metadata?.program_name;\n\n const trackSessionCreateFormSubmit = (\n videoConferencing: ISessionVideoConferencing,\n location: any,\n ) => {\n trackScreenTime(\n 'Relationship - Session - Schedule new session - Form submitted',\n {\n 'Session count': currentSessions.length + 1,\n 'Video conferencing': Boolean(videoConferencing),\n 'Video conferencing provider':\n getVideoConferencingProvider(videoConferencing),\n Location: Boolean(location),\n },\n );\n };\n\n const onSubmit: SubmitHandler = async (data) => {\n const { date, startTime, endTime, videoConferencing, location } = data;\n\n const [startHours, startMinutes] = startTime.split(':');\n const newStart = toDate(date);\n newStart.setHours(parseInt(startHours), parseInt(startMinutes));\n\n const [endHours, endMinutes] = endTime.split(':');\n const newEnd = toDate(date);\n newEnd.setHours(parseInt(endHours), parseInt(endMinutes));\n\n const startUTC = timezone ? zonedTimeToUtc(newStart, timezone) : newStart;\n const endUTC = timezone ? zonedTimeToUtc(newEnd, timezone) : newEnd;\n\n const sessionsResponse = await reqSessions({\n method: 'POST',\n url: `/sessions?organizationSlug=${organizationSlug}`,\n data: {\n name: data.title,\n organizationSlug,\n programSlug,\n relationshipId: relationship.id,\n description: '',\n participantProfiles: [\n ...traineeProfiles.map((trainee) => trainee.id ?? ''),\n ...guideProfiles.map((guide) => guide.id ?? ''),\n ],\n start: startUTC,\n end: endUTC,\n timezone: timezone,\n hasVideoConferencing: Boolean(videoConferencing),\n videoConferencing: videoConferencing,\n ownerProfile: profile.id,\n location,\n },\n });\n\n if (sessionsResponse.status !== 'success') {\n dispatch(\n showAppAlert({\n severity: 'error',\n message: sessionsBaseLanguage?.new_session_modal?.error_alert_text,\n timeout: 5000,\n }),\n );\n } else {\n trackSessionCreateFormSubmit(videoConferencing, location);\n\n await Promise.all([\n reqSessions({ url: '/sessions' }),\n reqRelationships({ url: '/relationships' }),\n ]);\n\n dispatch(\n showAppAlert({\n severity: 'success',\n message: sessionsBaseLanguage?.new_session_modal?.success_alert_text,\n timeout: 5000,\n }),\n );\n\n handleClose();\n }\n };\n\n const modalActions: IButtonAction | IButtonAction[] = [\n {\n label: baseLanguage?.globals?.common?.cancel_button_label,\n color: 'info',\n variant: 'outlined',\n action: handleClose,\n dataCyLabel: 'relationship-create-session-modal-cancel-button',\n },\n {\n label:\n sessionsBaseLanguage?.new_session_modal\n ?.send_calendar_invite_button_label,\n variant: 'contained',\n color: 'info',\n action: handleSubmit(onSubmit),\n isLoadingButton: true,\n disabled: !isValid,\n dataCyLabel: 'relationship-create-session-modal-submit-button',\n },\n ];\n\n return (\n \n navigate(-1)}\n setValue={setValue}\n defaultTitle={\n programName ? getSessionTitle(relationship, programName) : ''\n }\n hideButtons\n timezone={timezone}\n />\n \n );\n};\n","// external\nimport { toDate, zonedTimeToUtc } from 'date-fns-tz';\nimport React, { useState } from 'react';\nimport { Control, SubmitHandler, useForm } from 'react-hook-form';\nimport { useNavigate, useParams } from 'react-router-dom';\n\n// internal\nimport { getSubDomain } from '@guider-global/front-end-utils';\n\n// components\nimport { ModalCard } from 'components';\nimport { PastSessionEditForm, SessionsEditForm } from 'forms';\nimport { ConfirmationModal } from 'modals';\n\n// store\nimport { useAppDispatch } from 'store/hooks';\nimport { showAppAlert } from 'store/slices/appSlice';\n\n// hooks\nimport {\n useMixpanelEvents,\n useProfiles,\n useRelationships,\n useSessions,\n} from 'hooks';\n\n// types\nimport { useSanityBaseLanguage } from '@guider-global/sanity-hooks';\nimport { IProfile, IRelationship } from '@guider-global/shared-types';\nimport { IButtonAction } from 'components/ActionButton';\nimport { getVideoConferencingProvider } from 'utils/getVideoConferencingProvider';\nimport { ISessionInputs } from '../RelationshipSessionsCreate';\n\ninterface IRelationshipSessionsEdit {\n relationship: IRelationship;\n handleClose: () => void;\n timezone: string;\n}\n\nexport const RelationshipSessionsEdit: React.FC = ({\n relationship,\n handleClose,\n timezone,\n}) => {\n //state\n const [isDiscardModalOpen, setIsDiscardModalOpen] = useState(false);\n const [isDeleteModalOpen, setIsDeleteModalOpen] = useState(false);\n\n //form\n const {\n handleSubmit,\n control,\n formState: { errors, isValid, isDirty },\n setValue,\n } = useForm({ mode: 'onChange' });\n const typedControl: Control = control as unknown as Control;\n const programSlug: string = relationship.programSlug as string;\n\n //hooks\n const { trackMixpanelEvent, trackScreenTime } = useMixpanelEvents();\n const navigate = useNavigate();\n const dispatch = useAppDispatch();\n const organizationSlug = getSubDomain();\n\n //baseLanguage\n const { getBaseLanguage } = useSanityBaseLanguage({});\n const baseLanguage = getBaseLanguage();\n\n const cancelButtonLabel = baseLanguage.globals?.common?.cancel_button_label;\n\n //sessions\n const { isLoadingSessions, reqSessions, sessions } = useSessions({});\n const { reqRelationships } = useRelationships({ getSilently: false });\n\n const { getProfiles } = useProfiles({ getSilently: false });\n const [profile] = getProfiles();\n const { sessionId } = useParams();\n const session = sessions?.find((session) => session.id === sessionId);\n\n if (!session?.createdAt) {\n return <>;\n }\n\n const isSessionOwner = profile.id === (session.ownerProfile as IProfile).id;\n\n const pastSession = session.pastSession ?? false;\n\n //handlers\n\n const navigateBack = () => {\n navigate(`/relationships/${relationship.id}/sessions/${sessionId}`);\n };\n\n const onSubmit: SubmitHandler = async (data) => {\n const traineeProfiles = relationship.traineeProfiles ?? [];\n const guideProfile = relationship.guideProfiles ?? [];\n\n const { date, startTime, endTime, videoConferencing, location } = data;\n\n const [startHours, startMinutes] = startTime.split(':');\n const newStart = toDate(date);\n newStart.setHours(parseInt(startHours), parseInt(startMinutes));\n\n const [endHours, endMinutes] = endTime.split(':');\n const newEnd = toDate(date);\n newEnd.setHours(parseInt(endHours), parseInt(endMinutes));\n\n const startUTC = zonedTimeToUtc(newStart, timezone);\n const endUTC = zonedTimeToUtc(newEnd, timezone);\n\n await reqSessions({\n method: 'PATCH',\n url: `/sessions/${sessionId}`,\n data: {\n name: data.title,\n organizationSlug,\n programSlug,\n relationshipId: relationship.id,\n description: '',\n participantProfiles: [\n ...traineeProfiles.map((trainee) => trainee.id ?? ''),\n ...guideProfile.map((guide) => guide.id ?? ''),\n ],\n start: startUTC,\n end: endUTC,\n timezone: timezone,\n hasVideoConferencing: Boolean(videoConferencing),\n videoConferencing: videoConferencing,\n ownerProfile: profile.id,\n location,\n },\n });\n\n trackScreenTime('Relationship - Session - Session updated', {\n 'Updated by': isSessionOwner ? 'Organizer' : 'Participant',\n 'Video conferencing': Boolean(videoConferencing),\n 'Video conferencing provider':\n getVideoConferencingProvider(videoConferencing),\n Location: Boolean(location),\n });\n\n await Promise.all([\n reqSessions({ url: '/sessions' }),\n reqRelationships({ url: '/relationships' }),\n ]);\n\n dispatch(\n showAppAlert({\n severity: 'success',\n message:\n baseLanguage.relationships?.sessions?.edit_session_modal\n ?.success_alert_text,\n timeout: 5000,\n }),\n );\n\n navigateBack();\n };\n\n const handleDiscardChanges = () => {\n if (!isDirty) {\n navigateBack();\n } else {\n setIsDiscardModalOpen(true);\n }\n };\n\n const handleDeleteSession = async () => {\n await reqSessions({\n method: 'PATCH',\n url: `/sessions/${sessionId}`,\n data: {\n isArchived: true,\n },\n });\n\n trackMixpanelEvent('Relationship - Session - Session deleted', {\n 'Deleted by': isSessionOwner ? 'Organizer' : 'Participant',\n });\n\n await Promise.all([\n reqSessions({ url: '/sessions' }),\n reqRelationships({ url: '/relationships' }),\n ]);\n\n dispatch(\n showAppAlert({\n severity: 'success',\n message:\n baseLanguage.relationships?.sessions?.confirm_session_deletion_modal\n ?.success_alert_text,\n timeout: 5000,\n }),\n );\n\n handleClose();\n\n navigate(`/relationships/${relationship.id}`);\n };\n\n const handleDeleteModalClose = () => {\n setIsDeleteModalOpen(false);\n };\n\n const handleDiscardModalClose = () => {\n setIsDiscardModalOpen(false);\n };\n\n //modal actions\n\n const contentModalActions: (IButtonAction | IButtonAction[])[] = [\n {\n label: baseLanguage.globals?.common?.delete_button_label,\n variant: 'text',\n color: 'error',\n action: () => setIsDeleteModalOpen(true),\n dataCyLabel: 'relationship-edit-session-modal-delete-button',\n },\n [\n {\n label: cancelButtonLabel,\n variant: 'outlined',\n color: 'info',\n action: handleDiscardChanges,\n dataCyLabel: 'relationship-edit-session-modal-discard-button',\n },\n {\n label: pastSession\n ? baseLanguage.globals?.common?.save_changes_button_label\n : baseLanguage.relationships?.sessions?.edit_session_modal\n ?.update_calendar_invite_button_label,\n variant: 'contained',\n color: 'info',\n isLoadingButton: true,\n action: handleSubmit(onSubmit),\n dataCyLabel: 'relationship-edit-session-modal-submit-button',\n },\n ],\n ];\n const discardModalActions: IButtonAction[] = [\n {\n label: cancelButtonLabel,\n action: handleDiscardModalClose,\n color: 'info',\n variant: 'outlined',\n dataCyLabel: 'relationship-edit-session-modal-close-discard-button',\n },\n {\n label: baseLanguage.globals?.common?.discard_changes_button_label,\n action: () => {\n navigateBack();\n },\n color: 'error',\n variant: 'contained',\n dataCyLabel: 'relationship-edit-session-modal-confirm-discard-button',\n },\n ];\n const deleteModalActions: IButtonAction[] = [\n {\n label: cancelButtonLabel,\n action: handleDeleteModalClose,\n color: 'info',\n variant: 'outlined',\n dataCyLabel: 'relationship-edit-session-modal-close-delete-button',\n },\n {\n label: baseLanguage.globals?.common?.delete_button_label,\n action: () => {\n handleDeleteSession();\n },\n color: 'error',\n variant: 'contained',\n isLoadingButton: true,\n dataCyLabel: 'relationship-edit-session-modal-confirm-delete-button',\n },\n ];\n\n return (\n \n {session.pastSession ? (\n \n ) : (\n \n )}\n\n \n \n \n );\n};\n","import {\n getFriendlyDateFormat,\n getLanguageFromCMS,\n getSubDomain,\n getTimeFormat,\n} from '@guider-global/front-end-utils';\nimport { useBaseLanguage } from '@guider-global/sanity-hooks';\nimport { IRelationship, ISession } from '@guider-global/shared-types';\nimport {\n AlertBox,\n ButtonStack,\n Icon,\n Stack,\n Text,\n theme,\n} from '@guider-global/ui';\n\nimport History from '@mui/icons-material/History';\nimport {\n Box,\n Button,\n SxProps,\n Theme,\n ThemeProvider,\n useTheme,\n} from '@mui/material';\nimport { ModalCard } from 'components/ModalCard';\nimport { format } from 'date-fns';\nimport { formatInTimeZone } from 'date-fns-tz';\nimport { useAvailabilities, useLocalization, useMobileMediaQuery } from 'hooks';\nimport { useEffect, useState } from 'react';\nimport { useLocation, useNavigate } from 'react-router-dom';\nimport { deepMerge } from 'utils';\n\ninterface IRelationshipSessionsHistoryProps {\n relationship: IRelationship;\n handleClose: () => void;\n isGroupProgram: boolean;\n isActiveGroup: boolean;\n isGuide: boolean;\n timezone: string;\n}\n\nexport const RelationshipSessionHistory: React.FC<\n IRelationshipSessionsHistoryProps\n> = ({\n relationship,\n handleClose,\n isGroupProgram,\n isActiveGroup,\n isGuide,\n timezone,\n}) => {\n //base language\n const organizationSlug = getSubDomain();\n const { localeCode } = useLocalization(organizationSlug);\n const { baseLanguage } = useBaseLanguage({ localeCode });\n\n // Availabilities\n const { reqAvailabilities } = useAvailabilities({});\n\n const isMobile = useMobileMediaQuery();\n const { pathname } = useLocation();\n\n // hooks\n const navigate = useNavigate();\n\n // Styling\n const organizationTheme = useTheme();\n const combinedPalette = deepMerge(\n theme.appTheme.palette,\n organizationTheme.palette,\n );\n\n const declinedStyles: SxProps = {\n border: 1,\n borderColor: combinedPalette.error.light,\n backgroundColor: 0,\n textDecoration: 'line-through',\n };\n const tentativeStyles: SxProps = {\n border: 1,\n borderColor: combinedPalette.info.light,\n borderStyle: 'dashed',\n backgroundColor: 0,\n };\n\n const archived = relationship.isConcluded;\n\n const [isSessionsModalOpen, setIsSessionsModalOpen] = useState(false);\n\n const sessions =\n relationship.sessions?.filter((session) => !session.isArchived) ?? [];\n\n let parsedSessions: { [key: string]: ISession[] } = {};\n\n [...sessions]\n ?.sort((sessionA, sessionB) => {\n if (!sessionA.start || !sessionB.start) return 1;\n if (sessionA.start > sessionB.start) {\n return -1;\n } else {\n return 1;\n }\n })\n .forEach((session) => {\n if (!session?.start) {\n return;\n }\n\n const key = format(new Date(session.start), 'MMM yyyy');\n\n if (!parsedSessions[key]) {\n parsedSessions[key] = [];\n }\n\n parsedSessions[key].push(session as ISession);\n });\n\n const sessionCount = sessions.length;\n\n const locale = getLanguageFromCMS(baseLanguage?.language_code);\n\n const formattedTime = getTimeFormat(baseLanguage?.time_format);\n\n const formattedDate = getFriendlyDateFormat(baseLanguage?.date_format);\n\n const canLogSession =\n !relationship.isConcluded &&\n ((isGroupProgram && isActiveGroup && isGuide) || !isGroupProgram);\n\n useEffect(() => {\n if (pathname.includes('sessions') && !isSessionsModalOpen) {\n setIsSessionsModalOpen(true);\n }\n }, [pathname, isSessionsModalOpen]);\n\n const handleScheduleSession = async () => {\n await reqAvailabilities({\n url: '/availabilities',\n params: {\n organizationSlug,\n date: new Date(),\n timezone,\n },\n });\n\n navigate(`/relationships/${relationship.id}/sessions/create`, {\n replace: false,\n });\n setIsSessionsModalOpen(true);\n };\n\n const handleLogSession = async () => {\n navigate(`/relationships/${relationship.id}/sessions/log`, {\n replace: false,\n });\n setIsSessionsModalOpen(true);\n };\n\n const handleSessionClick = (sessionId: string) => {\n navigate(`/relationships/${relationship.id}/sessions/${sessionId}`, {\n replace: false,\n });\n\n setIsSessionsModalOpen(true);\n };\n\n const renderSessionMonths = () =>\n Object.entries(parsedSessions).map(([key, value]) => {\n return (\n \n \n {renderSessions(value)}\n \n );\n });\n\n const renderSessions = (sessionsToRender: ISession[]) => {\n return sessionsToRender?.map((session, index) => {\n const sessionDate =\n formatInTimeZone(\n new Date(session.start ?? ''),\n timezone,\n `${formattedDate} ${formattedTime}`,\n { locale },\n ) +\n '-' +\n formatInTimeZone(\n new Date(session.end ?? ''),\n timezone,\n ` ${formattedTime}`,\n { locale },\n );\n\n const sessionsLocation = () => {\n if (session.pastSession)\n return baseLanguage?.relationships?.session_history?.modal\n ?.logged_past_session_label;\n if (session.hasVideoConferencing) return session.videoConferencing;\n if (!session.hasVideoConferencing && !session.pastSession)\n return session.location;\n };\n\n const isDeclined =\n session.declinedEmails && session.declinedEmails?.length > 0;\n\n const isTentative =\n session.tentativeEmails && session.tentativeEmails?.length > 0;\n return (\n handleSessionClick(session.id || '')}\n >\n \n {session.pastSession ? (\n \n ) : (\n <>\n )}\n \n \n \n {!session.pastSession ? (\n <>\n \n •\n \n \n ) : (\n \n )}\n \n \n \n \n );\n });\n };\n\n const renderContent = () => {\n if (sessionCount === 0) {\n return (\n \n \n {canLogSession && (\n handleScheduleSession(),\n 'data-cy':\n 'relationship-past-sessions-modal-schedule-session-button',\n },\n {\n key: 'log-session',\n variant: 'text',\n label:\n baseLanguage?.globals?.sessions?.log_session_button_label,\n onClick: () => handleLogSession(),\n sx: { color: combinedPalette.text.secondary },\n 'data-cy':\n 'relationship-past-sessions-modal-log-session-button',\n },\n ]}\n />\n )}\n \n );\n } else {\n return (\n <>\n \n {renderSessionMonths()}\n \n {canLogSession && (\n handleLogSession(),\n 'data-cy':\n 'relationship-past-sessions-modal-log-session-button',\n },\n {\n key: 'new-session',\n variant: 'outlined',\n label: baseLanguage?.globals?.sessions?.schedule_session,\n color: 'info',\n onClick: () => handleScheduleSession(),\n 'data-cy':\n 'relationship-past-sessions-modal-schedule-session-button',\n },\n ]}\n />\n )}\n \n );\n }\n };\n\n return (\n \n \n {renderContent()}\n \n \n );\n};\n","// external\nimport React from 'react';\nimport { useNavigate } from 'react-router-dom';\n\n// hooks\n\n// types\nimport { ModalCard } from 'components';\nimport { IButtonAction } from 'components/ActionButton';\nimport { IntegrationsList } from 'components/IntegrationsList';\nimport { useSanityBaseLanguage } from '@guider-global/sanity-hooks';\n\ninterface IRelationshipSessionsIntegrateProps {\n handleClose: () => void;\n}\n\nexport const RelationshipSessionsIntegrate: React.FC<\n IRelationshipSessionsIntegrateProps\n> = ({ handleClose }) => {\n //hooks\n const navigate = useNavigate();\n\n //base language\n const { getBaseLanguage } = useSanityBaseLanguage({});\n const baseLanguage = getBaseLanguage();\n const integrationsModal =\n baseLanguage.relationships?.sessions?.manage_integrations_modal;\n\n //handlers\n const handleGoBack = () => {\n navigate(-1);\n };\n\n //modal actions\n const modalGoBackAction: IButtonAction = {\n label: baseLanguage.globals?.common?.go_back_button_label,\n action: handleGoBack,\n variant: 'contained',\n color: 'info',\n dataCyLabel:\n 'components_Relationships_RelationshipSessions_RelationshipSesssionsIntegrate_cancel-button',\n };\n\n return (\n \n \n \n );\n};\n","// external\nimport React, { useState } from 'react';\nimport { SubmitHandler, useForm } from 'react-hook-form';\nimport { useSearchParams } from 'react-router-dom';\n\n// internal\nimport { getSubDomain } from '@guider-global/front-end-utils';\n\n// components\n\n// store\nimport { useAppDispatch } from 'store/hooks';\nimport { showAppAlert } from 'store/slices/appSlice';\n\n// hooks\nimport { useProfiles, useRelationships, useSessions } from 'hooks';\n\n// types\nimport {\n useSanityBaseLanguage,\n useSanityOrganizationPrograms,\n} from '@guider-global/sanity-hooks';\nimport {\n IRelationship,\n TConvertableSessionLogTime,\n TimeZone,\n} from '@guider-global/shared-types';\nimport {\n getPastSessionStartAndEndDates,\n getSessionTitle,\n} from '@guider-global/isomorphic-utils';\nimport { Checkbox, Stack, theme } from '@guider-global/ui';\nimport { ThemeProvider, useMediaQuery, useTheme } from '@mui/material';\nimport { ModalCard } from 'components';\nimport { IButtonAction } from 'components/ActionButton';\nimport { deepMerge } from 'utils';\n\nexport interface ISessionLogInputs {\n title: string;\n date: Date;\n startTime: string;\n endTime: string;\n}\n\ninterface IRelationshipSessionsLogProps {\n relationship: IRelationship;\n handleClose: () => void;\n}\n\ninterface IDateCheckbox {\n heading: string | undefined;\n name: TConvertableSessionLogTime;\n}\n\nexport const RelationshipSessionsLog: React.FC<\n IRelationshipSessionsLogProps\n> = ({ relationship, handleClose }) => {\n const [searchParams] = useSearchParams();\n const day = (searchParams.get('day') ?? '0') as\n | TConvertableSessionLogTime\n | undefined;\n\n const [checkedDate, setCheckedDate] = useState<\n TConvertableSessionLogTime | undefined\n >(day);\n\n //baseLanguage\n const { getBaseLanguage } = useSanityBaseLanguage({});\n const baseLanguage = getBaseLanguage();\n const pastSessionsLabels =\n baseLanguage.relationships?.sessions?.log_past_session_modal;\n\n const checkboxes: IDateCheckbox[] = [\n {\n heading: pastSessionsLabels?.today_checkbox_label,\n name: 'today',\n },\n {\n heading: pastSessionsLabels?.this_week_checkbox_label,\n name: 'this-week',\n },\n {\n heading: pastSessionsLabels?.this_month_checkbox_label,\n name: 'this-month',\n },\n {\n heading: pastSessionsLabels?.last_month_checkbox_label,\n name: 'last-month',\n },\n ];\n\n const organizationTheme = useTheme();\n const combinedPalette = deepMerge(\n theme.appTheme.palette,\n organizationTheme.palette,\n );\n\n //hooks\n const dispatch = useAppDispatch();\n const organizationSlug = getSubDomain();\n const { reqRelationships, isLoadingRelationships } = useRelationships({\n getSilently: false,\n });\n\n //form\n const { handleSubmit } = useForm({ mode: 'onChange' });\n\n const { getProfiles } = useProfiles({ getSilently: false });\n const [profile] = getProfiles();\n const guideProfiles = relationship.guideProfiles ?? [];\n const traineeProfiles = relationship.traineeProfiles ?? [];\n\n const { breakpoints } = useTheme();\n const isMobile = useMediaQuery(breakpoints.down('md'));\n\n //sessions\n const { reqSessions, isLoadingSessions } = useSessions({});\n\n const programSlug = relationship?.programSlug;\n const { getProgram } = useSanityOrganizationPrograms({});\n\n let program;\n\n if (programSlug) {\n program = getProgram(programSlug);\n }\n\n const programName = program?.metadata.program_name;\n\n const onSubmit: SubmitHandler = async (data) => {\n if (!checkedDate) {\n return;\n }\n\n const { timeZone } = Intl.DateTimeFormat().resolvedOptions() as {\n timeZone?: TimeZone | string;\n };\n\n const selectedDate = checkboxes.find(\n (checkbox) => checkbox.name === checkedDate,\n );\n\n if (!selectedDate) {\n return;\n }\n\n const pastSessionDates = getPastSessionStartAndEndDates(selectedDate?.name);\n\n const sessionsResponse = await reqSessions({\n method: 'POST',\n url: '/sessions',\n data: {\n name: programName\n ? getSessionTitle(relationship, programName ?? '')\n : 'Logged',\n organizationSlug,\n programSlug,\n relationshipId: relationship.id,\n description: '',\n participantProfiles: [\n ...traineeProfiles.map((trainee) => trainee.id ?? ''),\n ...guideProfiles.map((guide) => guide.id ?? ''),\n ],\n start: pastSessionDates.start,\n end: pastSessionDates.end,\n timezone: timeZone,\n ownerProfile: profile.id,\n pastSession: true,\n },\n });\n\n if (sessionsResponse.status !== 'success') {\n dispatch(\n showAppAlert({\n severity: 'error',\n message:\n baseLanguage.relationships?.sessions?.log_past_session_modal\n ?.log_session_error_alert_text,\n timeout: 5000,\n }),\n );\n } else {\n await Promise.all([\n reqSessions({ url: '/sessions' }),\n reqRelationships({ url: '/relationships' }),\n ]);\n\n dispatch(\n showAppAlert({\n severity: 'success',\n message:\n baseLanguage.relationships?.sessions?.log_past_session_modal\n ?.log_session_success_alert_text,\n timeout: 5000,\n }),\n );\n\n handleClose();\n }\n };\n\n const modalActions: IButtonAction | IButtonAction[] = [\n {\n label: baseLanguage.globals?.common?.cancel_button_label,\n color: 'info',\n variant: 'outlined',\n action: handleClose,\n dataCyLabel: 'relationship-log-session-modal-cancel-button',\n },\n {\n label: baseLanguage.globals?.sessions?.log_session_button_label,\n variant: 'contained',\n color: 'info',\n action: handleSubmit(onSubmit),\n isLoadingButton: true,\n disabled: !checkedDate,\n dataCyLabel: 'relationship-log-session-modal-log-session-button',\n },\n ];\n\n return (\n \n \n \n {checkboxes.map((checkbox) => (\n setCheckedDate(checkbox.name)}\n isChecked={checkedDate === checkbox.name}\n data-cy={`relationship-log-session-modal-${checkbox.name}-button`}\n />\n ))}\n \n \n \n );\n};\n","// external\nimport { Card } from '@mui/material';\nimport React, { useEffect } from 'react';\nimport { useNavigate, useParams } from 'react-router-dom';\n\n// components\nimport { IAttendee, ModalCard, SessionsDetails } from 'components';\n\n// Hooks\nimport { useBaseLanguage } from '@guider-global/sanity-hooks';\n\n// types\nimport {\n getISOStringWithoutMilliseconds,\n getSubDomain,\n} from '@guider-global/front-end-utils';\nimport { IRelationship, ISession } from '@guider-global/shared-types';\nimport { IButtonAction } from 'components/ActionButton';\nimport { useLocalization, useMixpanelEvents } from 'hooks';\n\ninterface IRelationshipSessionsViewProps {\n relationship: IRelationship;\n handleClose: () => void;\n isGroupProgram: boolean;\n isActiveGroup: boolean;\n isGuide: boolean;\n timezone: string;\n}\n\nexport const RelationshipSessionsView: React.FC<\n IRelationshipSessionsViewProps\n> = ({\n relationship,\n handleClose,\n isGroupProgram,\n isActiveGroup,\n isGuide,\n timezone,\n}) => {\n const canSeeEditSessionButton =\n !relationship.isConcluded &&\n ((isGroupProgram && isActiveGroup && isGuide) || !isGroupProgram);\n\n //base language\n const organizationSlug = getSubDomain();\n const { localeCode } = useLocalization(organizationSlug);\n const { baseLanguage } = useBaseLanguage({ localeCode });\n\n //hooks\n const { trackMixpanelEvent } = useMixpanelEvents();\n const navigate = useNavigate();\n\n //sessions\n const { sessionId } = useParams();\n const relationshipSessions = relationship?.sessions as ISession[];\n const session = relationshipSessions.find(\n (session) => session.id === sessionId,\n );\n\n useEffect(() => {\n if (!session) return;\n trackMixpanelEvent('Relationship - Session - Session viewed', {\n Viewed: getISOStringWithoutMilliseconds(),\n });\n }, [session, trackMixpanelEvent]);\n\n if (!session) {\n return <>;\n }\n\n //handlers\n const handleEditSession = () => {\n navigate(`/relationships/${relationship.id}/sessions/${sessionId}/edit`);\n };\n\n //modal actions\n const modalActions: IButtonAction[] = [\n {\n label: baseLanguage?.globals?.common?.close_button_label,\n variant: 'contained',\n color: 'info',\n action: handleClose,\n dataCyLabel: 'relationship-view-session-modal-close-button',\n },\n ];\n\n if (canSeeEditSessionButton) {\n modalActions.unshift({\n label: baseLanguage?.globals?.sessions?.edit_session_button_label,\n variant: 'outlined',\n color: 'info',\n action: handleEditSession,\n dataCyLabel: 'relationship-view-session-modal-edit-session-button',\n });\n }\n\n const attendees: IAttendee[] = [\n ...(relationship.guideProfiles ?? []),\n ...(relationship.traineeProfiles ?? []),\n ].map((profile) => {\n const user = relationship.users?.find((user) => user.id === profile.userId);\n return {\n ...profile,\n userPicture: user?.picture,\n };\n });\n\n return (\n \n \n {\n \n }\n \n \n );\n};\n","// external\nimport {\n Box,\n Divider,\n Button as MuiButton,\n ThemeProvider,\n Typography,\n useTheme,\n} from '@mui/material';\nimport React, { useEffect, useState } from 'react';\nimport { useLocation, useNavigate, useParams } from 'react-router-dom';\n\n// components\nimport { RelationshipSessionsModal } from 'modals';\n\n// Hooks\nimport { useAvailabilities } from 'hooks';\n\n// types\n\n// Internal\nimport {\n getFriendlyDateFormat,\n getLanguageFromCMS,\n getTimeFormat,\n} from '@guider-global/front-end-utils';\nimport { useSanityBaseLanguage } from '@guider-global/sanity-hooks';\nimport { IRelationship } from '@guider-global/shared-types';\nimport { ButtonStack, Icon, TextStack, theme } from '@guider-global/ui';\nimport History from '@mui/icons-material/History';\n\nimport { useSettings } from '@guider-global/front-end-hooks';\nimport { formatInTimeZone } from 'date-fns-tz';\nimport { deepMerge } from 'utils';\n// types\ninterface IRelationshipSessionsProps {\n relationship: IRelationship;\n isGroupProgram: boolean;\n isActiveGroup?: boolean;\n isGuide: boolean;\n}\n\nexport const RelationshipSessions: React.FC = ({\n relationship,\n isGroupProgram,\n isActiveGroup = false,\n isGuide,\n}) => {\n const { reqAvailabilities } = useAvailabilities({});\n\n const { settings } = useSettings({\n options: { keepPreviousData: true },\n });\n const timeZone = settings?.at(0)?.timezone ?? 'Europe/London';\n\n const [isSessionsModalOpen, setIsSessionsModalOpen] = useState(false);\n const navigate = useNavigate();\n const { pathname } = useLocation();\n const { sessionId } = useParams();\n const { getBaseLanguage } = useSanityBaseLanguage({});\n const baseLanguage = getBaseLanguage();\n const organizationTheme = useTheme();\n const sessions = relationship.sessions;\n const now = new Date();\n\n const archived = relationship.isConcluded;\n\n const canSeeNewSessionButton =\n !relationship.isConcluded &&\n ((isGroupProgram && isActiveGroup && isGuide) || !isGroupProgram);\n\n const canSeeSessions = (isGroupProgram && isActiveGroup) || !isGroupProgram;\n\n const filteredSessions = sessions?.filter((session) => {\n const sessionEndDate = session?.end ? new Date(session?.end) : undefined;\n if (!sessionEndDate) return false;\n const hasSessionEnded = sessionEndDate <= now;\n if (hasSessionEnded) return false;\n if (session.isArchived) return false;\n return true;\n });\n\n const combinedPalette = deepMerge(\n theme.appTheme.palette,\n organizationTheme.palette,\n );\n\n const locale = getLanguageFromCMS(baseLanguage.language_code);\n\n const FormattedTime = getTimeFormat(baseLanguage.time_format);\n\n const FormattedDate = getFriendlyDateFormat(baseLanguage.date_format);\n\n const handleSessionsModalClose = () => {\n navigate(`/relationships/${relationship.id}`);\n\n setIsSessionsModalOpen(false);\n };\n\n const handleScheduleSession = async () => {\n await reqAvailabilities({ url: '/availabilities' });\n\n navigate(`/relationships/${relationship.id}/sessions/create`);\n setIsSessionsModalOpen(true);\n };\n\n const handleLogSession = async () => {\n navigate(`/relationships/${relationship.id}/sessions/log`);\n setIsSessionsModalOpen(true);\n };\n const handleHistorySession = () => {\n setIsSessionsModalOpen(true);\n\n navigate(`/relationships/${relationship.id}/sessions/history`);\n };\n\n const renderSessionsCount = () => {\n const sessionsCount = filteredSessions?.length ?? 0;\n\n if (sessionsCount > 1) {\n return `${sessionsCount} ${baseLanguage.relationships?.sessions?.sidebar?.multiple_sessions_scheduled_label}`;\n } else if (sessionsCount === 1) {\n return `${sessionsCount} ${baseLanguage.relationships?.sessions?.sidebar?.single_session_scheduled_label}`;\n } else {\n return baseLanguage.relationships?.sessions?.sidebar\n ?.no_sessions_scheduled_label;\n }\n };\n\n const handleSessionClick = (sessionId: string) => {\n navigate(`/relationships/${relationship.id}/sessions/${sessionId}`, {\n replace: false,\n });\n\n setIsSessionsModalOpen(true);\n };\n\n useEffect(() => {\n if (pathname.includes('sessions')) {\n const isOnCreateSessionPage = pathname.endsWith('/create');\n const session = relationship.sessions?.find(\n (session) => session.id === sessionId,\n );\n\n if (session?.isArchived) {\n navigate(`/relationships/${relationship.id}`);\n } else if ((isOnCreateSessionPage || session) && !isSessionsModalOpen) {\n setIsSessionsModalOpen(true);\n }\n }\n }, [\n pathname,\n isSessionsModalOpen,\n relationship.sessions,\n relationship.id,\n sessionId,\n navigate,\n ]);\n\n const renderSessions = () => {\n return filteredSessions?.map((session, index) => {\n const formattedStart = formatInTimeZone(\n new Date(session.start ?? ''),\n timeZone,\n `${FormattedDate} ${FormattedTime}`,\n { locale },\n );\n const formattedEnd = formatInTimeZone(\n new Date(session.end ?? ''),\n timeZone,\n ` ${FormattedTime}`,\n { locale },\n );\n\n return (\n handleSessionClick(session.id ?? '')}\n >\n \n {session.name}\n \n \n {formattedStart}\n {' - '}\n {formattedEnd}\n \n \n );\n });\n };\n\n return canSeeSessions ? (\n <>\n \n \n \n\n \n \n \n \n\n \n {renderSessions()}\n \n {canSeeNewSessionButton && (\n handleScheduleSession(),\n 'data-cy': 'relationship-schedule-session-button',\n },\n {\n key: 'log-session',\n variant: 'outlined',\n label: baseLanguage.globals?.sessions?.log_session_button_label,\n color: 'info',\n onClick: () => handleLogSession(),\n 'data-cy': 'relationship-log-session-button',\n },\n ]}\n />\n )}\n \n \n {isSessionsModalOpen && (\n \n )}\n \n ) : undefined;\n};\n\nexport * from './RelationshipSessionsCreate';\nexport * from './RelationshipSessionsEdit';\nexport * from './RelationshipSessionsHistory';\nexport * from './RelationshipSessionsIntegrate';\nexport * from './RelationshipSessionsLog';\nexport * from './RelationshipSessionsView';\n","//external\nimport { Modal } from '@mui/material';\n\n//components\nimport { ModalCard } from 'components/ModalCard';\n\n//types\nimport { ProfilePreview } from 'components';\nimport {\n MembershipDataProps,\n ProfilePreviewProfileData,\n} from 'components/ProfilePreview';\n\ninterface RelationshipViewProfileModalProps {\n isOpen: boolean;\n title: string | undefined;\n closeButtonLabel: string | undefined;\n handleClose: () => void;\n closeButtonAction: () => void;\n programSlug: string | undefined;\n userRole: 'guide' | 'trainee';\n profileData: ProfilePreviewProfileData;\n membershipData: MembershipDataProps;\n connectAction?: () => void;\n isLoading?: boolean;\n}\n\nexport function RelationshipViewProfileModal({\n isOpen,\n title,\n closeButtonLabel,\n handleClose,\n closeButtonAction,\n programSlug,\n userRole,\n profileData,\n membershipData,\n connectAction,\n isLoading = false,\n}: RelationshipViewProfileModalProps) {\n return (\n \n \n \n \n \n );\n}\n","//external\nimport { Box, Divider, ThemeProvider, useTheme } from '@mui/material';\nimport { useState } from 'react';\n\n//hooks\nimport {\n useOrganization,\n useSanityBaseLanguage,\n useSanityOrganizationPrograms,\n} from '@guider-global/sanity-hooks';\n\n//types\nimport {\n IMembership,\n IRelationship,\n ISkill,\n Program,\n SanityProgramTypeTextValue,\n} from '@guider-global/shared-types';\nimport {\n MembershipDataProps,\n ProfilePreviewProfileData,\n} from 'components/ProfilePreview';\nimport { useProfiles } from 'hooks';\n\nimport { RelationshipViewProfileModal } from '../RelationshipViewProfileModal';\nimport { Button, theme } from '@guider-global/ui';\nimport { deepMerge } from 'utils';\nimport { interpolate } from 'functions';\nimport { getSubDomain } from '@guider-global/front-end-utils';\n\ninterface RelationshipViewProfileProps {\n relationship: IRelationship;\n}\n\nexport function RelationshipViewProfile({\n relationship,\n}: RelationshipViewProfileProps) {\n //state\n const [selectedUserId, setSelectedUserId] = useState();\n\n // Organization\n const organizationSlug = getSubDomain();\n const { organization } = useOrganization({ organizationSlug });\n\n //style\n const organizationTheme = useTheme();\n const combinedPalette = deepMerge(\n theme.appTheme.palette,\n organizationTheme.palette,\n );\n\n //base language\n const { getBaseLanguage } = useSanityBaseLanguage({});\n const baseLanguage = getBaseLanguage();\n const modalTitle = baseLanguage.relationships?.view_profile_modal?.title;\n const modalCloseButtonLabel =\n baseLanguage.globals?.common?.close_button_label ?? 'Close';\n\n // Profile\n const { getProfiles } = useProfiles({ getSilently: false });\n const [profile] = getProfiles();\n const profileId = profile?.id;\n\n const guideProfiles = relationship.guideProfiles ?? [];\n const traineeProfiles = relationship.traineeProfiles ?? [];\n\n //program\n const programSlug = relationship?.programSlug;\n const { getProgram } = useSanityOrganizationPrograms({});\n\n let program: Program | undefined;\n let programTypeText: SanityProgramTypeTextValue | undefined;\n if (programSlug) {\n program = getProgram(programSlug);\n programTypeText = program?.program_details?.program_type?.program_type_text;\n } else {\n programTypeText =\n organization?.open_matching.program_type?.program_type_text;\n }\n\n // TODO: reinstate view profile for open matching - currently set up for Memberships only\n\n if (!programSlug) return;\n\n const otherUsers = [...guideProfiles, ...traineeProfiles].filter(\n (profile) => profile.id !== profileId,\n );\n\n //handlers\n const handleModalClose = () => setSelectedUserId(undefined);\n const handleModalOpen = (userId?: string) => setSelectedUserId(userId);\n\n const getSelectedUsersProfileData = (\n selectedUserId?: string,\n ): ProfilePreviewProfileData => {\n const guideProfiles = relationship.guideProfiles ?? [];\n const traineeProfiles = relationship.traineeProfiles ?? [];\n const profiles = [...guideProfiles, ...traineeProfiles];\n\n const selectedProfile = profiles.find(\n (profile) => profile.userId === selectedUserId,\n );\n\n const selectedProfileUserId = selectedProfile?.userId;\n\n const selectedUser = relationship.users?.find(\n (user) => user.id === selectedProfileUserId,\n );\n return {\n ...selectedProfile,\n pictures: {\n profile: selectedProfile?.picture,\n user: selectedUser?.picture,\n },\n };\n };\n\n const getSelectedUsersMembershipData = (\n selectedUserId?: string,\n ): MembershipDataProps => {\n const guideMemberships = relationship.guideMemberships ?? [];\n const traineeMemberships = relationship.traineeMemberships ?? [];\n const memberships = [...guideMemberships, ...traineeMemberships];\n\n const selectedMembership = memberships.find(\n (membership) => membership.userId === selectedUserId,\n );\n\n const skillFieldSlugs = selectedMembership?.skills?.map((skill) => {\n const skillTyped = skill as ISkill;\n return skillTyped.fieldSlug;\n });\n return {\n skills: skillFieldSlugs ?? [],\n membership: selectedMembership ? [selectedMembership as IMembership] : [],\n };\n };\n\n const getSelectedUserRole = (selectedUserId?: string) => {\n const guideProfile = relationship.guideProfiles?.find(\n (guideProfile) => guideProfile.userId === selectedUserId,\n );\n if (guideProfile) return 'guide';\n return 'trainee';\n };\n\n return (\n <>\n \n \n {otherUsers.map((otherUser) => {\n return (\n handleModalOpen(otherUser.userId)}\n sx={{\n fontWeight: 600,\n mb: 2,\n px: 0.5,\n py: 1,\n }}\n >\n {interpolate(\n programTypeText?.variations?.individual?.relationships\n ?.view_profile_button_label ?? '',\n {\n firstName: otherUser.firstName ?? '',\n lastName: otherUser.lastName ?? '',\n },\n 'View Profile',\n )}\n \n );\n })}\n \n \n \n \n \n );\n}\n","// external\nimport React, { useEffect } from 'react';\nimport ArrowDropDown from '@mui/icons-material/ArrowDropDown';\nimport {\n Accordion,\n AccordionSummary,\n Typography,\n AccordionDetails,\n} from '@mui/material';\n\n// components\nimport { RelationshipsList } from 'components';\n\n// Hooks\nimport { useSanityBaseLanguage } from '@guider-global/sanity-hooks';\n\n// types\nimport { IRelationship } from '@guider-global/shared-types';\nimport { useParams } from 'react-router-dom';\n\ninterface IRelationshipsArchivedListProps {\n relationships: IRelationship[];\n isLoading: boolean;\n}\n\nexport const RelationshipsArchivedList: React.FC<\n IRelationshipsArchivedListProps\n> = ({ relationships, isLoading }) => {\n const [expanded, setExpanded] = React.useState(false);\n const { getBaseLanguage } = useSanityBaseLanguage({});\n const baseLanguage = getBaseLanguage();\n\n const label =\n baseLanguage.relationships?.relationships_list?.archived_section_label;\n\n const { relationshipId } = useParams();\n\n const relationshipIds = relationships.map((relationship) => relationship.id);\n\n const isActive = relationshipId\n ? relationshipIds.includes(relationshipId)\n : false;\n\n useEffect(() => {\n if (isActive) {\n setExpanded(true);\n }\n }, [isActive]);\n\n const handleChange = (event: React.SyntheticEvent, expanded: boolean) =>\n setExpanded(expanded);\n\n const accordionProps = {\n elevation: 0,\n sx: {\n width: '100%',\n backgroundColor: 'transparent',\n ':before': { display: 'none' },\n '&.Mui-expanded': {\n m: 0,\n },\n },\n 'data-cy': 'archived-relationships-list',\n };\n\n const accordionSummaryProps = {\n expandIcon: ,\n 'aria-controls': 'panel1a-content',\n id: 'panel1a-header',\n sx: {\n m: 0,\n p: 0,\n minHeight: 'auto',\n '& .MuiAccordionSummary-content': {\n m: 0,\n '&.Mui-expanded': {\n m: 0,\n minHeight: 'auto',\n },\n },\n '&.Mui-expanded': {\n m: 0,\n minHeight: 'auto',\n },\n },\n };\n\n const accordionDetailsProps = {\n sx: {\n p: 0,\n },\n };\n\n return (\n \n \n \n {label}\n \n \n \n \n \n \n );\n};\n","import Person from '@mui/icons-material/Person';\nimport { Avatar, Typography, Box, useTheme } from '@mui/material';\n\n// Hooks\nimport { useSanityBaseLanguage } from '@guider-global/sanity-hooks';\n\nexport const RelationshipsEmpty = () => {\n const theme = useTheme();\n const { getBaseLanguage } = useSanityBaseLanguage({});\n const baseLanguage = getBaseLanguage();\n return (\n \n \n \n \n \n {baseLanguage.relationships?.relationships_list?.no_relationships}\n \n \n );\n};\n","// external\nimport React from 'react';\nimport { Box, Skeleton } from '@mui/material';\n\n// components\nimport { RelationshipItem, RelationshipsEmpty } from 'components';\n\n// types\nimport { IRelationship } from '@guider-global/shared-types';\n\ninterface IRelationshipsListProps {\n relationships: IRelationship[];\n isLoading: boolean;\n}\n\nexport const RelationshipsList: React.FC = ({\n relationships,\n isLoading,\n}) => {\n if (isLoading)\n return (\n <>\n \n \n \n \n );\n\n return (\n \n {relationships.length === 0 ? (\n \n ) : (\n relationships.map((relationship) => (\n \n ))\n )}\n \n );\n};\n","import { FC, useEffect, useMemo, useState } from 'react';\nimport { ChatMessageReceivedEvent } from '@azure/communication-chat';\nimport { AzureCommunicationTokenCredential } from '@azure/communication-common';\nimport {\n createStatefulChatClient,\n StatefulChatClient,\n} from '@azure/communication-react';\nimport { useNavigate } from 'react-router-dom';\n\nimport { RelationshipsPage } from 'pages';\n\nimport { useChatToken, useProfiles, useRelationships } from 'hooks';\n\nimport { useAppDispatch } from 'store/hooks';\nimport {\n setIsUnreadMessages,\n IRelationshipThreads,\n updateRelationshipThreads,\n IRelationshipThread,\n} from 'store/slices/relationshipThreadsSlice';\n\nimport { IError } from '@guider-global/shared-types';\n\nimport { datadogLogs } from '@guider-global/datadog';\nimport { useChatParticipants } from 'hooks/useChatParticipants';\nimport { showAppAlert } from 'store/slices/appSlice';\n\ninterface RelationshipsWrapperProps {\n getRelationshipSilently?: boolean;\n getProfilesSilently?: boolean;\n}\n\nconst { REACT_APP_AZURE_COMMUNICATION_ENDPOINT_URL } = process.env;\n\nexport const RelationshipsWrapper: FC = ({\n getRelationshipSilently = true,\n getProfilesSilently = false,\n}) => {\n // Router\n const navigate = useNavigate();\n // Redux\n const dispatch = useAppDispatch();\n // Local state\n const [error, setError] = useState();\n const [credential, setCredential] =\n useState();\n const [statefulChatClient, setStatefulChatClient] =\n useState();\n\n // Internal Hooks\n // Relationships\n const { relationships: getRelationships, getErrorsRelationships } =\n useRelationships({\n getSilently: getRelationshipSilently,\n });\n\n const relationships = getRelationships();\n const memoRelationships = useMemo(() => relationships, [relationships]);\n\n const errorsRelationships = getErrorsRelationships();\n\n // Profile\n const { getProfiles } = useProfiles({ getSilently: getProfilesSilently });\n const [profile] = getProfiles();\n const profileId = profile?.id ?? '';\n const communicationUserId = profile?.communicationUserId ?? '';\n const displayName = profile?.displayName ?? '';\n // Chat token\n const { token, error: chatTokenError } = useChatToken(profileId);\n // Chats\n const { chatParticipants } = useChatParticipants({});\n\n useEffect(() => {\n if (!token) return;\n\n try {\n const getCredential = new AzureCommunicationTokenCredential(token);\n setCredential(getCredential);\n } catch (error) {\n datadogLogs.logger.error('RelationshipWrapper:getCredential:', {\n error,\n });\n if (error instanceof Error) {\n setError({ message: error?.message, code: error?.name });\n } else {\n setError({\n message: 'Failed to construct token credential',\n code: 'unknown error',\n });\n }\n console.error('Failed to construct token credential');\n return undefined;\n }\n }, [token]);\n\n useEffect(() => {\n if (!credential) return;\n const endpoint = REACT_APP_AZURE_COMMUNICATION_ENDPOINT_URL;\n if (!endpoint) return;\n const getStatefulChatClient = createStatefulChatClient({\n userId: { communicationUserId },\n displayName: displayName,\n endpoint,\n credential,\n });\n\n setStatefulChatClient(getStatefulChatClient);\n }, [communicationUserId, credential, displayName]);\n\n useEffect(() => {\n if (!statefulChatClient) return;\n const startRealtimeNotifications = async () => {\n try {\n await statefulChatClient.startRealtimeNotifications();\n } catch (err) {\n datadogLogs.logger.error(\n 'RelationshipWrapper:startRealtimeNotifications',\n {\n err,\n },\n );\n console.error(err);\n if (err instanceof Error) {\n setError({ message: err?.message, code: err?.name });\n } else {\n setError({\n message: 'Error Occurred starting Real time notifications',\n code: 'unknown error',\n });\n }\n }\n };\n\n const threads = memoRelationships.map(\n (relationship): IRelationshipThread => {\n const threadId = relationship.threadId ?? '';\n const relationshipId = relationship.id;\n const isConcluded = relationship.isConcluded;\n const isUnreadMessages =\n chatParticipants?.find(\n (participant) => participant.threadId === threadId,\n )?.isUnreadMessages ?? false;\n return {\n id: relationshipId,\n threadId,\n isConcluded,\n isUnreadMessages,\n };\n },\n );\n const relationshipThreads = {\n threads,\n statefulChatClient,\n } as IRelationshipThreads;\n\n dispatch(updateRelationshipThreads(relationshipThreads));\n\n startRealtimeNotifications();\n\n const onChatMessageReceived = ({\n threadId,\n sender,\n }: ChatMessageReceivedEvent) => {\n if (\n sender.kind === 'communicationUser' &&\n sender.communicationUserId !== communicationUserId\n ) {\n dispatch(setIsUnreadMessages({ threadId }));\n }\n };\n\n statefulChatClient.on('chatMessageReceived', onChatMessageReceived);\n return () => {\n statefulChatClient.off('chatMessageReceived', onChatMessageReceived);\n };\n }, [\n chatParticipants,\n communicationUserId,\n dispatch,\n memoRelationships,\n statefulChatClient,\n ]);\n\n useEffect(() => {\n const handleDispatchedError = (\n errorCode?: string,\n errorMessage?: string,\n ) => {\n const code = errorCode ?? 'Undefined Error Code';\n const message = errorMessage ?? 'Undefined Error Messsage';\n console.error('error', { code, message });\n datadogLogs.logger.error('RelationshipWrapper:', { code, message });\n dispatch(\n showAppAlert({\n severity: 'error',\n message: message,\n timeout: 10000,\n }),\n );\n };\n if (errorsRelationships.length > 0) {\n const errorCode = errorsRelationships[0].code?.toString();\n handleDispatchedError(errorCode, errorsRelationships[0].message);\n }\n if (chatTokenError) {\n const errorCode = chatTokenError.code?.toString();\n handleDispatchedError(errorCode, chatTokenError.message);\n }\n if (error?.message) {\n const errorCode = error.code?.toString();\n handleDispatchedError(errorCode, error.message);\n }\n }, [chatTokenError, dispatch, error, errorsRelationships, navigate]);\n\n return ;\n};\n","import * as Icons from 'react-icons/md';\n\nexport type MDIcons = keyof typeof Icons;\n\ninterface ISanityIconProps {\n name?: MDIcons;\n}\n\nexport const SanityIcon = ({ name }: ISanityIconProps) => {\n if (!name) return <>;\n const Icon = Icons[name];\n\n return ;\n};\n","// external\nimport { useEffect } from 'react';\nimport { useLocation } from 'react-router-dom';\n\nexport const ScrollToTop = () => {\n const { pathname } = useLocation();\n\n useEffect(() => {\n window.scrollTo(0, 0);\n }, [pathname]);\n\n return null;\n};\n","import React, { useCallback } from 'react';\n\nimport { IProfile, ISession } from '@guider-global/shared-types';\nimport CancelIcon from '@mui/icons-material/Cancel';\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\nimport HelpIcon from '@mui/icons-material/Help';\nimport VideoCameraFront from '@mui/icons-material/VideoCameraFront';\nimport { Avatar, Box, Button, Typography } from '@mui/material';\nimport { SiMicrosoftteams } from 'react-icons/si';\n\n// Hooks\nimport { useBaseLanguage } from '@guider-global/sanity-hooks';\n\nimport { useProfileImage } from '@guider-global/azure-storage-hooks';\nimport {\n getFriendlyDateFormat,\n getISOStringWithoutMilliseconds,\n getLanguageFromCMS,\n getSubDomain,\n getTimeFormat,\n} from '@guider-global/front-end-utils';\nimport { defaultPalette, primitiveColors } from '@guider-global/ui';\nimport { formatInTimeZone } from 'date-fns-tz';\nimport { useLocalization, useMixpanelEvents } from 'hooks';\n\nexport interface IAttendee extends Partial {\n userPicture?: string;\n}\n\ninterface ISessionsDetails {\n session: ISession;\n attendees: IAttendee[];\n timezone: string;\n}\n\nconst HAS_ACCEPTED = 0;\nconst IS_TENTATIVE = 1;\nconst HAS_DECLINED = 2;\nconst NO_RESPONSE = 3;\ntype AttendeeResponse = [\n IAttendee,\n (\n | typeof HAS_ACCEPTED\n | typeof IS_TENTATIVE\n | typeof HAS_DECLINED\n | typeof NO_RESPONSE\n ),\n];\n\nexport const SessionsDetails: React.FC = ({\n session,\n attendees,\n timezone,\n}) => {\n //base language\n const organizationSlug = getSubDomain();\n const { localeCode } = useLocalization(organizationSlug);\n const { baseLanguage } = useBaseLanguage({ localeCode });\n\n const { trackScreenTime } = useMixpanelEvents();\n\n const trackSessionJoinButtonClick = useCallback(() => {\n trackScreenTime(\n 'Relationship - Session - Session viewed - Join call button',\n { Started: getISOStringWithoutMilliseconds() },\n );\n }, [trackScreenTime]);\n\n if (!session?.createdAt) {\n return <>;\n }\n const { getProfileImage } = useProfileImage();\n const locale = getLanguageFromCMS(baseLanguage?.language_code);\n\n const formattedTime = getTimeFormat(baseLanguage?.time_format);\n const formattedDate = getFriendlyDateFormat(baseLanguage?.date_format);\n\n const { acceptedEmails, tentativeEmails, declinedEmails } = session;\n const attendeeResponses: AttendeeResponse[] = attendees.map((profile) => {\n const user = session.users.find((user) => user.id === profile.userId);\n const userEmail = user?.email ?? '';\n const hasAccepted = acceptedEmails?.includes(userEmail);\n const isTentative = tentativeEmails?.includes(userEmail);\n const hasDeclined = declinedEmails?.includes(userEmail);\n\n if (hasAccepted) {\n return [profile, HAS_ACCEPTED];\n }\n if (isTentative) {\n return [profile, IS_TENTATIVE];\n }\n if (hasDeclined) {\n return [profile, HAS_DECLINED];\n }\n return [profile, NO_RESPONSE];\n });\n const sortedAttendeeResponses = attendeeResponses.sort(\n ([, responseA], [, responseB]) => responseA - responseB,\n );\n\n const renderAttendees = () =>\n sortedAttendeeResponses.map(([profile, response], index) => {\n const hasAccepted = response === HAS_ACCEPTED;\n const isTentative = response === IS_TENTATIVE;\n const hasDeclined = response === HAS_DECLINED;\n\n let backgroundColor = primitiveColors.black[100];\n if (hasAccepted) {\n backgroundColor = primitiveColors.green[10];\n } else if (isTentative) {\n backgroundColor = primitiveColors.yellow[10];\n } else if (hasDeclined) {\n backgroundColor = primitiveColors.red[10];\n }\n\n const image = getProfileImage({\n profilePicture: profile.picture,\n userPicture: profile?.userPicture,\n });\n return (\n \n \n\n \n {profile.displayName}\n \n {hasAccepted && (\n \n )}\n {isTentative && (\n \n )}\n {hasDeclined && (\n \n )}\n \n );\n });\n\n const renderJoinSessionButton = () => {\n switch (session.videoConferencing) {\n case 'guider':\n return (\n }\n sx={{ backgroundColor: 'white', fontWeight: 600, mt: 1.5 }}\n fullWidth\n onClick={() => {\n trackSessionJoinButtonClick();\n window.open(\n `${\n window.location.protocol + '//' + window.location.host\n }/video/${session.id}`,\n );\n }}\n >\n {\n baseLanguage?.relationships?.sessions?.view_session_modal\n ?.join_with_guider_video_button_label\n }\n \n );\n case 'ms-teams':\n return (\n }\n sx={{ backgroundColor: 'white', fontWeight: 600, mt: 1.5 }}\n fullWidth\n href={session.videoConferencingUrl}\n target=\"_blank\"\n onClick={trackSessionJoinButtonClick}\n >\n {\n baseLanguage?.relationships?.sessions?.view_session_modal\n ?.join_with_ms_teams_button_label\n }\n \n );\n default:\n return;\n }\n };\n\n return (\n <>\n \n {session.name}\n \n \n {baseLanguage?.relationships?.sessions?.view_session_modal?.when_label}\n \n \n {formatInTimeZone(\n new Date(session.start ?? ''),\n timezone,\n `${formattedDate}`,\n { locale },\n )}\n \n \n {formatInTimeZone(\n new Date(session.start ?? ''),\n timezone,\n `${formattedTime}`,\n { locale },\n )}\n {' - '}\n {formatInTimeZone(\n new Date(session.end ?? ''),\n timezone,\n ` ${formattedTime}`,\n { locale },\n )}\n \n {session.location && (\n <>\n \n {\n baseLanguage?.relationships?.sessions?.view_session_modal\n ?.where_label\n }\n \n {session.location}\n \n )}\n {renderJoinSessionButton()}\n \n {\n baseLanguage?.relationships?.sessions?.view_session_modal\n ?.attendees_label\n }\n \n {renderAttendees()}\n \n );\n};\n","import { OrganizationContentContainer } from '@guider-global/ui';\nimport { Typography } from '@mui/material';\nimport { FC, PropsWithChildren } from 'react';\n\nexport interface SettingsContainerProps {\n header?: string;\n}\n\nexport const SettingsContainer: FC<\n PropsWithChildren\n> = ({ children, header }) => {\n return (\n \n \n {children}\n \n );\n};\n\nexport const SettingsContainerHeader: FC<\n Pick\n> = ({ header }) => {\n if (!header) return null;\n return (\n \n {header}\n \n );\n};\n","// external\nimport { FC } from 'react';\nimport { Typography } from '@mui/material';\n\nexport interface SettingsDescriptionProps {\n description: string | undefined;\n}\n\nexport const SettingsDescription: FC = ({\n description,\n}) => {\n return (\n <>\n \n {description}\n \n \n );\n};\n","// external\nimport { FC } from 'react';\nimport { Skeleton, Typography } from '@mui/material';\n\nexport interface SettingsSubheaderProps {\n subheader: string | undefined;\n}\n\nexport const SettingsSubheader: FC = ({\n subheader,\n}) => {\n if (!subheader)\n return (\n <>\n \n \n Empty subheader\n \n \n \n );\n return (\n <>\n \n {subheader}\n \n \n );\n};\n","import { LoadingElement } from 'components';\nimport { useLocalization } from 'hooks';\nimport {\n FC,\n PropsWithChildren,\n useCallback,\n useContext,\n useEffect,\n useState,\n} from 'react';\nimport { useAppDispatch } from 'store/hooks';\nimport {\n RegistrationTypes,\n showAppAlert,\n startAppLoading,\n stopAppLoading,\n updateRegistrationType,\n} from 'store/slices/appSlice';\nimport { useIntercom } from 'react-use-intercom';\nimport {\n SanityBaseLanguagesError,\n useSanityBaseLanguage,\n useSanityOrganization,\n useSanityOrganizationPrograms,\n useSettings,\n} from '@guider-global/sanity-hooks';\nimport { ThemeContext } from 'context/theme';\nimport { createTheme } from '@mui/material';\nimport { datadogLogs } from '@guider-global/datadog';\n\nexport interface SetupWrapperProps {\n organizationSlug: string;\n organizationGetSilently?: boolean;\n baseLanguageGetSilently?: boolean;\n settingsGetSilently?: boolean;\n organizationProgramsGetSilently?: boolean;\n}\n\nexport const SetupWrapper: FC> = ({\n organizationSlug,\n organizationGetSilently = true,\n baseLanguageGetSilently = true,\n settingsGetSilently = true,\n organizationProgramsGetSilently = true,\n children,\n}) => {\n // Context\n const { theme, setTheme } = useContext(ThemeContext);\n // Local State\n const [loading, setLoading] = useState(true);\n\n // Redux\n const dispatch = useAppDispatch();\n\n // Hooks\n // - Localization\n const { localeCode } = useLocalization(organizationSlug);\n // - Intercom\n const { REACT_APP_VERSION } = process.env;\n const { boot: bootIntercom } = useIntercom();\n // - Sanity BaseLanguage\n const {\n isLoadingSanityBaseLanguage,\n isErrorSanityBaseLanguage,\n isSuccessSanityBaseLanguage,\n getErrorsSanityBaseLanguage,\n } = useSanityBaseLanguage({\n getSilently: baseLanguageGetSilently,\n organizationSlug,\n localeCode,\n });\n\n const loadingSanityBaseLanguage = isLoadingSanityBaseLanguage();\n const errorSanityBaseLanguage = isErrorSanityBaseLanguage();\n const successSanityBaseLanguage = isSuccessSanityBaseLanguage();\n // - Sanity Organization\n const {\n isLoadingSanityOrganization,\n isErrorSanityOrganization,\n isSuccessSanityOrganization,\n getErrorsSanityOrganization,\n getOrganization,\n } = useSanityOrganization({\n organizationSlug,\n getSilently: organizationGetSilently,\n localeCode,\n });\n const loadingSanityOrganization = isLoadingSanityOrganization();\n const errorSanityOrganization = isErrorSanityOrganization();\n const successSanityOrganization = isSuccessSanityOrganization();\n const sanityOrganization = getOrganization();\n const sanityOrganizationAccess = sanityOrganization.access;\n const sanityOrganizationWhiteLabel = sanityOrganization.white_label;\n\n const isLocalAccountRegistration =\n sanityOrganizationAccess.local_account_registration;\n const sanityOrganizationConfigurations =\n sanityOrganizationAccess.configuration_array ?? [];\n const isSSOMultitenants = sanityOrganizationConfigurations.length > 0;\n\n // - Sanity Programs\n const {\n getErrorsSanityPrograms,\n isErrorSanityPrograms,\n isLoadingSanityPrograms,\n isSuccessSanityPrograms,\n } = useSanityOrganizationPrograms({\n organizationSlug,\n getSilently: organizationProgramsGetSilently,\n localeCode,\n });\n const loadingSanityOrganizationPrograms = isLoadingSanityPrograms();\n const errorSanityOrganizationPrograms = isErrorSanityPrograms();\n const successSanityOrganizationPrograms = isSuccessSanityPrograms();\n\n // - Sanity Settings\n const { settings, isErrorSettings, isLoadingSettings, errorSettings } =\n useSettings({ localeCode });\n // Event\n const setCustomTheme = useCallback(() => {\n if (!sanityOrganizationWhiteLabel) return;\n const organizationColorPalette =\n sanityOrganizationWhiteLabel.color_palette_config.color_palette ?? {};\n const organizationColors = Object.entries(organizationColorPalette).reduce(\n (acc, [key, value]) => ({\n ...acc,\n [key]: {\n main: value.hex,\n transparent: `rgba(${value.rgb.r}, ${value.rgb.g}, ${value.rgb.b}, 0.1)`,\n },\n }),\n {},\n );\n const customTheme = createTheme({\n ...theme,\n palette: {\n ...theme.palette,\n ...organizationColors,\n },\n });\n setTheme(customTheme);\n return customTheme;\n }, [setTheme, theme, sanityOrganizationWhiteLabel]);\n\n useEffect(() => {\n bootIntercom({\n customAttributes: {\n organizationSlug,\n appVersion: REACT_APP_VERSION,\n },\n });\n });\n\n useEffect(() => {\n if (\n (loadingSanityOrganization && !errorSanityOrganization) ||\n (loadingSanityBaseLanguage && !errorSanityBaseLanguage) ||\n (isLoadingSettings && !isErrorSettings) ||\n (loadingSanityOrganizationPrograms && !errorSanityOrganizationPrograms)\n ) {\n dispatch(startAppLoading(true));\n setLoading(true);\n }\n if (loading && successSanityOrganization) {\n setCustomTheme();\n }\n if (\n successSanityOrganization &&\n successSanityBaseLanguage &&\n settings &&\n successSanityOrganizationPrograms\n ) {\n dispatch(stopAppLoading(true));\n setLoading(false);\n }\n }, [\n dispatch,\n errorSanityBaseLanguage,\n errorSanityOrganization,\n errorSanityOrganizationPrograms,\n isErrorSettings,\n loading,\n loadingSanityBaseLanguage,\n loadingSanityOrganization,\n loadingSanityOrganizationPrograms,\n isLoadingSettings,\n setCustomTheme,\n settings,\n successSanityBaseLanguage,\n successSanityOrganization,\n successSanityOrganizationPrograms,\n ]);\n\n useEffect(() => {\n const handleDispatchedError = (\n errorCode?: string,\n errorMessage?: string,\n ) => {\n const message = errorMessage ?? 'Undefined Error Message';\n console.error('error', { errorCode, errorMessage });\n datadogLogs.logger.error('setupWrapper: ', {\n errorCode,\n errorMessage,\n });\n dispatch(\n showAppAlert({\n severity: 'error',\n message: message,\n timeout: 10000,\n }),\n );\n dispatch(stopAppLoading(true));\n\n setLoading(false);\n };\n\n if (errorSanityBaseLanguage) {\n const baseLanguageErrors = getErrorsSanityBaseLanguage();\n const errorCode = 'SanityBaseLanguage';\n const errorMessage = baseLanguageErrors[0].message;\n handleDispatchedError(errorCode, errorMessage);\n }\n if (errorSanityOrganization) {\n const organizationErrors = getErrorsSanityOrganization();\n const errorCode = 'SanityOrganization';\n const errorMessage = organizationErrors[0].message;\n handleDispatchedError(errorCode, errorMessage);\n }\n if (isErrorSettings) {\n const errorCodes = 'SanitySettings';\n const errorMessages = `${errorSettings?.message}`;\n handleDispatchedError(errorCodes, errorMessages);\n }\n if (errorSanityOrganizationPrograms) {\n const organizationProgramsErrors = getErrorsSanityPrograms();\n const errorCode = 'SanityOrganizationPrograms';\n const errorMessage = organizationProgramsErrors[0].message;\n handleDispatchedError(errorCode, errorMessage);\n }\n }, [\n dispatch,\n errorSanityBaseLanguage,\n errorSanityOrganization,\n errorSanityOrganizationPrograms,\n errorSettings,\n isErrorSettings,\n getErrorsSanityBaseLanguage,\n getErrorsSanityOrganization,\n getErrorsSanityPrograms,\n ]);\n\n useEffect(() => {\n const handleUpdateRegistrationType = (key: RegistrationTypes) => {\n dispatch(updateRegistrationType(key));\n };\n\n if (loading) return;\n if (isLocalAccountRegistration && isSSOMultitenants) {\n handleUpdateRegistrationType('localAccountsAndSSO');\n return;\n }\n if (isLocalAccountRegistration) {\n handleUpdateRegistrationType('localAccounts');\n return;\n }\n if (isSSOMultitenants) {\n handleUpdateRegistrationType('multitenantsSSO');\n return;\n }\n handleUpdateRegistrationType('none');\n }, [dispatch, isLocalAccountRegistration, isSSOMultitenants, loading]);\n\n useEffect(() => {\n if (loading) return;\n\n const [error] = getErrorsSanityBaseLanguage();\n\n if (\n error?.message === SanityBaseLanguagesError.Empty ||\n window.location.hostname === 'guider.app'\n ) {\n window.location.replace('https://guider-ai.com/');\n }\n }, [loading, getErrorsSanityBaseLanguage]);\n\n if (loading && !localeCode) return ;\n\n return children;\n};\n"],"names":["RelationshipDetails","relationship","dispatch","useDispatch","traineeModal","useSelector","state","app","modals","organizationSlug","getSubDomain","programSlug","getBaseLanguage","useSanityBaseLanguage","baseLanguage","trackMixpanelEvent","getProfiles","getSilently","profile","profileId","id","userId","isMobile","isSidebarOpen","setIsSidebarOpen","useState","useEffect","guideProfiles","traineeProfiles","guideProfilesIds","map","guideProfile","traineeProfilesIds","traineeProfile","isGuide","includes","isTrainee","chosenGuide","at","guideUser","users","find","user","isGroupProgram","programVariationTypeSlug","EProgramVariation","guideMembership","guideMemberships","isNotLiveGroup","isPublished","isTraineeModalOpen","getProgram","useSanityOrganizationPrograms","organization","useOrganization","program","programType","program_details","program_type","open_matching","relationshipCreatedAt","createdAt","recipients","role","handleMessageSend","useCallback","getISOStringWithoutMilliseconds","Role","Program","programVariation","program_type_text","variations","individual","programName","metadata","program_name","recipient","Box","sx","width","display","gridTemplateColumns","gridTemplateRows","otherPartyProfile","displayName","profilePicture","picture","userPicture","roleLabel","relationships","your_trainee","your_guide","position","justifyContent","alignItems","alignContent","height","overflowY","Collapse","in","py","px","maxWidth","isConcluded","threadId","archived","onSendMessage","RelationshipGroup","isModalOpen","title","group","registration","registration_trainee","registration_trainee_relationship_created_successfully","registration_trainee_relationship_created_successfully_title","groupName","description","registration_trainee_relationship_created_successfully_description","firstName","buttonLabel","globals","view_relationship","RelationshipDetailsGroupSidebar","navigate","theme","useTheme","getProfileImage","useProfileImage","selectedUserId","setSelectedUserId","groupMembersModalOpen","setGroupMembersModalOpen","handleGroupMembersModalClose","isActiveGroup","programTypeGuideNoun","common","noun","skillsConfig","skills","isSkillsEnabled","enable_skills_question","guideMembershipData","modalTitle","view_profile_modal","modalCloseButtonLabel","close_button_label","handleProfileModalClose","handleProfileModalOpen","avatars","_a","_b","chipProps","size","backgroundColor","palette","info","main","mr","mb","Drawer","open","anchor","variant","borderLeft","divider","pb","direction","Typography","avatarSrcArray","avatarHeight","avatarWidth","textSize","heading","subtitles","length","toString","border","borderRadius","pl","onClick","Divider","mt","fontWeight","registration_group","group_description","question_heading","input_label","color","text","secondary","wordBreak","flexDirection","guide","flexWrap","skill","index","Chip","label","options","option","current","fieldSlug","isOpen","handleClose","closeButtonLabel","closeButtonAction","userRole","profileData","_c","profiles","selectedProfile","selectedProfileUserId","selectedUser","pictures","getSelectedProfileData","membershipData","selectedMembership","traineeMemberships","membership","skillFieldSlugs","getSelectedProfileMembershipData","actions","action","gap","textTransform","cursor","background","default","Avatar","src","fontSize","traineeUser","RelationshipDetailsSidebar","p","RelationshipGoalsCreate","handleSubmit","control","formState","errors","isValid","mode","typedControl","isLoadingGoals","reqGoals","reqRelationships","onSubmit","data","Object","assign","status","relationshipId","goalsResponseData","method","url","currentGoalIds","goals","goal","newGoalIds","Promise","all","contentModalActions","create_and_update_goal","create_goal","discard_button_label","dataCyLabel","create_goal_button_label","isLoadingButton","disabled","isLoading","GoalsCreateForm","discardAction","hideButtons","RelationshipGoalsEdit","isDiscardModalOpen","setIsDiscardModalOpen","discardChangesButtonLabel","discard_changes_button_label","goalId","isDirty","navigateBack","handleDiscardModalClose","go_back_button_label","save_changes_button_label","discardModalActions","cancel_button_label","update_goal","GoalsEditForm","discard_goal_modal","RelationshipGoalsManage","isLoadingRelationships","customGoalCategories","custom_goal_categories","customCategory","goal_category_name","slug","goal_category_slug","icon","goal_category_icon","name","organizationGoalCategories","goal_categories","categories","goalCategory","goalCategories","concat","relationshipGoals","filter","modalActions","manage_goals_modal","subtitle","childrenSx","borderBottom","closeIconButtonDataCy","createPath","Button","startIcon","MdAdd","_f","_e","_d","relationship_goals_divider_text","categorySlug","viewPath","goalName","goalSlug","goalIcon","RelationshipGoalsView","isDeleteModalOpen","setIsDeleteModalOpen","backButtonLabel","handleDeleteModalClose","guideModalActions","traineeModalActions","delete_button_label","edit_goal_button_label","deleteModalActions","view_goal_modal","GoalsDetails","delete_goal_modal","RelationshipGoals","isGoalsModalOpen","setIsGoalsModalOpen","organizationTheme","combinedPalette","value","ThemeProvider","align","component","sidebar","no_goals_shared_label","objective","SanityIcon","span","textAlign","lineHeight","fullWidth","handleGoalClick","replace","manage_goals_button_label","RelationshipGroupAlert","isArchivedRelationship","reqMemberships","isLoadingMemberships","boxColor","buttons","activatedAt","noTraineesHaveJoined","allTraineesHaveLeft","guideGroupCopy","traineeGroupCopy","trainee","guideAlertCopy","group_activated","group_activation_pending","traineeAlertCopy","trainees_left_group","alert_title","alert_description","error","transparent","ErrorOutline","republish_group_button_label","key","loading","success","warning","AlertIcon","sessions","schedule_session","start_group_button_label","Date","pt","ml","spacing","insufficient_members_message","CheckCircleOutline","ReportProblemOutlined","InfoOutlined","dialogTitle","dialogDescription","cancelButtonLabel","concludeRelationshipButtonLabel","onClose","onConcludeRelationship","textColor","pathname","setIsModalOpen","setIsLoading","groupGuide","conclude_relationship","groupTrainee","button_title","button_description","conclude_relationship_modal","getError","error_alert_text","handleModalClose","endsWith","flexFlow","ul","MoreHoriz","orientation","PersonOff","isSuccess","now","severity","message","success_alert_text","timeout","RelationshipHeader","selectedProfileId","setSelectedProfileId","isGroup","groupMentor","useMemo","ownRole","getSelectedRelationshipRole","locale","getLanguageFromCMS","language_code","renderContent","_g","_h","_i","flex","relationships_list","letterSpacing","dashboard","program_memberships","with_program_memberships","membership_details","creation_date","date","format","relationships_header","since","parseISO","Paper","elevation","square","borderTop","zIndex","ArrowBackIosNew","Stack","rounded","Close","contrastText","MenuOpen","pr","connectAction","result","programTypeSlug","RelationshipItem","isUnreadMessages","isActive","Boolean","guidesCount","traineesCount","primary","my","dark","Badge","badgeContent","anchorOrigin","vertical","horizontal","textOverflow","overflow","noWrap","RelationshipNotesCreate","reset","defaultValues","isLoadingNotes","reqNotes","isPublic","rest","notesCreateResponseData","isPrivate","console","saveAction","notes","notes_modal","notes_modal_create_edit_note","save_note_button_label","NotesCreateForm","ActionButton","buttonAction","RelationshipNotesEmpty","notes_modal_empty_title","notes_modal_empty_state","notes_modal_empty_description","notes_modal_empty_create_button_label","Page","MdNoteAdd","iconColor","containerStylings","minHeight","margin","breakpoints","down","RelationshipNotesList","noteId","setOnConfirmDiscardNoteChanges","useContext","notesCount","notesCountDescription","notes_sidebar","notes_sidebar_single_note_label","notes_sidebar_multiple_notes_label","navigateToNoteCreate","handleClick","callback","minWidth","borderRight","paddingLeft","xs","md","paddingRight","IconButton","Add","flexGrow","note","navigateToNote","whiteSpace","People","opacity","Edit","mx","notes_sidebar_new_note_button_label","RelationshipNotesView","params","currentNote","ownersProfile","ownerId","lastUpdatedByProfile","lastUpdatedBy","currentNoteUpdateAt","updatedAt","toDate","currentNoteCreatedAt","lastUpdatedByString","note_status","note_status_last_updated_by_label","lastName","note_status_last_updated_on_label","createdByString","note_status_created_by_label","note_status_created_on_label","isNoteOwner","createdBy","delete_note_modal","discard_changes_title","discard_changes_description","RelationshipNotes","isNotesModalOpen","setIsNotesModalOpen","note_sidebar","note_sidebar_title","note_sidebar_description","transition","note_sidebar_input_label","LoadingButton","note_sidebar_view_button_label","RelationshipSessionsCreate","timezone","localeCode","useBaseLanguage","sessionsBaseLanguage","trackScreenTime","setValue","reqSessions","isLoadingSessions","currentSessions","programs","useOrganizationPrograms","Started","startTime","endTime","videoConferencing","location","startHours","startMinutes","split","newStart","setHours","parseInt","endHours","endMinutes","newEnd","startUTC","zonedTimeToUtc","endUTC","participantProfiles","start","end","hasVideoConferencing","ownerProfile","new_session_modal","getVideoConferencingProvider","Location","trackSessionCreateFormSubmit","send_calendar_invite_button_label","SessionsCreateForm","defaultTitle","getSessionTitle","RelationshipSessionsEdit","sessionId","session","isSessionOwner","pastSession","edit_session_modal","update_calendar_invite_button_label","isArchived","confirm_session_deletion_modal","PastSessionEditForm","SessionsEditForm","RelationshipSessionHistory","reqAvailabilities","declinedStyles","borderColor","light","textDecoration","tentativeStyles","borderStyle","isSessionsModalOpen","setIsSessionsModalOpen","parsedSessions","sort","sessionA","sessionB","forEach","push","sessionCount","formattedTime","getTimeFormat","time_format","formattedDate","getFriendlyDateFormat","date_format","canLogSession","handleScheduleSession","handleLogSession","renderSessions","sessionsToRender","sessionDate","formatInTimeZone","sessionsLocation","session_history","modal","logged_past_session_label","isDeclined","declinedEmails","isTentative","tentativeEmails","handleSessionClick","Icon","History","boxProps","padding","ModalCard","iconVariant","empty_state","log_session_button_label","maxHeight","entries","RelationshipSessionsIntegrate","integrationsModal","manage_integrations_modal","modalGoBackAction","IntegrationsList","RelationshipSessionsLog","searchParams","useSearchParams","day","get","checkedDate","setCheckedDate","pastSessionsLabels","log_past_session_modal","checkboxes","today_checkbox_label","this_week_checkbox_label","this_month_checkbox_label","last_month_checkbox_label","useMediaQuery","timeZone","Intl","DateTimeFormat","resolvedOptions","selectedDate","checkbox","pastSessionDates","getPastSessionStartAndEndDates","log_session_error_alert_text","log_session_success_alert_text","onChange","isChecked","RelationshipSessionsView","canSeeEditSessionButton","Viewed","handleEditSession","unshift","edit_session_button_label","attendees","view_session_modal","Card","widht","RelationshipSessions","settings","useSettings","keepPreviousData","canSeeNewSessionButton","canSeeSessions","filteredSessions","sessionEndDate","FormattedTime","FormattedDate","isOnCreateSessionPage","sessionsCount","multiple_sessions_scheduled_label","single_session_scheduled_label","no_sessions_scheduled_label","renderSessionsCount","formattedStart","formattedEnd","marginTop","marginBottom","RelationshipViewProfileModal","Modal","RelationshipViewProfile","programTypeText","otherUsers","otherUser","handleModalOpen","view_profile_button_label","getSelectedUsersProfileData","getSelectedUsersMembershipData","RelationshipsArchivedList","expanded","setExpanded","archived_section_label","relationshipIds","accordionSummaryProps","expandIcon","ArrowDropDown","m","Accordion","event","AccordionSummary","AccordionDetails","userSelect","RelationshipsEmpty","Person","active","no_relationships","RelationshipsList","Skeleton","transform","REACT_APP_AZURE_COMMUNICATION_ENDPOINT_URL","RelationshipsWrapper","getRelationshipSilently","getProfilesSilently","setError","credential","setCredential","statefulChatClient","setStatefulChatClient","getRelationships","getErrorsRelationships","memoRelationships","errorsRelationships","communicationUserId","token","chatTokenError","chatParticipants","getCredential","datadogLogs","Error","code","endpoint","getStatefulChatClient","relationshipThreads","threads","participant","startRealtimeNotifications","err","onChatMessageReceived","sender","kind","on","off","handleDispatchedError","errorCode","errorMessage","ScrollToTop","window","scrollTo","SessionsDetails","trackSessionJoinButtonClick","acceptedEmails","sortedAttendeeResponses","userEmail","email","hasAccepted","hasDeclined","responseA","responseB","when_label","where_label","VideoCameraFront","protocol","host","join_with_guider_video_button_label","href","videoConferencingUrl","target","join_with_ms_teams_button_label","renderJoinSessionButton","attendees_label","response","image","CheckCircle","Help","Cancel","SettingsContainer","children","header","SettingsContainerHeader","SettingsDescription","SettingsSubheader","subheader","SetupWrapper","organizationGetSilently","baseLanguageGetSilently","settingsGetSilently","organizationProgramsGetSilently","setTheme","setLoading","REACT_APP_VERSION","boot","bootIntercom","isLoadingSanityBaseLanguage","isErrorSanityBaseLanguage","isSuccessSanityBaseLanguage","getErrorsSanityBaseLanguage","loadingSanityBaseLanguage","errorSanityBaseLanguage","successSanityBaseLanguage","isLoadingSanityOrganization","isErrorSanityOrganization","isSuccessSanityOrganization","getErrorsSanityOrganization","getOrganization","useSanityOrganization","loadingSanityOrganization","errorSanityOrganization","successSanityOrganization","sanityOrganization","sanityOrganizationAccess","access","sanityOrganizationWhiteLabel","white_label","isLocalAccountRegistration","local_account_registration","isSSOMultitenants","configuration_array","getErrorsSanityPrograms","isErrorSanityPrograms","isLoadingSanityPrograms","isSuccessSanityPrograms","loadingSanityOrganizationPrograms","errorSanityOrganizationPrograms","successSanityOrganizationPrograms","isErrorSettings","isLoadingSettings","errorSettings","setCustomTheme","organizationColorPalette","color_palette_config","color_palette","organizationColors","reduce","acc","hex","rgb","r","g","b","customTheme","customAttributes","appVersion","handleUpdateRegistrationType","SanityBaseLanguagesError","hostname"],"sourceRoot":""}