{"version":3,"file":"static/js/app-38e054b8_1e4e085faba748d96ec7.js","mappings":"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","sources":["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/RelationshipItem/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/RelationshipNote/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipNotes/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipSessions/RelationshipSessionsCreate/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipSessions/RelationshipSessionsEdit/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipSessions/RelationshipSessionsHistory/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipSessions/RelationshipSessionsIntegrate/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipSessions/RelationshipSessionsLog/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipSessions/RelationshipSessionsView/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipSessions/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipViewProfileModal/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipViewProfile/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipsArchivedList/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipsEmpty/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipsList/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Relationships/RelationshipHeader/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/SanityIcon/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/ScrollToTop/index.ts","file:////home/runner/work/platform/platform/apps/front-end/src/components/Sessions/SessionsDetails/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Settings/SettingsContainer/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Settings/SettingsDescription/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/Settings/SettingsSubheader/index.tsx","file:////home/runner/work/platform/platform/apps/front-end/src/components/SetupWrapper/index.tsx"],"sourcesContent":["// external\nimport 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 } from 'hooks';\n\n// types\nimport { IGoal, IRelationship } from '@guider-global/shared-types';\n\nimport { useRelationships } from '@guider-global/front-end-hooks';\nimport { useBaseLanguage } from '@guider-global/sanity-hooks';\nimport { ModalCard } from 'components';\nimport { IButtonAction } from 'components/ActionButton';\nimport { toDate, zonedTimeToUtc } from 'date-fns-tz';\n\ninterface IRelationshipGoalsCreateProps {\n relationship: IRelationship;\n handleClose: () => void;\n timezone: string;\n}\n\nexport type IGoalInputs = {\n categorySlug: string;\n objective: string;\n text: string;\n progress: number;\n endDate: string;\n};\n\nexport const RelationshipGoalsCreate: React.FC<\n IRelationshipGoalsCreateProps\n> = ({ relationship, handleClose, timezone }) => {\n //hooks\n const navigate = useNavigate();\n\n const { isLoadingGoals, reqGoals, isMutatingGoals, revalidateGoals } =\n useGoals({});\n const { reqRelationships, isMutatingRelationships, relationshipsRevalidate } =\n useRelationships({});\n\n //baseLanguage\n const organizationSlug = getSubDomain();\n\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 const { endDate } = data;\n\n const newEndDate = toDate(endDate);\n const endDateUTC = timezone\n ? zonedTimeToUtc(newEndDate, timezone)\n : newEndDate;\n\n Object.assign(data, {\n status: 'on_track',\n organizationSlug,\n programSlugs: [relationship?.programSlug],\n });\n\n const { data: goalsResponseData } = await reqGoals({\n method: 'POST',\n url: '/goals',\n data: { ...data, endDate: endDateUTC },\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 data: {\n goals: [...(currentGoalIds as string[]), ...newGoalIds],\n },\n });\n\n navigate(`/relationships/${relationship.id}/goals`);\n revalidateGoals();\n relationshipsRevalidate();\n };\n\n //modal actions\n const contentModalActions: 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 timezone={timezone}\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 } 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';\nimport { useRelationships } from '@guider-global/front-end-hooks';\nimport { toDate, zonedTimeToUtc } from 'date-fns-tz';\n\ninterface IRelationshipGoalsEdit {\n relationship: IRelationship;\n handleClose: () => void;\n timezone: string;\n}\n\nexport const RelationshipGoalsEdit: React.FC = ({\n relationship,\n handleClose,\n timezone,\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, revalidateGoals, isMutatingGoals } =\n useGoals({});\n const { relationshipsRevalidate, isMutatingRelationships } = useRelationships(\n {},\n );\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 { endDate } = data;\n\n const newEndDate = toDate(endDate);\n const endDateUTC = timezone\n ? zonedTimeToUtc(newEndDate, timezone)\n : newEndDate;\n\n const { data: goalsResponseData } = await reqGoals({\n method: 'PATCH',\n url: `/goals/${goalId}`,\n data: {\n ...data,\n endDate: endDateUTC,\n },\n });\n\n if (!goalsResponseData) {\n return;\n }\n\n navigateBack();\n revalidateGoals();\n relationshipsRevalidate();\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 const handleDeleteGoal = async () => {\n await reqGoals({\n method: 'DELETE',\n url: `/goals/${goalId}`,\n });\n\n navigate(`/relationships/${relationship.id}/goals`);\n revalidateGoals();\n relationshipsRevalidate();\n };\n\n const handleDeleteModalClose = () => {\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 {\n label: baseLanguage?.globals?.common?.delete_button_label,\n action: () => {\n handleDeleteGoal();\n handleDeleteModalClose();\n },\n color: 'error',\n variant: 'contained',\n isLoadingButton: true,\n dataCyLabel:\n 'components_Relationships_RelationshipGoals_RelationshipGoalsView_confirm-delete-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\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 } from 'react-router-dom';\n\n// components\nimport { GoalsEmptyPageContent, GoalsItem, ModalCard } from 'components';\n\n// hooks\nimport { useGoals, useLocalization } from 'hooks';\n\n// types\nimport { useRelationships } from '@guider-global/front-end-hooks';\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 // 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 { isLoadingRelationships, isMutatingRelationships } = useRelationships(\n {},\n );\n const navigate = useNavigate();\n\n const { isLoadingGoals, isMutatingGoals } = useGoals({});\n\n // Get goals data\n\n const programSlug = relationship.programSlug;\n const { getProgram } = useOrganizationPrograms({\n organizationSlug,\n localeCode,\n });\n const program = getProgram(programSlug ?? '');\n\n const customGoalCategories =\n program?.registration?.goals?.custom_goal_categories?.map(\n (customCategory) => ({\n label: customCategory.goal_category_name,\n slug: customCategory.goal_category_slug.current,\n icon: customCategory.goal_category_icon?.name,\n }),\n ) ?? [];\n\n const organizationGoalCategories =\n organization?.goal_categories?.categories?.map((goalCategory) => ({\n label: goalCategory.goal_category_name,\n slug: goalCategory.goal_category_slug.current,\n icon: goalCategory.goal_category_icon?.name,\n })) ?? [];\n\n const goalCategories =\n organizationGoalCategories.concat(customGoalCategories);\n const goals = relationship?.goals as Partial[];\n\n const relationshipGoals = relationship.goals;\n\n //modal actions\n const modalActions: 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) {\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 from 'react';\nimport { useParams } from 'react-router-dom';\n\n// components\nimport { ModalCard, RelationshipGoalsEdit } from 'components';\nimport { GoalsDetails } from 'components/Goals/GoalsDetails';\n\n// hooks\nimport { useGoals, useLocalization } from 'hooks';\n\n// types\n\nimport { useRelationships } from '@guider-global/front-end-hooks';\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 timezone: string;\n}\n\nexport const RelationshipGoalsView: React.FC = ({\n relationship,\n handleClose,\n isGuide,\n timezone,\n}) => {\n //hooks\n const organizationSlug = getSubDomain();\n\n const { isLoadingRelationships, isMutatingRelationships } = useRelationships(\n {},\n );\n\n //style\n const theme = useTheme();\n\n //base language\n const { localeCode } = useLocalization(organizationSlug);\n const { baseLanguage } = useBaseLanguage({ localeCode });\n\n const closeButtonLabel =\n baseLanguage?.globals?.common?.close_button_label ?? 'Close';\n\n //goals\n const { goalId } = useParams();\n const { isLoadingGoals, goals, isMutatingGoals } = 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 if (!goal) {\n return <>;\n }\n\n //modal actions\n const guideModalActions: IButtonAction[] = [\n {\n label: closeButtonLabel,\n color: 'info',\n variant: 'contained',\n action: () => handleClose(),\n },\n ];\n\n return isGuide ? (\n \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 { getSubDomain } from '@guider-global/front-end-utils';\nimport { IGoal, IRelationship } from '@guider-global/shared-types';\nimport { Button, TextStack, theme } from '@guider-global/ui';\nimport { MDIcons, SanityIcon } from 'components/SanityIcon';\nimport { useLocalization } from 'hooks';\nimport { deepMerge } from 'utils';\nimport { useSettings } from '@guider-global/front-end-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 { settings } = useSettings({\n options: { keepPreviousData: true },\n });\n const timeZone = settings?.at(0)?.timezone ?? 'Europe/London';\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 { getProgram } = useOrganizationPrograms({\n organizationSlug,\n localeCode,\n });\n const program = getProgram(programSlug ?? '');\n\n const customGoalCategories =\n program?.registration?.goals?.custom_goal_categories?.map(\n (customCategory) => ({\n label: customCategory.goal_category_name,\n value: customCategory.goal_category_slug.current,\n icon: customCategory.goal_category_icon?.name,\n }),\n ) ?? [];\n\n const organizationGoalCategories =\n organization?.goal_categories?.categories?.map((goalCategory) => ({\n label: goalCategory.goal_category_name,\n value: goalCategory.goal_category_slug.current,\n icon: goalCategory.goal_category_icon?.name,\n })) ?? [];\n\n const goalCategories =\n organizationGoalCategories.concat(customGoalCategories);\n\n const handleGoalsModalClose = () => {\n navigate(`/relationships/${relationship.id}`);\n\n setIsGoalsModalOpen(false);\n };\n\n const handleManageGoals = () => {\n navigate(`/relationships/${relationship.id}/goals`);\n\n setIsGoalsModalOpen(true);\n };\n\n const handleGoalClick = (goalId: string) => {\n navigate(`/relationships/${relationship.id}/goals/${goalId}`, {\n replace: false,\n });\n\n setIsGoalsModalOpen(true);\n };\n\n return (\n <>\n \n \n \n {goals.map((goal) => {\n const goalCategory = goalCategories.find(\n (goalCategory) => goalCategory.value === goal.categorySlug,\n );\n\n return (\n }\n variant=\"text\"\n label={`${goalCategory?.label ?? goalCategory?.value} ${\n goal.objective ? ' - ' + goal.objective : ''\n }`}\n sx={{\n height: 'fit-content',\n justifyContent: 'flex-start',\n span: {\n fontWeight: '400',\n fontSize: '13px',\n textAlign: 'left',\n lineHeight: '130%',\n pl: 0.5,\n },\n mb: 0.5,\n }}\n fullWidth\n onClick={() => handleGoalClick(goal.id || '')}\n disabled={archived}\n />\n );\n })}\n \n {!isGuide && (\n \n {\n baseLanguage?.relationships?.goals?.sidebar\n ?.manage_goals_button_label\n }\n \n )}\n \n \n \n \n );\n};\n\nexport * from './RelationshipGoalsCreate';\nexport * from './RelationshipGoalsEdit';\nexport * from './RelationshipGoalsManage';\nexport * from './RelationshipGoalsView';\n","import {\n useRelationships,\n useMemberships,\n} from '@guider-global/front-end-hooks';\nimport { getSubDomain } from '@guider-global/front-end-utils';\nimport { useOrganizationPrograms } from '@guider-global/sanity-hooks';\nimport { IRelationship, IGroup } 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 { 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 sessionsLength = relationship.sessions\n ? relationship.sessions.length\n : 0;\n const hasScheduledAtLeastOneSession = sessionsLength > 0;\n const isArchivedRelationship = relationship.isConcluded;\n\n const organizationSlug = getSubDomain();\n const { localeCode } = useLocalization(organizationSlug);\n\n const { getProgram } = useOrganizationPrograms({\n organizationSlug,\n localeCode,\n });\n const program = getProgram(relationship.programSlug ?? '');\n const organizationTheme = useTheme();\n const combinedPalette = deepMerge(\n theme.appTheme.palette,\n organizationTheme.palette,\n );\n const { palette } = organizationTheme;\n\n const { isLoadingMemberships, membershipsRevalidate, isMutatingMemberships } =\n useMemberships({});\n const {\n reqRelationships,\n isLoadingRelationships,\n isMutatingRelationships,\n relationshipsRevalidate,\n } = useRelationships({});\n\n const group = relationship?.group as Partial;\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 isActiveGroup =\n group?.activatedAt !== null && group?.activatedAt !== undefined;\n\n const traineeCount = relationship.traineeProfiles?.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 deactivateGroup = async () => {\n await reqRelationships({\n method: 'PATCH',\n url: `/relationships/${relationship?.id}`,\n data: {\n group: {\n activatedAt: null,\n },\n },\n });\n\n membershipsRevalidate();\n relationshipsRevalidate();\n };\n\n const activateGroup = async () => {\n if (noTraineesHaveJoined) {\n return;\n }\n\n await reqRelationships({\n method: 'PATCH',\n url: `/relationships/${relationship?.id}`,\n data: {\n group: {\n activatedAt: new Date(),\n },\n },\n });\n\n membershipsRevalidate();\n relationshipsRevalidate();\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: () => deactivateGroup(),\n loading:\n isLoadingRelationships ||\n isMutatingRelationships ||\n isMutatingMemberships,\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:\n guideGroupCopy?.group_activation_pending?.start_group_button_label,\n key: 'activation-button',\n onClick: () => activateGroup(),\n loading:\n isLoadingMemberships ||\n isLoadingRelationships ||\n isMutatingRelationships ||\n isMutatingMemberships,\n },\n ];\n }\n\n if (\n ((hasScheduledAtLeastOneSession && isActiveGroup) ||\n isArchivedRelationship) &&\n !allTraineesHaveLeft\n ) {\n return <>;\n }\n\n return (\n <>\n \n \n \n {icon}\n \n \n \n \n \n {isGuide && (\n <>\n {(!isActiveGroup || allTraineesHaveLeft) && (\n \n )}\n\n {noTraineesHaveJoined && (\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","//external\nimport { useProfileImage } from '@guider-global/azure-storage-hooks';\nimport { useProfiles } from '@guider-global/front-end-hooks';\nimport {\n EProgramVariation,\n IGroup,\n IRelationship,\n} from '@guider-global/shared-types';\nimport {\n Avatar,\n Badge,\n Box,\n Button,\n Typography,\n useTheme,\n} from '@mui/material';\nimport React, { useMemo } 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 const group = relationship?.group as Partial;\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 { 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 ? group?.title : otherPartyProfile?.displayName}\n \n )}\n \n \n {isUnreadMessages && (\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 ButtonBase,\n IconButton,\n lighten,\n Typography,\n useTheme,\n} from '@mui/material';\nimport React, { useContext } from 'react';\n\n//types\nimport { INote } from '@guider-global/shared-types';\nimport Edit from '@mui/icons-material/Edit';\nimport KeyboardDoubleArrowLeftIcon from '@mui/icons-material/KeyboardDoubleArrowLeft';\nimport KeyboardDoubleArrowRightIcon from '@mui/icons-material/KeyboardDoubleArrowRight';\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 { INoteInputs } from 'forms';\nimport { defaultNoteValues, RelationshipNotesModalContext } from 'modals';\nimport { useFormContext } from 'react-hook-form';\n\ninterface IRelationshipNotesList {\n notes: Partial[];\n isExpanded?: boolean;\n handleExpand: (expand?: boolean) => void;\n}\n\nexport const RelationshipNotesList: React.FC = ({\n notes,\n isExpanded,\n handleExpand,\n}) => {\n //hooks\n const organizationSlug = getSubDomain();\n const navigate = useNavigate();\n const { relationshipId, noteId } = useParams();\n const { setOnConfirmDiscardNoteChanges, setIsDiscardNoteChangesModalOpen } =\n useContext(RelationshipNotesModalContext);\n\n const {\n reset,\n formState: { isDirty },\n } = useFormContext();\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 if (isMobile) {\n handleExpand(false);\n }\n if (isDirty) {\n setIsDiscardNoteChangesModalOpen(true);\n setOnConfirmDiscardNoteChanges(() => callback);\n } else {\n reset(defaultNoteValues);\n callback();\n }\n };\n\n const isDocumentDirectionRtl = baseLanguage?.text_direction === 'rtl';\n\n const getIcon = (\n isExpanded: boolean | undefined,\n isDocumentDirectionRtl: boolean,\n ) => {\n if (isExpanded) {\n return isDocumentDirectionRtl ? (\n \n ) : (\n \n );\n } else {\n return isDocumentDirectionRtl ? (\n \n ) : (\n \n );\n }\n };\n\n //renders\n const renderNotesItems = () =>\n notes.map((note) => (\n handleClick(() => navigateToNote(note.id))}\n sx={{\n display: 'flex',\n justifyContent: 'space-between',\n borderRadius: 0,\n textTransform: 'unset !important',\n ...(note.id === noteId && {\n backgroundColor: `${lighten(theme.palette.info.main, 0.9)}`,\n }),\n py: 1,\n pr: 0,\n pl: isExpanded ? 2 : 0,\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n overflow: 'hidden',\n }}\n disabled={note.id === noteId}\n data-cy={`relationship-note-${note.id}`}\n >\n \n {note.title}\n \n\n {note.isPrivate || !isExpanded ? undefined : (\n \n )}\n \n ));\n\n return (\n <>\n \n {isExpanded && (\n \n {notesCountDescription}\n \n )}\n handleExpand()}\n data-cy=\"relationship-notes-list-open-icon-button\"\n >\n {getIcon(isExpanded, isDocumentDirectionRtl)}\n \n \n\n \n {renderNotesItems()}\n \n {isExpanded ? (\n }\n sx={{\n mx: { xs: 2, md: 3 },\n my: 2,\n fontWeight: 600,\n whiteSpace: 'nowrap',\n ':dir(rtl)': {\n '& .MuiButton-startIcon': {\n marginLeft: '8px',\n marginRight: '-4px',\n },\n },\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 handleClick(navigateToNoteCreate)}\n data-cy=\"relationship-notes-list-create-note-button\"\n >\n \n \n )}\n \n );\n};\n","// external\nimport { format, toDate } from 'date-fns-tz';\nimport React, { useMemo, useState } from 'react';\nimport { SubmitHandler, useFormContext } from 'react-hook-form';\nimport { useLocation, useNavigate, useParams } from 'react-router-dom';\n// internal\nimport { getSubDomain } from '@guider-global/front-end-utils';\nimport { useLocalization, useMobileMediaQuery, useNotes } from 'hooks';\n\n// types\nimport { INote, IRelationship } from '@guider-global/shared-types';\n\nimport { useBaseLanguage } from '@guider-global/sanity-hooks';\nimport { ITypedApiResult } from '@guider-global/swr';\nimport { Box } from '@mui/material';\nimport { ActionButton, IButtonAction } from 'components/ActionButton';\nimport { INoteInputs, NotesCreateForm } from 'forms/Notes/NotesCreateForm';\nimport { ConfirmationModal, defaultNoteValues } from 'modals';\nimport { useUsers } from '@guider-global/front-end-hooks';\n\ninterface IRelationshipNoteProps {\n relationship: IRelationship;\n}\n\nexport const RelationshipNote: React.FC = ({\n relationship,\n}) => {\n const [isDeleteModalOpen, setIsDeleteModalOpen] = useState(false);\n //hooks\n const isMobile = useMobileMediaQuery();\n const navigate = useNavigate();\n const location = useLocation();\n const { noteId, relationshipId } = useParams();\n const isCreate = location.pathname.endsWith('create');\n const organizationSlug = getSubDomain();\n\n const { users } = useUsers({});\n const user = users?.at(0);\n const {\n isLoadingNotes,\n reqNotes,\n isMutatingNotes,\n notes = [],\n } = useNotes({\n params: {\n relationshipId: relationshipId,\n },\n });\n\n const currentNote = useMemo(\n () => notes?.find((note) => note.id === noteId),\n [notes, noteId],\n );\n const isNoteOwner = currentNote?.ownerId === user?.id;\n\n const isLoading = isMutatingNotes || isLoadingNotes;\n\n //baseLanguage\n const { localeCode } = useLocalization(organizationSlug);\n const { baseLanguage } = useBaseLanguage({ localeCode });\n const cancelButtonLabel =\n baseLanguage?.globals?.common?.cancel_button_label ?? 'Cancel';\n\n //form\n\n const {\n handleSubmit,\n formState: { isDirty },\n reset,\n } = useFormContext();\n\n //handlers\n\n const onSubmit: SubmitHandler = async (data) => {\n const { isPublic, ...rest } = data;\n if (isCreate) {\n await reqNotes(\n {\n method: 'POST',\n url: `/notes`,\n data: {\n ...rest,\n isPrivate: !isPublic,\n relationshipId: relationshipId,\n },\n },\n {\n onSuccess: (response) => {\n const notesCreateResponseData = response.data.at(0)?.id;\n if (!notesCreateResponseData) {\n console.error('No note returned during create');\n }\n navigate(\n `/relationships/${relationshipId}/notes/${notesCreateResponseData}`,\n );\n },\n onError: (err) => {\n console.error('Something went wrong', err);\n },\n populateCache: (result, currentData) => {\n const newNotes = result.data;\n const oldNotes = currentData?.data ?? [];\n\n const newCache = {\n ...currentData,\n data: [...oldNotes, ...newNotes],\n } as ITypedApiResult;\n return newCache;\n },\n },\n );\n } else {\n await reqNotes(\n {\n method: 'PATCH',\n url: `/notes/${currentNote?.id}`,\n data: {\n ...rest,\n isPrivate: !isPublic,\n },\n },\n {\n populateCache: (result, currentData) => {\n const newNotes = result.data;\n const replaceDuplicateNotes =\n currentData?.data.map((note) => {\n const newNote = newNotes.find(\n (newNote) => newNote.id === note.id,\n );\n if (newNote) {\n return newNote;\n }\n return note;\n }) ?? [];\n\n const newCache = {\n ...currentData,\n data: [...replaceDuplicateNotes],\n } as ITypedApiResult;\n return newCache;\n },\n },\n );\n }\n };\n\n const handleDeleteModalClose = () => {\n setIsDeleteModalOpen(false);\n };\n\n const handleDeleteNote = async () => {\n await reqNotes(\n {\n method: 'DELETE',\n url: `/notes/${currentNote?.id}`,\n },\n {\n onSuccess: () => {\n handleDeleteModalClose();\n navigate(`/relationships/${relationshipId}/notes`);\n },\n populateCache: (result, currentData) => {\n reset(defaultNoteValues);\n const removedIds = result.data.map((note) => note.id);\n const filterRemoved =\n currentData?.data.filter((note) => !removedIds.includes(note.id)) ??\n [];\n return {\n ...currentData,\n data: filterRemoved,\n } as ITypedApiResult;\n },\n },\n );\n };\n\n //modal actions\n const createActions: IButtonAction[] = [\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-create-note-button',\n },\n ];\n\n const patchActions: 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 const actions = isCreate ? createActions : patchActions;\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 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 return (\n <>\n \n \n {actions.map((action) => (\n \n ))}\n \n \n \n );\n};\n","// external\nimport { LoadingButton } from '@mui/lab';\nimport { Box, ThemeProvider, Typography, useTheme } from '@mui/material';\nimport React, { useEffect, useState } from 'react';\nimport { useLocation, useNavigate, useParams } 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 const { relationshipId } = useParams();\n const { pathname } = useLocation();\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 useEffect(() => {\n if (isNotesModalOpen) return;\n\n if (pathname.includes('/relationships') && pathname.includes('/notes')) {\n setIsNotesModalOpen(true);\n }\n }, [isNotesModalOpen, pathname, relationshipId]);\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 './RelationshipNotesEmpty';\nexport * from './RelationshipNotesList';\nexport * from './RelationshipNote';\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 setIsLoading?: (isLoading: boolean) => void;\n isLoading?: boolean;\n}\n\nexport const RelationshipSessionsCreate: React.FC<\n IRelationshipSessionsCreateProps\n> = ({ relationship, handleClose, timezone, isLoading, setIsLoading }) => {\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 {\n reqRelationships,\n isLoadingRelationships,\n isMutatingRelationships,\n relationshipsRevalidate,\n } = 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, isMutatingSessions } = useSessions(\n {},\n );\n\n const currentSessions = relationship.sessions as Partial[];\n\n const programSlug = relationship.programSlug;\n const { getProgram } = useOrganizationPrograms({\n organizationSlug,\n localeCode,\n });\n const program = getProgram(programSlug ?? '');\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 if (relationship.reengagedAt) {\n setIsLoading && setIsLoading(true);\n await reqRelationships({\n method: 'PATCH',\n url: `/relationships/${relationship.id}`,\n data: { reengagedAt: null },\n });\n await relationshipsRevalidate();\n navigate('/relationships');\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: sessionsBaseLanguage?.new_session_modal?.success_alert_text,\n timeout: 5000,\n }),\n );\n\n handleClose();\n setIsLoading && setIsLoading(false);\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 { format } from 'date-fns';\nimport React, { useEffect, 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 trigger,\n } = useForm({\n mode: 'all',\n });\n const typedControl: Control = control as unknown as Control;\n\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, isMutatingSessions } =\n useSessions({});\n const { reqRelationships, isMutatingRelationships } = 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 useEffect(() => {\n if (session) {\n const { start, end, videoConferencing, location, name } = session;\n const startUtc = start ? zonedTimeToUtc(start, timezone) : new Date();\n const endUtc = end ? zonedTimeToUtc(end, timezone) : undefined;\n\n setValue('title', name ?? '');\n setValue('date', startUtc);\n setValue('startTime', start ? format(startUtc, 'HH:mm') : '');\n setValue('endTime', endUtc ? format(endUtc, 'HH:mm') : '');\n setValue('videoConferencing', videoConferencing ?? 'guider');\n setValue('location', location ?? '');\n }\n }, [session, timezone, setValue]);\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 navigateBack();\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[] = [\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 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 action: handleSubmit(onSubmit),\n isLoadingButton: true,\n disabled: !isValid || !isDirty,\n dataCyLabel: 'relationship-edit-session-modal-submit-button',\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 { 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 isGuide: boolean;\n timezone: string;\n}\n\nexport const RelationshipSessionHistory: React.FC<\n IRelationshipSessionsHistoryProps\n> = ({ relationship, handleClose, isGroupProgram, isGuide, timezone }) => {\n //base language\n const organizationSlug = getSubDomain();\n const { localeCode } = useLocalization(organizationSlug);\n const { baseLanguage } = useBaseLanguage({ localeCode });\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 && isGuide) || !isGroupProgram);\n\n useEffect(() => {\n if (pathname.includes('sessions') && !isSessionsModalOpen) {\n setIsSessionsModalOpen(true);\n }\n }, [pathname, isSessionsModalOpen]);\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 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 />\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 setIsLoading?: (isLoading: boolean) => void;\n isLoading?: boolean;\n}\n\ninterface IDateCheckbox {\n heading: string | undefined;\n name: TConvertableSessionLogTime;\n}\n\nexport const RelationshipSessionsLog: React.FC<\n IRelationshipSessionsLogProps\n> = ({ relationship, handleClose, setIsLoading, isLoading }) => {\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 //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, isMutatingSessions } = useSessions(\n {},\n );\n\n // relationships\n const {\n reqRelationships,\n isLoadingRelationships,\n isMutatingRelationships,\n relationshipsRevalidate,\n } = useRelationships({});\n\n const programSlug = relationship?.programSlug;\n\n const { getProgram } = useOrganizationPrograms({\n organizationSlug,\n localeCode,\n });\n const program = getProgram(programSlug ?? '');\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 if (relationship.reengagedAt) {\n setIsLoading && setIsLoading(true);\n await reqRelationships({\n method: 'PATCH',\n url: `/relationships/${relationship.id}`,\n data: { reengagedAt: null },\n });\n\n await relationshipsRevalidate();\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 handleClose();\n setIsLoading && setIsLoading(false);\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 || isLoading,\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 isGuide: boolean;\n timezone: string;\n}\n\nexport const RelationshipSessionsView: React.FC<\n IRelationshipSessionsViewProps\n> = ({ relationship, handleClose, isGroupProgram, isGuide, timezone }) => {\n const canSeeEditSessionButton =\n !relationship.isConcluded &&\n ((isGroupProgram && 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 isGuide: boolean;\n}\n\nexport const RelationshipSessions: React.FC = ({\n relationship,\n isGroupProgram,\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 && isGuide) || !isGroupProgram);\n\n const canSeeSessions =\n (isGroupProgram && relationship?.traineeProfiles?.length !== 0) ||\n !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 { Modal } from '@mui/material';\n\n//components\nimport { ModalCard } from 'components/ModalCard';\n\n//types\nimport { ProfilePreview } from 'components';\nimport {\n MembershipDataProps,\n ProfilePreviewProfileData,\n} from 'components/ProfilePreview';\n\ninterface RelationshipViewProfileModalProps {\n isOpen: boolean;\n title: string | undefined;\n closeButtonLabel: string | undefined;\n handleClose: () => void;\n closeButtonAction: () => void;\n programSlug: string | undefined;\n userRole: 'guide' | 'trainee';\n profileData: ProfilePreviewProfileData;\n membershipData: MembershipDataProps;\n connectAction?: () => void;\n isLoading?: boolean;\n}\n\nexport function RelationshipViewProfileModal({\n isOpen,\n title,\n closeButtonLabel,\n handleClose,\n closeButtonAction,\n programSlug,\n userRole,\n profileData,\n membershipData,\n connectAction,\n isLoading = false,\n}: RelationshipViewProfileModalProps) {\n return (\n \n \n \n \n \n );\n}\n","//external\nimport { Box, Divider, ThemeProvider, useTheme } from '@mui/material';\nimport { useState } from 'react';\n\n//hooks\nimport {\n useBaseLanguage,\n useOrganizationPrograms,\n} from '@guider-global/sanity-hooks';\n\n//types\nimport {\n IMembership,\n IRelationship,\n ISkill,\n} from '@guider-global/shared-types';\nimport {\n MembershipDataProps,\n ProfilePreviewProfileData,\n} from 'components/ProfilePreview';\nimport { useLocalization } from 'hooks';\n\nimport { useProfiles } from '@guider-global/front-end-hooks';\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\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 { profiles } = useProfiles({});\n const profile = profiles?.at(0);\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({\n organizationSlug,\n localeCode,\n includeUnlistedPrograms: true,\n });\n\n const program = programs.find(\n (program) => program.metadata.id.current === programSlug,\n );\n const programTypeText =\n program?.program_details?.program_type?.program_type_text;\n\n // TODO: reinstate view profile for open matching - currently set up for Memberships only\n\n if (!programSlug || !profile) 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 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 { Box, Skeleton } from '@mui/material';\nimport React from 'react';\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","// 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 IGroup,\n IMembership,\n IRelationship,\n ISkill,\n} from '@guider-global/shared-types';\n\nimport { useProfileImage } from '@guider-global/azure-storage-hooks';\nimport { useProfiles, useRelationships } from '@guider-global/front-end-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 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 { useLocalization, useMobileMediaQuery } from 'hooks';\nimport { RelationshipGroupMembersModal } from 'modals';\nimport { useAppDispatch } from 'store/hooks';\nimport { showAppAlert } from 'store/slices/appSlice';\nimport { deepMerge, hexToRGB } from 'utils';\nimport RelationshipActions from '../RelationshipActions';\nimport { ITypedApiResult } from '@guider-global/redux-axios-hooks';\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 const group = relationship?.group as Partial;\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 organizationTheme = useTheme();\n const combinedPalette = deepMerge(\n theme.appTheme.palette,\n organizationTheme.palette,\n );\n\n const organizationSlug = getSubDomain();\n\n const navigate = useNavigate();\n const dispatch = useAppDispatch();\n const isMobile = useMobileMediaQuery();\n\n const { localeCode } = useLocalization(organizationSlug);\n const { baseLanguage } = useBaseLanguage({ localeCode });\n\n const { getProfileImage } = useProfileImage();\n\n const {\n reqRelationships,\n isLoadingRelationships,\n isMutatingRelationships,\n relationships,\n relationshipsRevalidate,\n } = useRelationships({});\n const { profiles } = useProfiles({});\n const profile = profiles?.at(0);\n\n const { getProgram } = useOrganizationPrograms({\n organizationSlug,\n localeCode,\n });\n const program = getProgram(relationship.programSlug ?? '');\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 ownRole =\n groupMentor?.profile?.id === profile?.id ? 'guide' : 'trainee';\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 const handleProfileModalOpen = (userId?: string, profileId?: string) => {\n setSelectedUserId(userId);\n setSelectedProfileId(profileId);\n\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 group: relationship?.group as IGroup,\n groupSkills: relationship?.skills as ISkill[],\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 ? group?.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 const guideId = groupMentor?.profile?.id;\n if (!selectedProfileId || !guideId || !profile?.id) return;\n\n const isGuide = guideId === profile?.id;\n const traineeProfile = isGuide ? selectedProfileId : profile?.id;\n\n const existingRelationship = relationships?.find(\n (relationship) =>\n relationship?.guideProfiles?.some(\n (profile) => profile.id === guideId,\n ) &&\n relationship?.traineeProfiles?.some(\n (profile) => profile.id === traineeProfile,\n ) &&\n relationship.programVariationTypeSlug ===\n EProgramVariation.Individual &&\n !relationship.isConcluded,\n );\n\n if (existingRelationship) {\n handleProfileModalClose();\n handleGroupMembersModalClose();\n navigate(`/relationships/${existingRelationship.id}`);\n return;\n }\n\n await reqRelationships(\n {\n method: 'PUT',\n data: {\n guideProfiles: [guideId],\n traineeProfiles: traineeProfile ? [traineeProfile] : [],\n organizationSlug,\n programTypeSlug:\n program?.program_details?.program_type?.metadata?.id?.current,\n programVariationTypeSlug: EProgramVariation.Individual,\n profileId: profile?.id,\n goals: [],\n },\n },\n {\n onSuccess: (result, key) => {\n const relationshipId = (result?.data as IRelationship[])[0]?.id;\n handleProfileModalClose();\n relationshipsRevalidate();\n handleGroupMembersModalClose();\n navigate(`/relationships/${relationshipId}`);\n },\n populateCache: (result, currentData) => {\n const resultIds = result.data.map((relationship) => relationship.id);\n const filterOutNewRelationships =\n currentData?.data.filter((relationship) => {\n return !resultIds.includes(relationship.id);\n }) ?? [];\n\n const newCache = {\n ...currentData,\n data: [...filterOutNewRelationships, ...result.data],\n } as ITypedApiResult;\n return newCache;\n },\n onError: (err) => {\n dispatch(\n showAppAlert({\n severity: 'error',\n message: err?.message,\n timeout: 5000,\n }),\n );\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 {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","import * as Icons from 'react-icons/md';\n\nexport type MDIcons = keyof typeof Icons;\n\ninterface ISanityIconProps {\n name?: MDIcons;\n}\n\nexport const SanityIcon = ({ name }: ISanityIconProps) => {\n if (!name) return <>;\n const Icon = Icons[name];\n\n return ;\n};\n","// external\nimport { useEffect } from 'react';\nimport { useLocation } from 'react-router-dom';\n\nexport const ScrollToTop = () => {\n const { pathname } = useLocation();\n\n useEffect(() => {\n window.scrollTo(0, 0);\n }, [pathname]);\n\n return null;\n};\n","import React, { useCallback } from 'react';\n\nimport { IProfile, ISession } from '@guider-global/shared-types';\nimport CancelIcon from '@mui/icons-material/Cancel';\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\nimport HelpIcon from '@mui/icons-material/Help';\nimport VideoCameraFront from '@mui/icons-material/VideoCameraFront';\nimport { Avatar, Box, Button, Typography } from '@mui/material';\nimport { SiMicrosoftteams } from 'react-icons/si';\n\n// Hooks\nimport { useBaseLanguage } from '@guider-global/sanity-hooks';\n\nimport { useProfileImage } from '@guider-global/azure-storage-hooks';\nimport {\n getFriendlyDateFormat,\n getISOStringWithoutMilliseconds,\n getLanguageFromCMS,\n getSubDomain,\n getTimeFormat,\n} from '@guider-global/front-end-utils';\nimport { defaultPalette, primitiveColors } from '@guider-global/ui';\nimport { formatInTimeZone } from 'date-fns-tz';\nimport { useLocalization, useMixpanelEvents } from 'hooks';\n\nexport interface IAttendee extends Partial {\n userPicture?: string;\n}\n\ninterface ISessionsDetails {\n session: ISession;\n attendees: IAttendee[];\n timezone: string;\n}\n\nconst HAS_ACCEPTED = 0;\nconst IS_TENTATIVE = 1;\nconst HAS_DECLINED = 2;\nconst NO_RESPONSE = 3;\ntype AttendeeResponse = [\n IAttendee,\n (\n | typeof HAS_ACCEPTED\n | typeof IS_TENTATIVE\n | typeof HAS_DECLINED\n | typeof NO_RESPONSE\n ),\n];\n\nexport const SessionsDetails: React.FC = ({\n session,\n attendees,\n timezone,\n}) => {\n //base language\n const organizationSlug = getSubDomain();\n const { localeCode } = useLocalization(organizationSlug);\n const { baseLanguage } = useBaseLanguage({ localeCode });\n\n const { trackScreenTime } = useMixpanelEvents();\n const { getProfileImage } = useProfileImage();\n\n const trackSessionJoinButtonClick = useCallback(() => {\n trackScreenTime(\n 'Relationship - Session - Session viewed - Join call button',\n { Started: getISOStringWithoutMilliseconds() },\n );\n }, [trackScreenTime]);\n\n if (!session?.createdAt) {\n return <>;\n }\n\n const locale = getLanguageFromCMS(baseLanguage?.language_code);\n\n const formattedTime = getTimeFormat(baseLanguage?.time_format);\n const formattedDate = getFriendlyDateFormat(baseLanguage?.date_format);\n\n const { acceptedEmails, tentativeEmails, declinedEmails } = session;\n const attendeeResponses: AttendeeResponse[] = attendees.map((profile) => {\n const user = session.users.find((user) => user.id === profile.userId);\n const userEmail = user?.email ?? '';\n const hasAccepted = acceptedEmails?.includes(userEmail);\n const isTentative = tentativeEmails?.includes(userEmail);\n const hasDeclined = declinedEmails?.includes(userEmail);\n\n if (hasAccepted) {\n return [profile, HAS_ACCEPTED];\n }\n if (isTentative) {\n return [profile, IS_TENTATIVE];\n }\n if (hasDeclined) {\n return [profile, HAS_DECLINED];\n }\n return [profile, NO_RESPONSE];\n });\n const sortedAttendeeResponses = attendeeResponses.sort(\n ([, responseA], [, responseB]) => responseA - responseB,\n );\n\n const renderAttendees = () =>\n sortedAttendeeResponses.map(([profile, response], index) => {\n const hasAccepted = response === HAS_ACCEPTED;\n const isTentative = response === IS_TENTATIVE;\n const hasDeclined = response === HAS_DECLINED;\n\n let backgroundColor = primitiveColors.black[100];\n if (hasAccepted) {\n backgroundColor = primitiveColors.green[10];\n } else if (isTentative) {\n backgroundColor = primitiveColors.yellow[10];\n } else if (hasDeclined) {\n backgroundColor = primitiveColors.red[10];\n }\n\n const image = getProfileImage({\n profilePicture: profile.picture,\n userPicture: profile?.userPicture,\n });\n return (\n \n \n\n \n {profile.displayName}\n \n {hasAccepted && (\n \n )}\n {isTentative && (\n \n )}\n {hasDeclined && (\n \n )}\n \n );\n });\n\n const renderJoinSessionButton = () => {\n switch (session.videoConferencing) {\n case 'guider':\n return (\n }\n sx={{ backgroundColor: 'white', fontWeight: 600, mt: 1.5 }}\n fullWidth\n onClick={() => {\n trackSessionJoinButtonClick();\n window.open(\n `${\n window.location.protocol + '//' + window.location.host\n }/video/${session.id}`,\n );\n }}\n >\n {\n baseLanguage?.relationships?.sessions?.view_session_modal\n ?.join_with_guider_video_button_label\n }\n \n );\n case 'ms-teams':\n return (\n }\n sx={{ backgroundColor: 'white', fontWeight: 600, mt: 1.5 }}\n fullWidth\n href={session.videoConferencingUrl}\n target=\"_blank\"\n onClick={trackSessionJoinButtonClick}\n >\n {\n baseLanguage?.relationships?.sessions?.view_session_modal\n ?.join_with_ms_teams_button_label\n }\n \n );\n default:\n return;\n }\n };\n\n return (\n <>\n \n {session.name}\n \n \n {baseLanguage?.relationships?.sessions?.view_session_modal?.when_label}\n \n \n {formatInTimeZone(\n new Date(session.start ?? ''),\n timezone,\n `${formattedDate}`,\n { locale },\n )}\n \n \n {formatInTimeZone(\n new Date(session.start ?? ''),\n timezone,\n `${formattedTime}`,\n { locale },\n )}\n {' - '}\n {formatInTimeZone(\n new Date(session.end ?? ''),\n timezone,\n ` ${formattedTime}`,\n { locale },\n )}\n \n {session.location && (\n <>\n \n {\n baseLanguage?.relationships?.sessions?.view_session_modal\n ?.where_label\n }\n \n {session.location}\n \n )}\n {renderJoinSessionButton()}\n \n {\n baseLanguage?.relationships?.sessions?.view_session_modal\n ?.attendees_label\n }\n \n {renderAttendees()}\n \n );\n};\n","import { OrganizationContentContainer } from '@guider-global/ui';\nimport { Typography } from '@mui/material';\nimport { FC, PropsWithChildren } from 'react';\n\nexport interface SettingsContainerProps {\n header?: string;\n}\n\nexport const SettingsContainer: FC<\n PropsWithChildren\n> = ({ children, header }) => {\n return (\n \n \n {children}\n \n );\n};\n\nexport const SettingsContainerHeader: FC<\n Pick\n> = ({ header }) => {\n if (!header) return null;\n return (\n \n {header}\n \n );\n};\n","// external\nimport { FC } from 'react';\nimport { Typography } from '@mui/material';\n\nexport interface SettingsDescriptionProps {\n description: string | undefined;\n}\n\nexport const SettingsDescription: FC = ({\n description,\n}) => {\n return (\n <>\n \n {description}\n \n \n );\n};\n","// external\nimport { FC } from 'react';\nimport { Skeleton, Typography } from '@mui/material';\n\nexport interface SettingsSubheaderProps {\n subheader: string | undefined;\n}\n\nexport const SettingsSubheader: FC = ({\n subheader,\n}) => {\n if (!subheader)\n return (\n <>\n \n \n Empty subheader\n \n \n \n );\n return (\n <>\n \n {subheader}\n \n \n );\n};\n","import { useOrganization } from '@guider-global/sanity-hooks';\nimport { createTheme } from '@mui/material';\nimport { LoadingElement } from 'components';\nimport { ThemeContext } from 'context/theme';\nimport { useLocalization } from 'hooks';\nimport {\n FC,\n PropsWithChildren,\n useCallback,\n useContext,\n useEffect,\n useState,\n} from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { useIntercom } from 'react-use-intercom';\nimport { useAppDispatch } from 'store/hooks';\nimport {\n RegistrationTypes,\n showAppAlert,\n startAppLoading,\n stopAppLoading,\n updateRegistrationType,\n} from 'store/slices/appSlice';\nlet { version: REACT_APP_VERSION } = require('../../../package.json');\n\nexport interface SetupWrapperProps {\n organizationSlug: string;\n}\n\nexport const SetupWrapper: FC> = ({\n organizationSlug,\n children,\n}) => {\n // Context\n const { theme, setTheme } = useContext(ThemeContext);\n // Local State\n const [loading, setLoading] = useState(true);\n\n const navigate = useNavigate();\n\n // Redux\n const dispatch = useAppDispatch();\n\n // Hooks\n // - Localization\n const { localeCode } = useLocalization(organizationSlug);\n // - Intercom\n const { boot: bootIntercom } = useIntercom();\n\n // - Sanity Organization\n const { isLoadingOrganization, organization } = useOrganization({\n organizationSlug,\n localeCode,\n });\n\n const sanityOrganizationAccess = organization?.access;\n const sanityOrganizationWhiteLabel = organization?.white_label;\n\n const isLocalAccountRegistration =\n sanityOrganizationAccess?.local_account_registration;\n const sanityOrganizationConfigurations =\n sanityOrganizationAccess?.configuration_array ?? [];\n const isSSOMultitenants = sanityOrganizationConfigurations.length > 0;\n\n // Event\n const setCustomTheme = useCallback(() => {\n if (!sanityOrganizationWhiteLabel) return;\n const organizationColorPalette =\n sanityOrganizationWhiteLabel.color_palette_config.color_palette ?? {};\n const organizationColors = Object.entries(organizationColorPalette).reduce(\n (acc, [key, value]) => ({\n ...acc,\n [key]: {\n main: value.hex,\n transparent: `rgba(${value.rgb.r}, ${value.rgb.g}, ${value.rgb.b}, 0.1)`,\n },\n }),\n {},\n );\n const customTheme = createTheme({\n ...theme,\n palette: {\n ...theme.palette,\n ...organizationColors,\n },\n });\n setTheme(customTheme);\n return customTheme;\n }, [setTheme, theme, sanityOrganizationWhiteLabel]);\n\n useEffect(() => {\n bootIntercom({\n customAttributes: {\n organizationSlug,\n appVersion: REACT_APP_VERSION,\n },\n });\n });\n\n useEffect(() => {\n if (isLoadingOrganization) {\n dispatch(startAppLoading(true));\n setLoading(true);\n }\n if (loading && organization) {\n setCustomTheme();\n }\n if (!isLoadingOrganization && !organization) {\n navigate('/configure');\n dispatch(stopAppLoading(true));\n dispatch(\n showAppAlert({\n severity: 'error',\n message: 'Organization not found',\n timeout: 10000,\n }),\n );\n }\n if (organization) {\n dispatch(stopAppLoading(true));\n setLoading(false);\n }\n }, [\n dispatch,\n isLoadingOrganization,\n loading,\n navigate,\n organization,\n setCustomTheme,\n ]);\n\n useEffect(() => {\n const handleUpdateRegistrationType = (key: RegistrationTypes) => {\n dispatch(updateRegistrationType(key));\n };\n\n if (loading) return;\n if (isLocalAccountRegistration && isSSOMultitenants) {\n handleUpdateRegistrationType('localAccountsAndSSO');\n return;\n }\n if (isLocalAccountRegistration) {\n handleUpdateRegistrationType('localAccounts');\n return;\n }\n if (isSSOMultitenants) {\n handleUpdateRegistrationType('multitenantsSSO');\n return;\n }\n handleUpdateRegistrationType('none');\n }, [dispatch, isLocalAccountRegistration, isSSOMultitenants, loading]);\n\n useEffect(() => {\n if (loading) return;\n\n if (window.location.hostname === 'guider.app') {\n window.location.replace('https://guider-ai.com/');\n }\n }, [loading]);\n\n if (loading && !localeCode) return ;\n\n return children;\n};\n"],"names":["RelationshipGoalsCreate","relationship","handleClose","timezone","navigate","isLoadingGoals","reqGoals","isMutatingGoals","revalidateGoals","reqRelationships","isMutatingRelationships","relationshipsRevalidate","useRelationships","organizationSlug","getSubDomain","localeCode","baseLanguage","useBaseLanguage","handleSubmit","control","formState","errors","isValid","mode","typedControl","onSubmit","data","_a","_b","_c","endDate","newEndDate","toDate","endDateUTC","zonedTimeToUtc","Object","assign","status","programSlugs","programSlug","goalsResponseData","method","url","currentGoalIds","goals","map","goal","id","newGoalIds","contentModalActions","label","relationships","create_and_update_goal","create_goal","discard_button_label","variant","color","action","dataCyLabel","globals","create_goal_button_label","isLoadingButton","disabled","title","actions","isLoading","GoalsCreateForm","discardAction","hideButtons","RelationshipGoalsEdit","isDiscardModalOpen","setIsDiscardModalOpen","useState","discardChangesButtonLabel","common","discard_changes_button_label","goalId","isDirty","find","createdAt","navigateBack","handleDiscardModalClose","go_back_button_label","delete_button_label","save_changes_button_label","discardModalActions","cancel_button_label","update_goal","GoalsEditForm","open","discard_goal_modal","description","RelationshipGoalsManage","organization","useOrganization","theme","useTheme","isLoadingRelationships","getProgram","useOrganizationPrograms","program","customGoalCategories","registration","custom_goal_categories","customCategory","goal_category_name","slug","goal_category_slug","current","icon","goal_category_icon","name","organizationGoalCategories","goal_categories","categories","goalCategory","goalCategories","concat","relationshipGoals","modalActions","close_button_label","manage_goals_modal","subtitle","childrenSx","borderBottom","palette","divider","overflowY","p","closeIconButtonDataCy","Box","sx","width","display","flexDirection","justifyContent","alignItems","pb","Button","startIcon","MdAdd","onClick","fontWeight","length","Typography","_f","_e","_d","relationship_goals_divider_text","categorySlug","mb","viewPath","goalName","goalSlug","goalIcon","createPath","RelationshipGoalsView","isGuide","closeButtonLabel","guideModalActions","view_goal_modal","px","py","GoalsDetails","RelationshipGoals","isGoalsModalOpen","setIsGoalsModalOpen","settings","useSettings","options","keepPreviousData","timeZone","at","organizationTheme","combinedPalette","archived","isConcluded","value","ThemeProvider","size","align","heading","component","text","sidebar","subtitles","no_goals_shared_label","mt","gap","objective","SanityIcon","height","span","fontSize","textAlign","lineHeight","pl","fullWidth","handleGoalClick","replace","manage_goals_button_label","Divider","isOpen","RelationshipGroupAlert","hasScheduledAtLeastOneSession","sessions","isArchivedRelationship","isLoadingMemberships","membershipsRevalidate","isMutatingMemberships","useMemberships","group","boxColor","buttons","isActiveGroup","activatedAt","noTraineesHaveJoined","traineeProfiles","allTraineesHaveLeft","guideGroupCopy","program_details","program_type","program_type_text","variations","guide","traineeGroupCopy","trainee","guideAlertCopy","group_activated","group_activation_pending","traineeAlertCopy","trainees_left_group","alert_title","alert_description","error","transparent","ErrorOutline","republish_group_button_label","key","loading","success","warning","info","AlertIcon","start_group_button_label","Date","pt","backgroundColor","borderRadius","ml","secondary","direction","spacing","insufficient_members_message","CheckCircleOutline","ReportProblemOutlined","InfoOutlined","RelationshipItem","relationshipId","isUnreadMessages","isGroupProgram","programVariationTypeSlug","EProgramVariation","groupMentor","useMemo","profile","guideProfiles","user","users","userId","profiles","useProfiles","profileId","isActive","Boolean","recipients","role","guidesCount","traineesCount","otherPartyProfile","getProfileImage","useProfileImage","primary","textTransform","my","dark","cursor","Badge","mr","border","badgeContent","anchorOrigin","vertical","horizontal","Avatar","src","profilePicture","picture","userPicture","textOverflow","overflow","noWrap","displayName","RelationshipNotesEmpty","notes_modal_empty_title","notes","notes_modal","notes_modal_empty_state","notes_modal_empty_description","notes_modal_empty_create_button_label","Page","MdNoteAdd","iconColor","main","containerStylings","minHeight","margin","breakpoints","down","RelationshipNotesList","isExpanded","handleExpand","noteId","setOnConfirmDiscardNoteChanges","setIsDiscardNoteChangesModalOpen","useContext","reset","isMobile","notesCount","notesCountDescription","notes_sidebar","notes_sidebar_single_note_label","notes_sidebar_multiple_notes_label","navigateToNoteCreate","handleClick","callback","isDocumentDirectionRtl","text_direction","paddingLeft","xs","md","paddingRight","IconButton","alignSelf","KeyboardDoubleArrowRight","KeyboardDoubleArrowLeft","flexGrow","note","ButtonBase","navigateToNote","pr","whiteSpace","isPrivate","People","opacity","Edit","mx","marginLeft","marginRight","notes_sidebar_new_note_button_label","RelationshipNote","isDeleteModalOpen","setIsDeleteModalOpen","location","isCreate","pathname","endsWith","useUsers","isLoadingNotes","reqNotes","isMutatingNotes","params","currentNote","isNoteOwner","ownerId","cancelButtonLabel","isPublic","rest","onSuccess","response","notesCreateResponseData","console","onError","err","populateCache","result","currentData","newNotes","oldNotes","replaceDuplicateNotes","newNote","handleDeleteModalClose","createActions","notes_modal_create_edit_note","save_note_button_label","patchActions","deleteModalActions","removedIds","filterRemoved","filter","includes","ownersProfile","guideProfile","lastUpdatedByProfile","lastUpdatedBy","currentNoteUpdateAt","updatedAt","format","currentNoteCreatedAt","lastUpdatedByString","note_status","note_status_last_updated_by_label","firstName","lastName","note_status_last_updated_on_label","createdByString","note_status_created_by_label","note_status_created_on_label","NotesCreateForm","createdBy","ActionButton","buttonAction","delete_note_modal","discard_changes_title","discard_changes_description","RelationshipNotes","isNotesModalOpen","setIsNotesModalOpen","useEffect","note_sidebar","note_sidebar_title","note_sidebar_description","transition","note_sidebar_input_label","LoadingButton","note_sidebar_view_button_label","RelationshipSessionsCreate","setIsLoading","sessionsBaseLanguage","trackScreenTime","dispatch","setValue","reqSessions","isLoadingSessions","isMutatingSessions","currentSessions","Started","getISOStringWithoutMilliseconds","programName","metadata","program_name","date","startTime","endTime","videoConferencing","startHours","startMinutes","split","newStart","setHours","parseInt","endHours","endMinutes","newEnd","startUTC","endUTC","participantProfiles","start","end","hasVideoConferencing","ownerProfile","severity","message","new_session_modal","error_alert_text","timeout","getVideoConferencingProvider","Location","trackSessionCreateFormSubmit","reengagedAt","Promise","all","success_alert_text","send_calendar_invite_button_label","SessionsCreateForm","defaultTitle","getSessionTitle","RelationshipSessionsEdit","trigger","trackMixpanelEvent","sessionId","session","startUtc","endUtc","isSessionOwner","pastSession","edit_session_modal","update_calendar_invite_button_label","isArchived","confirm_session_deletion_modal","PastSessionEditForm","SessionsEditForm","RelationshipSessionHistory","declinedStyles","borderColor","light","textDecoration","tentativeStyles","borderStyle","isSessionsModalOpen","setIsSessionsModalOpen","parsedSessions","sort","sessionA","sessionB","forEach","push","sessionCount","locale","getLanguageFromCMS","language_code","formattedTime","getTimeFormat","time_format","formattedDate","getFriendlyDateFormat","date_format","canLogSession","handleLogSession","renderSessions","sessionsToRender","index","sessionDate","formatInTimeZone","sessionsLocation","session_history","modal","logged_past_session_label","isDeclined","declinedEmails","isTentative","tentativeEmails","handleSessionClick","Icon","History","boxProps","padding","alignContent","ModalCard","iconVariant","empty_state","_h","_g","_i","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","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","reqAvailabilities","now","canSeeNewSessionButton","canSeeSessions","filteredSessions","sessionEndDate","FormattedTime","FormattedDate","isOnCreateSessionPage","_j","sessionsCount","multiple_sessions_scheduled_label","single_session_scheduled_label","no_sessions_scheduled_label","renderSessionsCount","maxWidth","formattedStart","formattedEnd","marginTop","marginBottom","schedule_session","RelationshipViewProfileModal","closeButtonAction","userRole","profileData","membershipData","connectAction","Modal","onClose","RelationshipViewProfile","selectedUserId","setSelectedUserId","modalTitle","view_profile_modal","modalCloseButtonLabel","programs","includeUnlistedPrograms","programTypeText","otherUsers","handleModalClose","otherUser","handleModalOpen","individual","view_profile_button_label","selectedProfile","selectedProfileUserId","selectedUser","pictures","getSelectedUsersProfileData","selectedMembership","guideMemberships","traineeMemberships","membership","skillFieldSlugs","skills","skill","fieldSlug","getSelectedUsersMembershipData","RelationshipsArchivedList","expanded","setExpanded","relationships_list","archived_section_label","relationshipIds","accordionSummaryProps","expandIcon","ArrowDropDown","m","Accordion","elevation","event","AccordionSummary","letterSpacing","AccordionDetails","userSelect","RelationshipsEmpty","Person","active","no_relationships","RelationshipsList","Skeleton","transform","RelationshipHeader","relationshipCreatedAt","roleLabel","isSidebarOpen","setIsSidebarOpen","groupMembersModalOpen","setGroupMembersModalOpen","selectedProfileId","setSelectedProfileId","isGroup","programTypeGuideNoun","noun","handleGroupMembersModalClose","ownRole","handleProfileModalClose","handleProfileModalOpen","getSelectedRelationshipRole","avatars","traineeProfile","renderContent","flex","dashboard","program_memberships","with_program_memberships","membership_details","creation_date","relationships_header","since","parseISO","toString","Paper","square","borderTop","position","zIndex","ArrowBackIosNew","Stack","RelationshipActions","rounded","Close","contrastText","MenuOpen","avatarSrcArray","avatarHeight","avatarWidth","textSize","getSelectedProfileData","groupSkills","getSelectedProfileMembershipData","guideId","existingRelationship","some","programTypeSlug","resultIds","filterOutNewRelationships","isModalOpen","guideUser","background","default","Chip","traineeUser","ScrollToTop","window","scrollTo","SessionsDetails","trackSessionJoinButtonClick","useCallback","acceptedEmails","sortedAttendeeResponses","userEmail","email","hasAccepted","hasDeclined","responseA","responseB","when_label","where_label","VideoCameraFront","protocol","host","join_with_guider_video_button_label","href","videoConferencingUrl","target","join_with_ms_teams_button_label","renderJoinSessionButton","attendees_label","image","CheckCircle","Help","Cancel","SettingsContainer","children","header","SettingsContainerHeader","SettingsDescription","SettingsSubheader","subheader","version","REACT_APP_VERSION","SetupWrapper","setTheme","setLoading","boot","bootIntercom","isLoadingOrganization","sanityOrganizationAccess","access","sanityOrganizationWhiteLabel","white_label","isLocalAccountRegistration","local_account_registration","isSSOMultitenants","configuration_array","setCustomTheme","organizationColorPalette","color_palette_config","color_palette","organizationColors","reduce","acc","hex","rgb","r","g","b","customTheme","customAttributes","appVersion","handleUpdateRegistrationType","hostname"],"sourceRoot":""}