{"version":3,"file":"static/js/app-81ce99fd_2cd9b328541f3e4d8002.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/RelationshipViewProfile/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/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"],"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 { useLocalization, useMixpanelEvents, useMobileMediaQuery } from 'hooks';\n\n// types\nimport { useProfiles } from '@guider-global/front-end-hooks';\nimport {\n getISOStringWithoutMilliseconds,\n getSubDomain,\n} from '@guider-global/front-end-utils';\nimport {\n useBaseLanguage,\n useOrganization,\n useOrganizationPrograms,\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\n const { localeCode } = useLocalization(organizationSlug);\n const { baseLanguage } = useBaseLanguage({ localeCode });\n\n const { trackMixpanelEvent } = useMixpanelEvents();\n\n const { profiles } = useProfiles({});\n const profile = profiles?.at(0);\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 { programs } = useOrganizationPrograms({\n organizationSlug,\n localeCode,\n });\n\n const { organization } = useOrganization({ organizationSlug });\n\n let program: Program | undefined;\n let programType;\n\n if (programSlug) {\n program = programs.find(\n (program) => program.metadata.id.current === programSlug,\n );\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 useBaseLanguage,\n useOrganizationPrograms,\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 { getSubDomain } from '@guider-global/front-end-utils';\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 { useLocalization, 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 { getProfileImage } = useProfileImage();\n\n const [selectedUserId, setSelectedUserId] = useState();\n\n const organizationSlug = getSubDomain();\n\n const { localeCode } = useLocalization(organizationSlug);\n const { baseLanguage } = useBaseLanguage({ localeCode });\n const [groupMembersModalOpen, setGroupMembersModalOpen] = useState(false);\n const handleGroupMembersModalClose = () => {\n setGroupMembersModalOpen(false);\n };\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 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, useLocalization, useRelationships } from 'hooks';\n\n// types\nimport { IGoal, IRelationship } from '@guider-global/shared-types';\n\nimport { ModalCard } from 'components';\nimport { IButtonAction } from 'components/ActionButton';\nimport { useBaseLanguage } from '@guider-global/sanity-hooks';\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 //hooks\n const navigate = useNavigate();\n\n const { isLoadingGoals, reqGoals } = useGoals({});\n const { reqRelationships } = useRelationships({});\n\n //baseLanguage\n const organizationSlug = getSubDomain();\n const { localeCode } = useLocalization(organizationSlug);\n const { baseLanguage } = useBaseLanguage({ localeCode });\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 //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, useLocalization, useRelationships } from 'hooks';\n\n// types\nimport { IRelationship } from '@guider-global/shared-types';\n\nimport { IButtonAction } from 'components/ActionButton';\nimport { getSubDomain } from '@guider-global/front-end-utils';\nimport { useBaseLanguage } from '@guider-global/sanity-hooks';\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 organizationSlug = getSubDomain();\n\n const { localeCode } = useLocalization(organizationSlug);\n const { baseLanguage } = useBaseLanguage({ localeCode });\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, useLocalization, useRelationships } from 'hooks';\n\n// types\nimport { getSubDomain } from '@guider-global/front-end-utils';\nimport {\n useBaseLanguage,\n useOrganization,\n useOrganizationPrograms,\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';\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 { localeCode } = useLocalization(organizationSlug);\n const { baseLanguage } = useBaseLanguage({ localeCode });\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 programSlug = relationship.programSlug;\n const { programs } = useOrganizationPrograms({ organizationSlug });\n const program = programs.find(\n (program) => program.metadata.id.current === programSlug,\n );\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, useLocalization, useRelationships } from 'hooks';\n\n// types\n\nimport { getSubDomain } from '@guider-global/front-end-utils';\nimport { useBaseLanguage } 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 //hooks\n const organizationSlug = getSubDomain();\n\n const navigate = useNavigate();\n const { reqRelationships } = useRelationships({ getSilently: false });\n\n //style\n const theme = useTheme();\n\n //base language\n const { localeCode } = useLocalization(organizationSlug);\n const { baseLanguage } = useBaseLanguage({ localeCode });\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 //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 useBaseLanguage,\n useOrganization,\n useOrganizationPrograms,\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';\nimport { useLocalization } from 'hooks';\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 organizationSlug = getSubDomain();\n const { localeCode } = useLocalization(organizationSlug);\n const { baseLanguage } = useBaseLanguage({ localeCode });\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 { organization } = useOrganization({\n organizationSlug,\n });\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 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 useMemberships,\n useRelationships,\n} from '@guider-global/front-end-hooks';\nimport { getSubDomain } from '@guider-global/front-end-utils';\nimport {\n useBaseLanguage,\n useOrganizationPrograms,\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 { useLocalization } 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 isArchivedRelationship = relationship.isConcluded;\n\n const organizationSlug = getSubDomain();\n const { localeCode } = useLocalization(organizationSlug);\n const { baseLanguage } = useBaseLanguage({ localeCode });\n\n const { programs } = useOrganizationPrograms({\n organizationSlug,\n localeCode,\n });\n const program = programs?.find(\n (program) => program.metadata.id.current === relationship.programSlug,\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 const { reqRelationships, isLoadingRelationships } = useRelationships({});\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 } from '@guider-global/shared-types';\nimport { Box } from '@mui/material';\nimport { useLocalization, useMixpanelEvents } from 'hooks';\nimport { FC, useCallback, useEffect, useState } from 'react';\nimport { useLocation, useNavigate } from 'react-router-dom';\n\nimport { useProfiles, useRelationships } from '@guider-global/front-end-hooks';\nimport {\n getISOStringWithoutMilliseconds,\n getSubDomain,\n} from '@guider-global/front-end-utils';\nimport {\n useBaseLanguage,\n useOrganization,\n useOrganizationPrograms,\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 { profiles } = useProfiles({});\n const profile = profiles?.at(0);\n const profileId = profile?.id;\n\n const programSlug = relationship?.programSlug;\n const relationshipId = relationship.id;\n\n const { programs } = useOrganizationPrograms({ organizationSlug });\n\n const { organization } = useOrganization({ organizationSlug });\n\n let programType;\n\n if (programSlug) {\n const program = programs?.find(\n (program) => program.metadata.id.current === programSlug,\n );\n programType = program?.program_details?.program_type;\n } else {\n programType = organization?.open_matching?.program_type;\n }\n\n const { localeCode } = useLocalization(organizationSlug);\n const { baseLanguage } = useBaseLanguage({ localeCode });\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({});\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 data: {\n ...(profileId && { 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} 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 useBaseLanguage,\n useOrganizationPrograms,\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 {\n useLocalization,\n useMobileMediaQuery,\n useProfiles,\n useRelationships,\n} from 'hooks';\nimport { RelationshipGroupMembersModal } from 'modals';\nimport { useAppDispatch } from 'store/hooks';\nimport { showAppAlert } from 'store/slices/appSlice';\nimport { deepMerge, hexToRGB } from 'utils';\nimport RelationshipConclude from '../RelationshipsConclude';\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 isMobile = useMobileMediaQuery();\n const organizationSlug = getSubDomain();\n\n const { localeCode } = useLocalization(organizationSlug);\n const { baseLanguage } = useBaseLanguage({ localeCode });\n const { getProfileImage } = useProfileImage();\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 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 { useProfiles } from '@guider-global/front-end-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 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 { profiles } = useProfiles({});\n const profile = profiles?.at(0);\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 { useLocalization, useNotes } from 'hooks';\n\n// types\nimport { IRelationship, SlateDescendant } from '@guider-global/shared-types';\n\nimport { Box } from '@mui/material';\nimport { ActionButton, IButtonAction } from 'components/ActionButton';\nimport { NoteFormField, NotesCreateForm } from 'forms/Notes/NotesCreateForm';\nimport { emptyInitialValue } from 'components/FormRichText';\nimport { useBaseLanguage } from '@guider-global/sanity-hooks';\nimport { useRelationships } from '@guider-global/front-end-hooks';\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 //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 //baseLanguage\n const { localeCode } = useLocalization(organizationSlug);\n const { baseLanguage } = useBaseLanguage({ localeCode });\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 //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 { getSubDomain } from '@guider-global/front-end-utils';\nimport { useBaseLanguage } from '@guider-global/sanity-hooks';\nimport { useTheme } from '@mui/material';\nimport { PageContent } from 'components/Page';\nimport { PageContentAction } from 'components/Page/PageContent';\nimport { useLocalization } from 'hooks';\nimport { MdNoteAdd } from 'react-icons/md';\nimport { useNavigate, useParams } from 'react-router-dom';\n\nexport function RelationshipNotesEmpty() {\n const theme = useTheme();\n const navigate = useNavigate();\n const { relationshipId } = useParams();\n\n const organizationSlug = getSubDomain();\n\n const { localeCode } = useLocalization(organizationSlug);\n const { baseLanguage } = useBaseLanguage({ localeCode });\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 { useLocalization, useMobileMediaQuery } from 'hooks';\nimport { useNavigate, useParams } from 'react-router-dom';\n\nimport { getSubDomain } from '@guider-global/front-end-utils';\nimport { useBaseLanguage } from '@guider-global/sanity-hooks';\nimport { RelationshipNotesModalContext } from 'modals';\n\ninterface IRelationshupNotesList {\n notes: Partial[];\n}\n\nexport const RelationshipNotesList: React.FC = ({\n notes,\n}) => {\n //hooks\n const organizationSlug = getSubDomain();\n const navigate = useNavigate();\n const { relationshipId, noteId } = useParams();\n const { setOnConfirmDiscardNoteChanges } = useContext(\n RelationshipNotesModalContext,\n );\n\n //baseLanguage\n const { localeCode } = useLocalization(organizationSlug);\n const { baseLanguage } = useBaseLanguage({ localeCode });\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\nimport { useRelationships, useUsers } from '@guider-global/front-end-hooks';\nimport { getSubDomain } from '@guider-global/front-end-utils';\nimport { useBaseLanguage } from '@guider-global/sanity-hooks';\nimport { IButtonAction } from 'components/ActionButton';\nimport { format, toDate } from 'date-fns-tz';\nimport { NotesCreateForm } from 'forms';\nimport { useLocalization, useMobileMediaQuery, useNotes } from 'hooks';\nimport { ConfirmationModal } from 'modals';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport { INoteInputs } from '../RelationshipNotesCreate';\n\ninterface IRelationshipNotesView {\n relationship: IRelationship;\n}\n\nexport const RelationshipNotesView: React.FC = ({\n relationship,\n}) => {\n const { users } = useUsers({});\n const user = users?.at(0);\n\n const [isDeleteModalOpen, setIsDeleteModalOpen] = useState(false);\n\n //hooks\n const navigate = useNavigate();\n const organizationSlug = getSubDomain();\n const { localeCode } = useLocalization(organizationSlug);\n const { baseLanguage } = useBaseLanguage({ localeCode });\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 { isLoadingNotes, reqNotes } = useNotes({});\n\n const { isLoadingRelationships, reqRelationships } = useRelationships({});\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\n\n//types\nimport { IRelationship } from '@guider-global/shared-types';\nimport { deepMerge } from 'utils';\nimport { getSubDomain } from '@guider-global/front-end-utils';\nimport { useLocalization } from 'hooks';\nimport { useBaseLanguage } from '@guider-global/sanity-hooks';\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 const organizationSlug = getSubDomain();\n\n //base language\n const { localeCode } = useLocalization(organizationSlug);\n const { baseLanguage } = useBaseLanguage({ localeCode });\n\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 { useLocalization, useMixpanelEvents, useSessions } 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';\nimport { useProfiles, useRelationships } from '@guider-global/front-end-hooks';\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\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 { profiles } = useProfiles({});\n const profile = profiles?.at(0);\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 { useLocalization, useMixpanelEvents, useSessions } from 'hooks';\n\n// types\nimport { IProfile, IRelationship } from '@guider-global/shared-types';\nimport { IButtonAction } from 'components/ActionButton';\nimport { getVideoConferencingProvider } from 'utils/getVideoConferencingProvider';\nimport { ISessionInputs } from '../RelationshipSessionsCreate';\nimport { useBaseLanguage } from '@guider-global/sanity-hooks';\nimport { useProfiles, useRelationships } from '@guider-global/front-end-hooks';\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 { localeCode } = useLocalization(organizationSlug);\n const { baseLanguage } = useBaseLanguage({ localeCode });\n const cancelButtonLabel = baseLanguage?.globals?.common?.cancel_button_label;\n\n //sessions\n const { isLoadingSessions, reqSessions, sessions } = useSessions({});\n const { reqRelationships } = useRelationships({});\n\n const { profiles } = useProfiles({});\n const profile = profiles?.at(0);\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 { getSubDomain } from '@guider-global/front-end-utils';\nimport { useBaseLanguage } from '@guider-global/sanity-hooks';\nimport { ModalCard } from 'components';\nimport { IButtonAction } from 'components/ActionButton';\nimport { IntegrationsList } from 'components/IntegrationsList';\nimport { useLocalization } from '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 const organizationSlug = getSubDomain();\n\n //base language\n\n const { localeCode } = useLocalization(organizationSlug);\n const { baseLanguage } = useBaseLanguage({ localeCode });\n\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 { useLocalization, useSessions } from 'hooks';\n\n// types\nimport { useProfiles, useRelationships } from '@guider-global/front-end-hooks';\nimport {\n getPastSessionStartAndEndDates,\n getSessionTitle,\n} from '@guider-global/isomorphic-utils';\nimport {\n useBaseLanguage,\n useOrganizationPrograms,\n} from '@guider-global/sanity-hooks';\nimport {\n IRelationship,\n TConvertableSessionLogTime,\n TimeZone,\n} from '@guider-global/shared-types';\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 //hooks\n const dispatch = useAppDispatch();\n const organizationSlug = getSubDomain();\n const { reqRelationships, isLoadingRelationships } = useRelationships({});\n\n //baseLanguage\n const { localeCode } = useLocalization(organizationSlug);\n const { baseLanguage } = useBaseLanguage({ localeCode });\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 //form\n const { handleSubmit } = useForm({ mode: 'onChange' });\n\n const { profiles } = useProfiles({});\n const profile = profiles?.at(0);\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\n const { programs } = useOrganizationPrograms({ organizationSlug });\n const program = programs?.find(\n (program) => program.metadata.id.current === 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, useLocalization } from 'hooks';\n\n// types\n\n// Internal\nimport {\n getFriendlyDateFormat,\n getLanguageFromCMS,\n getSubDomain,\n getTimeFormat,\n} from '@guider-global/front-end-utils';\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';\nimport { useBaseLanguage } from '@guider-global/sanity-hooks';\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 organizationSlug = getSubDomain();\n const { localeCode } = useLocalization(organizationSlug);\n const { baseLanguage } = useBaseLanguage({ localeCode });\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:\n 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 { Box, Divider, ThemeProvider, useTheme } from '@mui/material';\nimport { useState } from 'react';\n\n//hooks\nimport {\n useBaseLanguage,\n useOrganization,\n useOrganizationPrograms,\n} from '@guider-global/sanity-hooks';\n\n//types\nimport {\n IMembership,\n IRelationship,\n ISkill,\n SanityProgramTypeTextValue,\n} from '@guider-global/shared-types';\nimport {\n MembershipDataProps,\n ProfilePreviewProfileData,\n} from 'components/ProfilePreview';\nimport { useLocalization, useProfiles } from 'hooks';\n\nimport { getSubDomain } from '@guider-global/front-end-utils';\nimport { Button, theme } from '@guider-global/ui';\nimport { interpolate } from 'functions';\nimport { deepMerge } from 'utils';\nimport { RelationshipViewProfileModal } from '../RelationshipViewProfileModal';\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 { localeCode } = useLocalization(organizationSlug);\n const { baseLanguage } = useBaseLanguage({ localeCode });\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 { programs } = useOrganizationPrograms({ organizationSlug });\n\n let programTypeText: SanityProgramTypeTextValue | undefined;\n if (programSlug) {\n const program = programs.find(\n (program) => program.metadata.id.current === programSlug,\n );\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 { 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 ArrowDropDown from '@mui/icons-material/ArrowDropDown';\nimport {\n Accordion,\n AccordionDetails,\n AccordionSummary,\n Typography,\n} from '@mui/material';\nimport React, { useEffect } from 'react';\n\n// components\nimport { RelationshipsList } from 'components';\n\n// Hooks\nimport { getSubDomain } from '@guider-global/front-end-utils';\nimport { useBaseLanguage } from '@guider-global/sanity-hooks';\nimport { useLocalization } from 'hooks';\nimport { useParams } from 'react-router-dom';\n\n// types\nimport { IRelationship } from '@guider-global/shared-types';\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\n const organizationSlug = getSubDomain();\n\n const { localeCode } = useLocalization(organizationSlug);\n const { baseLanguage } = useBaseLanguage({ localeCode });\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 { getSubDomain } from '@guider-global/front-end-utils';\nimport { useBaseLanguage } from '@guider-global/sanity-hooks';\nimport Person from '@mui/icons-material/Person';\nimport { Avatar, Box, Typography, useTheme } from '@mui/material';\nimport { useLocalization } from 'hooks';\n\n// Hooks\n\nexport const RelationshipsEmpty = () => {\n const theme = useTheme();\n\n const organizationSlug = getSubDomain();\n\n const { localeCode } = useLocalization(organizationSlug);\n const { baseLanguage } = useBaseLanguage({ localeCode });\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 } 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';\nimport { useProfiles, useRelationships } from '@guider-global/front-end-hooks';\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, errorsRelationships, isErrorRelationships } =\n useRelationships({});\n\n const memoRelationships = useMemo(() => relationships, [relationships]);\n\n // Profile\n const { profiles } = useProfiles({});\n const profile = profiles?.at(0);\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 (isErrorRelationships) {\n const errorCode = errorsRelationships?.code;\n handleDispatchedError(errorCode, errorsRelationships?.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 }, [\n chatTokenError,\n dispatch,\n error,\n errorsRelationships,\n isErrorRelationships,\n navigate,\n ]);\n\n return ;\n};\n"],"names":["RelationshipDetails","relationship","dispatch","useDispatch","traineeModal","useSelector","state","app","modals","organizationSlug","getSubDomain","programSlug","localeCode","baseLanguage","useBaseLanguage","trackMixpanelEvent","profiles","useProfiles","profile","at","profileId","id","userId","isMobile","isSidebarOpen","setIsSidebarOpen","useState","useEffect","guideProfiles","traineeProfiles","guideProfilesIds","map","guideProfile","traineeProfilesIds","traineeProfile","isGuide","includes","isTrainee","chosenGuide","guideUser","users","find","user","isGroupProgram","programVariationTypeSlug","EProgramVariation","guideMembership","guideMemberships","isNotLiveGroup","isPublished","isTraineeModalOpen","programs","useOrganizationPrograms","organization","useOrganization","program","programType","metadata","current","program_details","program_type","open_matching","relationshipCreatedAt","createdAt","recipients","role","handleMessageSend","useCallback","getISOStringWithoutMilliseconds","Role","Program","programVariation","program_type_text","variations","individual","programName","program_name","recipient","sx","width","display","gridTemplateColumns","gridTemplateRows","otherPartyProfile","displayName","profilePicture","picture","userPicture","roleLabel","relationships","your_trainee","your_guide","position","justifyContent","alignItems","alignContent","height","overflowY","in","py","px","maxWidth","isConcluded","threadId","archived","onSendMessage","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","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","open","anchor","variant","borderLeft","divider","pb","direction","avatarSrcArray","avatarHeight","avatarWidth","textSize","heading","subtitles","length","toString","border","borderRadius","pl","onClick","mt","fontWeight","registration_group","group_description","question_heading","input_label","color","text","secondary","wordBreak","flexDirection","guide","flexWrap","skill","index","label","options","option","fieldSlug","isOpen","handleClose","closeButtonLabel","closeButtonAction","userRole","profileData","_c","selectedProfile","selectedProfileUserId","selectedUser","pictures","getSelectedProfileData","membershipData","selectedMembership","traineeMemberships","membership","skillFieldSlugs","getSelectedProfileMembershipData","actions","action","gap","textTransform","cursor","background","default","src","fontSize","traineeUser","RelationshipDetailsSidebar","getProgram","useSanityOrganizationPrograms","p","RelationshipGoalsCreate","isLoadingGoals","reqGoals","reqRelationships","handleSubmit","control","formState","errors","isValid","mode","typedControl","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","getSilently","navigateBack","handleDiscardModalClose","go_back_button_label","save_changes_button_label","discardModalActions","cancel_button_label","update_goal","GoalsEditForm","discard_goal_modal","RelationshipGoalsManage","useTheme","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","Box","Button","startIcon","MdAdd","Typography","_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","Divider","RelationshipGroupAlert","isArchivedRelationship","reqMemberships","isLoadingMemberships","useMemberships","useRelationships","boxColor","buttons","activatedAt","noTraineesHaveJoined","allTraineesHaveLeft","guideGroupCopy","traineeGroupCopy","trainee","guideAlertCopy","group_activated","group_activation_pending","traineeAlertCopy","trainees_left_group","alert_title","alert_description","error","transparent","republish_group_button_label","key","loading","success","warning","AlertIcon","sessions","schedule_session","start_group_button_label","Date","pt","ml","spacing","insufficient_members_message","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","getProfiles","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","Avatar","rounded","Close","contrastText","MenuOpen","pr","connectAction","result","programTypeSlug","Chip","RelationshipItem","isUnreadMessages","isActive","Boolean","guidesCount","traineesCount","primary","my","dark","badgeContent","anchorOrigin","vertical","horizontal","textOverflow","overflow","noWrap","RelationshipNotesCreate","isLoadingNotes","reqNotes","reset","defaultValues","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","useUsers","params","currentNote","relationshipNotes","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","sessionsBaseLanguage","trackScreenTime","setValue","reqSessions","isLoadingSessions","currentSessions","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","RelationshipViewProfile","programTypeText","otherUsers","otherUser","handleModalOpen","view_profile_button_label","getSelectedUsersProfileData","getSelectedUsersMembershipData","RelationshipViewProfileModal","RelationshipsArchivedList","expanded","setExpanded","archived_section_label","relationshipIds","accordionSummaryProps","expandIcon","m","event","userSelect","RelationshipsEmpty","active","no_relationships","RelationshipsList","transform","REACT_APP_AZURE_COMMUNICATION_ENDPOINT_URL","RelationshipsWrapper","getRelationshipSilently","getProfilesSilently","setError","credential","setCredential","statefulChatClient","setStatefulChatClient","errorsRelationships","isErrorRelationships","memoRelationships","communicationUserId","token","chatTokenError","chatParticipants","getCredential","datadogLogs","Error","code","endpoint","getStatefulChatClient","relationshipThreads","threads","participant","startRealtimeNotifications","err","onChatMessageReceived","sender","kind","on","off","handleDispatchedError","errorCode","errorMessage"],"sourceRoot":""}